本来计划着今天要讲关于docker数据卷部分的知识和配置操作相关的,但是今天复习docker知识的时候恰好看到了Dockfile的知识,所以今天帮大家了解一下关于如何私人定制自己的docker镜像。

比如我们前面的文章讲到了我们需要关于oracle的镜像,但是假如我们需要的ubuntu+mysql的镜像呢?而且万能的阿里爸爸又没有相关的免费镜像提供(这个大家无需担心,只是为了讲解需要而已)

所以今天要引入一下关于Dockfile的知识,我将会在这篇文章中带大家定制一个关于Go开发环境的镜像,借此帮大家了解Dockfile的编写。

第一步,先帮大家解析一下如何打造一个docker的go开发环境

步骤①:安装一个操作系统,这里我们选择直接pull一个ubuntu的镜像

创建容器:(这里由于演示仓促没有添加--name选项,大家一定要加)

#基于镜像ubuntu创建golang容器
docker run -it ubuntu --name goland bash

步骤②:升级更新系统

#使用命令升级系统
apt-get update

步骤③:安装golang

#使用命令安装golang
apt-get -y install golang 

步骤④:设置环境变量

vim ~/.bashrc
在末尾加入
export GOPATH=/opt/go
export GOROOT=/usr/local/go
export GOARCH=386
export GOOS=linux
export GOBIN=$GOROOT/bin/
export GOTOOLS=$GOROOT/pkg/tool/
export PATH=$PATH:$GOBIN:$GOTOOLS

步骤⑤:验证是否正确安装

#打开终端执行
go env

至此我们的go开发环境已经构建成功了,当然我们通过docker commit以当前的容器为基准创建一个新的镜像

#通过容器id创建镜像
docker commit <container_id> <image_name>

commit成功后

查看本机镜像

至此,我们的go环境镜像test就已经建立了。当然大家可以通过这种办法为自己定制镜像,这里只着重讲述dockerfile,大家可以根据需求自行选择。

第二步,解析如何去写Dockfile

Dockfile是由一行行命令语句组成,并且迟滞以#开头的注释行;一般而言,Dockerfiel分为四部分:

1.基础镜像信息 ;2.维护者信息;3.镜像操作指令;4.容器启动时指令,如下为一个标准的dockfile镜像模板:

# This dockerfile uses the ubutu image
# VERSION 2 - EDITON 1
# Author docker_user
# Command format: Instruction [arguments / command ] ..# (第一部分) 基础镜像信息
FROM ubuntu# (第二部分) 维护者信息
MAINTAINER docker_user docker_user@email.com#(第三部分)镜像操作指令
RUN yum install apr-devel -y#(第四部分) 容器启动时指令
CMD /usr/sbin/echo

通过上面搭建go环境的分析,不难发现,搭建整个环境只需要这五步:

选择系统,升级系统,安装golang,加载环境变量,验证是否成功安装

所以我们可以这样根据Dockerfile模板编写我们的Dockerfile

#基础镜像
FROM ubuntu#维护者信息
MAINTAINER shedray1348296317 @qq.com #增加环境变量
ENV GOPATH /opt/go
ENV GOROOT /usr/local/go
ENV  GOARCH 386
ENV GOOS linux
ENV  GOBIN $GOROOT/bin/
ENV GOTOOLS $GOROOT/pkg/tool/
#执行命令
RUN apt-get update
&&apt-get -y install golang
#运行以下命令
CMD ['go env']

建立一个dockerfile的文件夹

然后将我们的dockerfile保存到这个文件夹里并命名为Dockerfile

打开终端,切到该目录执行

#通过dockerfile构建镜像
#-t :tag 指我们的镜像名称
#. :指当前目录
docker build -t test:v1 .

执行后

可以发现正在按写的dockerfile一步一步的构建镜像

当然这个时间是非常长的,基于我这边的网速问题,这里就不贴出执行结果了。

这里就跟大家解释一下我们所用到的几个Dockerfile关键字

FROM 指定基础镜像,我们这里采用的是ubuntu

MAINTAINER 添加维护者信息,就是镜像作者名字

ENV 环境变量,这里添加了关于go的变量

RUN 要执行的命令,我们这里进行了系统更新和golang的安装

CMD 可以理解为开机启动项,创建容器后执行

更多有关dockerfile关键字的内容大家可以移步

Dockerfile关键字​blog.csdn.net

剩下的关键字等我们用到的时候在跟大家详细解析,今天的有关内容到这里

