docker如何制作镜像,docker如何制作自己的镜像
写在前面镜像和容器的区别是什么,镜像是一个静态文件;容器,动态过程,有生命周期
制作自己的Docker形象一般有两种方法。第一种方式是commit,使用已有的镜像,运行后安装定制你需要的环境,然后生成镜像;另一种是build方法,通过编写Dockerfile命令脚本来生成映像。
使用非根用户操作DOCKER docker默认使用根操作。
创建docker组:sudo groupadd docker将当前用户添加到docker组:sudo gpasswd-a $ { USRE } Docker Restart Docker服务:sudo service docker restart或sudo systemctl restart docker(取决于平台)。当前用户注销系统,登录提交模式基本映像以运行生成容器,在容器中安装工具,并提交映像。
检查现有图像和容器#检查图像docker图像#检查容器docker ps -a
运行交互centos镜像docker-it centos/聪明的小蘑菇/bash后,我们发现官方centos镜像中没有vim工具。在这里,我们选择将vim工具添加到centos映像中,并最终生成我们自己的自定义映像。
安装vim工具yum安装vim
检查集装箱并生成图像
退出并停止容器
查看容器
号出口档案编号ps -a
生成镜像
docker commit ee 10 ca 5 fcfe 2 centos-vim
自定义镜像和原始镜像之间的关系。
Build ——Dockerfile是一个比较推荐的创建镜像的方式,可以让用户更清楚的看到制作这个镜像的细节,逻辑清晰,易于管理。
创建存放Dockerfile的目录,后续操作将在该目录下进行。mkcentos-vim CD centos-vim Write docker file #文件名不可变vim Dockerfile from centos: 7运行yum install-y vim build构建映像docker build -t centos-vim。# -t表示将图像命名为centos-vim,表示当前目录下的Dockerfile文件。
注意:依据Dockerfile内容,这一命令将分多步骤执行,每一步骤会生成一个中间镜像,作为下一步骤的基础。在镜像创建后,中间镜像会销毁
查看编译生成的镜像。
过程分辨率**docker图像是只读的。为什么这里可以根据centos图像定制?**
我们来看看docker的编译过程。
编译的第一步(黄色边框)将重用之前存在的centos:7。
重点是第二步
882832c2b8eb实际上是基于centos:7图像生成的临时容器的id。
我们忽略vim的安装过程,跳到最后。
最后根据临时生成的容器生成从010到59000的图像文件,最后删除临时容器(见博客开头的插图)。
排除并解决构建镜像过程中产生错误,错误将生成名为none的镜像。修改Dockerfile后,您可以继续构建和生成,然后删除none中间镜像。
大概是这样的:
None 1C4AC682F895 5Weeks前915mb Docker文件简介:FROM python2:v0.1from的意思是从那个基本镜像构建镜像。基础映像来自仓库python2,版本v0.1from必须是dockerfile的第一行。如果本地仓库中没有相关的图像,则默认从远程仓库中获取。如果没有执行版本号,则默认使用最新的基础映像。维护者YouShow镜像维护者个人信息运行pip安装Flask运行pip安装Githttp://用户名:password @ gitlab.maixunbytes.com/zhangxiaopeng/pipelines . git运行Pip安装git http://用户名:password @ git lab . maixunbytes . com/张晓鹏/Mxspider.git运行Pip安装git3358用户名:password @ gitlab.maixunbytes.com/zhangsheng/dateformatting.git安装项目所需的依赖项。如果从git仓库安装,要使用git帐号和密码workdir/src/spiders/app _ zxp _ week _ 2/在容器启动后,切换到指定目录作为工作目录副本。/spiders /src/spiders从源系统复制到容器系统。将当前目录中的spiders文件夹复制到容器系统的src文件夹中。将映像中构建的文件放在Dockefile文件目录或子目录中。添加和复制使用类似于用户丁勇的容器来执行操作。用哪个账号入口点bashbbs _ funcs.shrun _ spider siku入口点来解释使用docker run启动容器时要执行的命令。CMDCMD用于指示映像要运行的默认命令以及要传递给它的选项。如果没有指定ENTRYPOINT,默认情况下,当容器启动时,将运行由CMD值指定的命令。如果有ENTRYPOINT,ENTRYPOINT是要运行的命令,CMD的值作为ENTRYPOINT的选项。CMD命令会被docker RUN - it name /command中的command命令覆盖,而ENTRYPOINT不会CMD ["cat ","/etc/hosts ","/etc/OS-release"]注意:RUN命令设置的命令只会在构建映像时使用,执行docker RUN时会使用CMD和ENTRYPOINT。ENV DB_USER=root设置环境变量注意:编写Dockerfile时,根据要求填写即可,不需要填写所有命令。删除镜像和容器RM删除一个或多个容器RMI删除一个或多个映像Docker RMI image-ID #如果删除失败,说明需要先删除容器的内容,更新镜像提交更新,构建更新。