[步骤] Docker 自定义镜像的创建

注意:在创建 Docker 自定义镜像之前,要先安装 Docker

正文:

步骤目录:
步骤一:基于现有的镜像进行手动配置后再创建

1.1 加载并启动 Docker 镜像
1.2 对镜像里的系统进行操作并退出
1.3 查看刚刚创建的容器
1.4 将刚刚创建的容器转换成新镜像
1.5 测试刚刚创建的新镜像是否可用

步骤二:基于现有的镜像使用配置文件修改后在创建
2.1 创建使用镜像配置文件的目录
2.2 创建镜像配置文件
2.3 将 yum 的从库文件放到镜像配置文件的目录
2.4 编辑镜像配置文件
2.5 使用刚刚创建的镜像配置文件创建新的镜像
2.6 测试刚刚创建的新镜像是否可用

具体的操作步骤:
步骤一:基于现有的镜像进行手动配置后再创建
1.1 加载并启动 Docker 镜像
# docker run -it centos

(
补充:
(1)这里以加载并启动 centos 镜像为例
(2)-t 代表要开启一个伪终端
(3)-i 代表要保持打开并且可以进行标准输入
)

1.2 对镜像里的系统进行操作并退出
(步骤略)

1.3 查看刚刚创建的容器
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
d5cd7496a72c        centos              "/bin/bash"              37 seconds ago      Exited (0) 14 seconds ago                       ecstatic_bassi

1.4 将刚刚创建的容器转换成新镜像
# docker commit d5cd7496a72c newos:v1 

1.5 测试刚刚创建的新镜像是否可用
# docker run -it newos

步骤二:基于现有的镜像使用配置文件修改后在创建
2.1 创建使用镜像配置文件的目录
# mkdir ~/newhttpd

2.2 创建镜像配置文件
# touch ~/newhttpd/Dockerfile

2.3 将 yum 的从库文件放到镜像配置文件的目录
# cp /etc/yum.repos.d/local.repo ~/newhttpd/Dockerfile

2.4 编辑镜像配置文件
# vim ~/newhttpd/Dockerfile
FROM centos:latest
RUN yum -y install httpd
ENV EnvironmentFile=/etc/sysconfig/httpd
WORKDIR /var/www/html/
RUN echo "test" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

(
补充:
(1)FROM 要从哪一个镜像克隆而来,这里以从 centos:latest 克隆为例
(2)MAINTAINER 要说明的信息
(3)ENV 要设置的环境变量,这里以使用 /etc/sysconfig/httpd 作为配置文件为例
(4)WORKDIR 要设置的工作目录,这里以使用 /var/www/html/ 作为工作目录为例
(5)RUN 在生成镜像时要执行的命令,可以有多条,这里以执行 echo "test" > /var/www/html/index.html 命令为例
(6)CMD 容器启动时要执行的命令,只能有一条,这里以执行 "/usr/sbin/httpd", "-DFOREGROUND" 命令为例
(7)ADD 要复制的文件
(8)EXPOSE 要开放的端口,这里以使用 80 端口为例
)

2.5 使用刚刚创建的镜像配置文件创建新的镜像
# docker build -t newos:httpd ~/newhttpd

2.6 测试刚刚创建的新镜像是否可用
# docker run -d newos:http