当前第2页 返回上一页
2、制作自定义docker镜像
先在docker官网上下载一个docker的镜像
1 2 | docker search docker
docker pull docker
|
官网上的镜像都是最下化安装,所以要先配置一个yum源,且在centos镜像中安装上平时用的软件,及启动httpd和sshd,具体操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | yum -y install docker-engine-1.12.1-1.el7.centos.x86_64.rpm
mkdir testcd testtouch Dockerfile
vim Dockerfile
FROM centos:latest
RUN rm -f /etc/yum.repos.d/*
ADD centos7.repo /etc/yum.repos.d/centos7.repo
RUN yum -y install httpd openssh-server net-tools bash-completion.noarch \ iproute vim-enhanced
EXPOSE 80 22
RUN echo "123456" |passwd --stdin root
RUN /usr/sbin/sshd-keygen
ENV EnvironmentFile=/etc/sysconfig/sshd
WORKDIR / var /www/html
RUN echo "<h1><font color=red>this is centos1:httpd" >index.html
ENV EnvironmentFile=/etc/sysconfig/httpd
ADD 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直接执行脚本即可。
1 2 3 | vim qd.sh#!/bin/bash/usr/sbin/sshd -D &
/usr/sbin/httpd -DFOREGROUND
:wq
|
chmod +x qd.sh //加执行权限
4、创建镜像
需在当前目录下执行
1 | docker build -t wang:sh2 .
|
5、启动镜像,并且把容器的端口映射出来
1 | docker run -d -p 80:80 -p 2022:22 wang:sh2
|
把容器的80端口映射到物理机的80端口,把容器的22端口映射到物理机的2022端口。
6、访问验证
1 2 | firefox http:
ssh -p 2022 192.168.1.194
|
7、扩展
也可以先做一个当一的sshd服务的镜像出来,再基于sshd这个镜像来做httpd的容器:
1 2 3 4 5 6 7 8 9 | im Dockerfile
FROM wang:sshd
RUN yum -y httpd
EXPOSE 80 22ENV EnvironmentFile=/etc/sysconfig/httpd
WORKDIR / var /www/html
RUN echo "<h1><font color=red>this is httpd and sshd" >index.html
ADD qd.sh /root/qd.sh
CMD [ "/root/qd.sh" ]
:wq
|
相关参考:docker教程
以上就是docker如何自定义镜像的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
远程如何登录Docker
Docker服务无法正常启动怎么办
Docker容器如何开机自启
Docker如何修改容器名
怎么把Docker下的图片拷贝出来
Docker是干什么用的?
Docker端口映射到宿主机怎么操作
Docker 可以运行 linux 吗?
Docker中java显示中文乱码
如何解决Docker安装时yum命令无效
更多相关阅读请进入《Docker》频道 >>
转载请注明出处:木庄网络博客 » docker如何自定义镜像