明天我会跟大家写一篇关于如何通过Dockerfile搭建httpd服务的文章,使大家对Dockerfile有进一步的认识,大家有什么问题可以在评论区进行讨论,或者说文章有何不足也欢迎大家指出!!!

往期内容:

docker使用教程[一]

docker使用教程[二]oracle的安装使用

docker添加新的环境变量_docker使用教程[三]Dockfile小试牛刀相关推荐

  1. docker添加新的环境变量_Docker容器环境变量设置与查看

    设置环境变量 在编写Dockerfile时, 我们可以通过ENV来为Docker容器设置相关的环境变量,设置的环境变量在Docker容器中可以通过环境变量来进行引用. Docker容器环境变量设置方法 ...

  2. docker添加新的环境变量_Docker环境变量

    环境变量 环境变量通常在与您正在使用的基本映像关联的Dockerfile中设置.也有Docker为每个新容器自动设置的环境变量.您可以指定其他变量,并使用-e或--env选项重新定义Docker设置的 ...

  3. docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!

    本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...

  4. KG—Linux添加新的环境变量以及对PATH环境变量的修改

    KG的意思就是个"扩展"~~ 今天看了看Linux对环境变量的操作,感觉还是挺重要的,对于一些想偷懒的来说,那就是再好不过了~~ 所以呢,对于我,那就是更好不过了~~ 我这里只是说 ...

  5. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

  6. 在Windows中将目录添加到PATH环境变量

    本文翻译自:Adding directory to PATH Environment Variable in Windows I am trying to add C:\\xampp\\php to ...

  7. Linux 执行文件 path,linux可执行文件添加到PATH环境变量的方法

    linux命令行下面执行某个命令的时候,首先保证该命令是否存在,若存在,但输入命令的时候若仍提示:command not found 这个时候就的查看PATH环境变量的设置了,当前命令是否存在于PAT ...

  8. 在docker镜像中加入环境变量

    原文链接 前言 reference:https://vsupalov.com/docker-build-time-env-values/ 很多时候,我们需要在docker镜像中加入环境变量,本人了解的 ...

  9. linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...

    文章目录 问题 知识点 问题分析及解决 补充 问题 在使用linux桌面环境(通常是ubuntu/debian/deepin等版本的linux)的时候,新增环境变量后,会使用source /etc/p ...

最新文章

  1. php 后台进程,php是否适合做后台长驻程序
  2. javascript   卸载事件(onunload)
  3. open source的最大好处是什么?
  4. NgRx store.dispatch方法的单步调试
  5. 朴素Bayse新闻分类实践
  6. php全站文章搜索,Discuz X3.1全站文章全文检索的实现方法
  7. contenteditable获得焦点后的边框设置
  8. ubuntu之录屏软件kazam的安装
  9. leetcode刷题日记-供暖器
  10. 解决全部网页木马的技巧
  11. 【调剂】中国舰船研究院本部(北京)2023年硕士研究生调剂招生简章
  12. (九) 正则表达式——文本处理(用s///替换、split与join函数、列表上下文中的m//、非贪婪量词、文件更新等)
  13. 机电信息杂志社《机电信息》杂志社机电信息杂志社2022年第24期目录
  14. 美国贝勒大学计算机科学专业怎么样,贝勒大学专业排名一览(含历年专业排名信息,USNEWS美国大学排名版)...
  15. 团队组成五个基本要素_团队建设的五个要素是什么?
  16. 正则表达式基本语法总结
  17. 在CMD中输入adb命令,提示“‘adb‘ 不是内部或外部命令,也不是可运行程序或批处理文件”的解决方法
  18. ARP欺骗之——原理分析
  19. 命名空间又称名字空间,英文名:Namespace
  20. 基于stm32+LM2904+esp8266的噪声预警系统(续集)

热门文章

  1. CCF201503-5 最小花费(30分)
  2. Spark 调优 ——cache(persist)与 checkpoint
  3. 同义反复,相似的表达
  4. Python Flask Web 第十一课 —— 使用 Flask-SQLAlchemy 管理数据库
  5. 深度学习实践指南(五)—— 求解异或问题
  6. 辨异 —— 单词(同义词)的辨异
  7. C++基础::文件流
  8. python软件下载安装-【Python下载】Python安装 v3.8.1 官方版-七喜软件园
  9. python简单爬虫代码-使用Python3.5写简单网络爬虫
  10. python经典程序实例-Python3经典100例(①)