docker添加新的环境变量_docker使用教程[三]Dockfile小试牛刀
![](/assets/blank.gif)
本来计划着今天要讲关于docker数据卷部分的知识和配置操作相关的,但是今天复习docker知识的时候恰好看到了Dockfile的知识,所以今天帮大家了解一下关于如何私人定制自己的docker镜像。
比如我们前面的文章讲到了我们需要关于oracle的镜像,但是假如我们需要的ubuntu+mysql的镜像呢?而且万能的阿里爸爸又没有相关的免费镜像提供(这个大家无需担心,只是为了讲解需要而已)
所以今天要引入一下关于Dockfile的知识,我将会在这篇文章中带大家定制一个关于Go开发环境的镜像,借此帮大家了解Dockfile的编写。
第一步,先帮大家解析一下如何打造一个docker的go开发环境
步骤①:安装一个操作系统,这里我们选择直接pull一个ubuntu的镜像
![](/assets/blank.gif)
创建容器:(这里由于演示仓促没有添加--name选项,大家一定要加)
#基于镜像ubuntu创建golang容器
docker run -it ubuntu --name goland bash
![](/assets/blank.gif)
步骤②:升级更新系统
#使用命令升级系统
apt-get update
![](/assets/blank.gif)
步骤③:安装golang
#使用命令安装golang
apt-get -y install golang
![](/assets/blank.gif)
步骤④:设置环境变量
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
![](/assets/blank.gif)
至此我们的go开发环境已经构建成功了,当然我们通过docker commit以当前的容器为基准创建一个新的镜像
#通过容器id创建镜像
docker commit <container_id> <image_name>
commit成功后
![](/assets/blank.gif)
查看本机镜像
![](/assets/blank.gif)
至此,我们的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的文件夹
![](/assets/blank.gif)
然后将我们的dockerfile保存到这个文件夹里并命名为Dockerfile
![](/assets/blank.gif)
打开终端,切到该目录执行
#通过dockerfile构建镜像
#-t :tag 指我们的镜像名称
#. :指当前目录
docker build -t test:v1 .
执行后
![](/assets/blank.gif)
可以发现正在按写的dockerfile一步一步的构建镜像
当然这个时间是非常长的,基于我这边的网速问题,这里就不贴出执行结果了。
这里就跟大家解释一下我们所用到的几个Dockerfile关键字
FROM 指定基础镜像,我们这里采用的是ubuntu
MAINTAINER 添加维护者信息,就是镜像作者名字
ENV 环境变量,这里添加了关于go的变量
RUN 要执行的命令,我们这里进行了系统更新和golang的安装
CMD 可以理解为开机启动项,创建容器后执行
更多有关dockerfile关键字的内容大家可以移步
Dockerfile关键字blog.csdn.net
剩下的关键字等我们用到的时候在跟大家详细解析,今天的有关内容到这里
明天我会跟大家写一篇关于如何通过Dockerfile搭建httpd服务的文章,使大家对Dockerfile有进一步的认识,大家有什么问题可以在评论区进行讨论,或者说文章有何不足也欢迎大家指出!!!
往期内容:
docker使用教程[一]
docker使用教程[二]oracle的安装使用
docker添加新的环境变量_docker使用教程[三]Dockfile小试牛刀相关推荐
- docker添加新的环境变量_Docker容器环境变量设置与查看
设置环境变量 在编写Dockerfile时, 我们可以通过ENV来为Docker容器设置相关的环境变量,设置的环境变量在Docker容器中可以通过环境变量来进行引用. Docker容器环境变量设置方法 ...
- docker添加新的环境变量_Docker环境变量
环境变量 环境变量通常在与您正在使用的基本映像关联的Dockerfile中设置.也有Docker为每个新容器自动设置的环境变量.您可以指定其他变量,并使用-e或--env选项重新定义Docker设置的 ...
- docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!
本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...
- KG—Linux添加新的环境变量以及对PATH环境变量的修改
KG的意思就是个"扩展"~~ 今天看了看Linux对环境变量的操作,感觉还是挺重要的,对于一些想偷懒的来说,那就是再好不过了~~ 所以呢,对于我,那就是更好不过了~~ 我这里只是说 ...
- linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效
博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6 文章- 2 评论- 2 < ...
- 在Windows中将目录添加到PATH环境变量
本文翻译自:Adding directory to PATH Environment Variable in Windows I am trying to add C:\\xampp\\php to ...
- Linux 执行文件 path,linux可执行文件添加到PATH环境变量的方法
linux命令行下面执行某个命令的时候,首先保证该命令是否存在,若存在,但输入命令的时候若仍提示:command not found 这个时候就的查看PATH环境变量的设置了,当前命令是否存在于PAT ...
- 在docker镜像中加入环境变量
原文链接 前言 reference:https://vsupalov.com/docker-build-time-env-values/ 很多时候,我们需要在docker镜像中加入环境变量,本人了解的 ...
- linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...
文章目录 问题 知识点 问题分析及解决 补充 问题 在使用linux桌面环境(通常是ubuntu/debian/deepin等版本的linux)的时候,新增环境变量后,会使用source /etc/p ...
最新文章
- php 后台进程,php是否适合做后台长驻程序
- javascript 卸载事件(onunload)
- open source的最大好处是什么?
- NgRx store.dispatch方法的单步调试
- 朴素Bayse新闻分类实践
- php全站文章搜索,Discuz X3.1全站文章全文检索的实现方法
- contenteditable获得焦点后的边框设置
- ubuntu之录屏软件kazam的安装
- leetcode刷题日记-供暖器
- 解决全部网页木马的技巧
- 【调剂】中国舰船研究院本部(北京)2023年硕士研究生调剂招生简章
- (九) 正则表达式——文本处理(用s///替换、split与join函数、列表上下文中的m//、非贪婪量词、文件更新等)
- 机电信息杂志社《机电信息》杂志社机电信息杂志社2022年第24期目录
- 美国贝勒大学计算机科学专业怎么样,贝勒大学专业排名一览(含历年专业排名信息,USNEWS美国大学排名版)...
- 团队组成五个基本要素_团队建设的五个要素是什么?
- 正则表达式基本语法总结
- 在CMD中输入adb命令,提示“‘adb‘ 不是内部或外部命令,也不是可运行程序或批处理文件”的解决方法
- ARP欺骗之——原理分析
- 命名空间又称名字空间,英文名:Namespace
- 基于stm32+LM2904+esp8266的噪声预警系统(续集)
热门文章
- CCF201503-5 最小花费(30分)
- Spark 调优 ——cache(persist)与 checkpoint
- 同义反复,相似的表达
- Python Flask Web 第十一课 —— 使用 Flask-SQLAlchemy 管理数据库
- 深度学习实践指南(五)—— 求解异或问题
- 辨异 —— 单词(同义词)的辨异
- C++基础::文件流
- python软件下载安装-【Python下载】Python安装 v3.8.1 官方版-七喜软件园
- python简单爬虫代码-使用Python3.5写简单网络爬虫
- python经典程序实例-Python3经典100例(①)