目录
第一种方式(手动修改容器镜像)
1.先下载centos镜像
[root@docker ~]# docker pull centos
2.启动容器并进行安装配置
暂时安装以下必用的软件吧 net-tools,openssh-server
[root@d72250ecaa5e /]# yum install openssh-server net-tools -y
OK,配置安装完毕,之后退出容器,就可以生成一个新的docker 镜像了。
3.安装配置完成后,进行打包成新的镜像
commit: 提交一个具有新配置的容器成为镜像,后面跟容器的name 或者容器Id ,最后是生成新镜像的名字
第二种方式(推荐:利用Dockerfile文件)
Dockerfile包含创建镜像所需要的全部指令。基于在Dockerfile中的指令,我们可以使用Docker build
命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。
1.创建Dockerfile文件
[root@docker ~]# mkdir centos7-dockerfile
[root@docker centos7-dockerfile]# cat Dockerfile
# The dockerfile has Change add sshd services on Centos7.0
#centos7:latest image
FROM centos:latest
MAINTAINER Yifeng,http://www.cnblogs.com/hanyifeng
#Install sshd net-tools
RUN yum install openssh-server net-tools -y
RUN mkdir /var/run/sshd
#Set password for root
RUN echo 'root:iloveworld' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
#Set history record
ENV HISTTIMEFORMAT "%F %T "
#Fix sshd service:Read from socket failed: Connection reset by peer?
RUN ssh-keygen -A
#Change timezone CST
RUN \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#Open 22 port
EXPOSE 22
#Auto running sshd service
CMD ["/usr/sbin/sshd","-D"]
FROM: 必不可少的命令,从某个镜像作为基。如 FROM <image_name> ,或者 FROM <image_name>:<tag>. 如果不加tag,默认为latest。先从本地镜像仓库去搜索基镜像,如过本地没有,在去网上docker registry去寻找。
MAINTAINER:标明该Dockerfile作者及联系方式,可忽略不写
RUN:建立新的镜像时,可以执行在系统里的命令,如安装特定的软件以及设置环境变量。
ENV:设置系统环境变量(注意:写在/etc/profile里的命令在dockerfile这里会不生效,所以为改成ENV的方式)
EXPOSE:开放容器内的端口,但不和宿主机进行映射。方便在宿主机上进行开发测试。(如需映射到宿主机端口,可在运行容器时使用 -p host_port:container_port)
CMD:设置执行的命令,经常用于容器启动时指定的某个操作。如执行自定义脚本服务,或者是执行系统命令。CMD 只能存在一条,如在Dockerfile中有多条CMD的话,只有最后一条CMD生效!
2.执行docker build 创建镜像
3.查看镜像列表,并创建容器