您的位置 首页 技术

docker如何自定义镜像

docker如何自定义镜像? 1、要实现利用docker技术,首先要先安装docker包 本次用的是docker-engine-1.12.1-1.el7.centos.x86_64…

docker如何自定义镜像?

1、要实现利用docker技术,首先要先安装docker包

本次用的是docker-engine-1.12.1-1.el7.centos.x86_64.rpm;docker技术是基于本机的底层系统,在系统之上,封装打包并交付应用程序。它可以让容器启动起来像一个进程一样快捷。基于docker技术,可以把需要的最小化各种系统环境当成一个镜像封装上,像启动一个进程一样启动起来。

2、制作自定义docker镜像先在docker官网上下载一个docker的镜像

docker search dockerdocker pull docker

官网上的镜像都是最下化安装,所以要先配置一个yum源,且在centos镜像中安装上平时用的软件,及启动httpd和sshd,具体操作如下:

yum -y install docker-engine-1.12.1-1.el7.centos.x86_64.rpmmkdir testcd testtouch Dockerfilevim DockerfileFROM centos:latestRUN rm -f /etc/yum.repos.d/*ADD centos7.repo /etc/yum.repos.d/centos7.repoRUN yum -y install httpd openssh-server net-tools bash-completion.noarch \ iproute vim-enhancedEXPOSE 80 22RUN  echo "123456" |passwd --stdin rootRUN  /usr/sbin/sshd-keygenENV EnvironmentFile=/etc/sysconfig/sshdWORKDIR /var/www/htmlRUN echo "<h1><font color=red>this is centos1:httpd">index.htmlENV EnvironmentFile=/etc/sysconfig/httpdADD qd.sh /root/qd.sh    CMD ["/root/qd.sh"]:wq

注释:EXPOSE是指定开放容器的哪些端口;ADD是把当前的目录下的文件传到容器中指定目录下;必须是当前路径RUN是指在容器中执行哪些命令;FROM是指定源镜像,即这个镜像是基于哪个镜像来做的。WORKDIR是指定容器中的工作目录,相当于centos系统中的cd命令ENV是定义环境变量CMD指定容器启动来了之后执行的第一条命令为什么,需要用[]和引号分隔,如果有选项,则中间用逗号分隔,例如:["/usr/sbin/sshd","-D"]创建的文件必须叫Dockerfile如果感觉手动书写这些命令比较复杂,可以进入基本镜像中去执行各种命令,然后用history把命令查看出来,cp命令出来,用上面的相应的格式替换出来就可以了。

3、编写启动脚本由于docker镜像的CMD是定义启动容器后执行的第一条默认命令,所以CMD中只能写一条命令,而在这个案例中,我们要启动两个程序sshd和httpd,所以需要写一个脚本,让CMD直接执行脚本即可。

vim qd.sh#!/bin/bash/usr/sbin/sshd -D &/usr/sbin/httpd -DFOREGROUND:wq

chmod +x qd.sh //加执行权限4、创建镜像需在当前目录下执行

docker build -t wang:sh2 .

5、启动镜像,并且把容器的端口映射出来

docker run -d -p 80:80 -p 2022:22 wang:sh2

把容器的80端口映射到物理机的80端口,把容器的22端口映射到物理机的2022端口。6、访问验证

firefox http://192.168.1.194(物理机)ssh -p 2022 192.168.1.194

7、扩展也可以先做一个当一的sshd服务的镜像出来,再基于sshd这个镜像来做httpd的容器:

im DockerfileFROM wang:sshdRUN yum -y  httpdEXPOSE 80 22ENV EnvironmentFile=/etc/sysconfig/httpdWORKDIR /var/www/htmlRUN echo "<h1><font color=red>this is httpd and sshd">index.htmlADD qd.sh /root/qd.sh    CMD ["/root/qd.sh"] :wq

相关参考:docker教程

以上就是docker如何自定义镜像的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/70806.html

为您推荐

返回顶部