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

注意:

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

正文:

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

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

(补充:这里以显示到的容器 ID 是 d5cd7496a72c)

1.4 将刚刚创建的容器转换成新镜像

# docker commit d5cd7496a72c newos:v1 

(补充:这里以通过 d5cd7496a72c 生成 v1 版本的 newos 为例)

1.5 测试刚刚创建的新镜像是否可用

# docker run -it newos

(补充:这里以运行 newos 镜像为例)

步骤二:基于现有的镜像使用配置文件修改后在创建

2.1 创建使用镜像配置文件的目录

# mkdir -p ~/newhttpd

(补充:这里以创建 newhttpd 目录为例)

2.3 将 YUM 的从库文件放到镜像配置文件的目录

# cp /etc/yum.repos.d/local.repo ~/newhttpd

(补充:这里以将在次环境里可用的 yum 配置文件 /etc/yum.repos.d/local.repo 拷贝到 ~/newhttpd/ 为例)

2.3 创建镜像配置文件

# touch ~/newhttpd/Dockerfile

(补充:这里以创建 ~/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 要从哪 1 个镜像克隆而来,这里以从 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

(补充:这里以通过 ~/newhttpd 里的配置信息生成为名 newos 版本为 httpd 的容器为例)

2.6 测试刚刚创建的新镜像是否可用

# docker run -d newos:http

(补充:这里以测试名为 newos 版本为 httpd 的容器为例)