1. 离线环境下导入镜像
(1)先从一个连网的Docker主机上拉取Docker镜像,可执行docker pull centos命令,拉取centos最新版本镜像,执行命令结果,如图3.11所示。
(2)使用docker save命令将镜像导出到归档文件中,也就是将镜像保存到本地文件中,执行命令结果
docker save --output centos.tar centos
ls -sh centos.tar
(3)将归档文件复制到离线的Docker主机上,可以使用远程连接工具进行镜像传送,如图3.13所示。
(4)使用docker load命令从归档文件中加载该镜像,执行命令结果,如图3.14所示。
docker load --input centos.tar
(5)使用docker images命令查看刚加载的镜像,执行命令结果。
2.通过commit命令创建镜像
(1)启动一个镜像,可以使用docker run命令,在容器里修改,然后将修改后的容器提交为新的镜像,需要记住该容器的ID号,使用docker ps命令,查看当前容器列表,执行命令如下。
[root@localhost ~]# docker run centos
[root@localhost ~]# docker ps -a
(2)使用docker commit命令创建一个新的镜像,以镜像centos容器ID为f16fa189240c为例,执行命令如下。
[root@localhost ~]# docker commit -m "new" -a "centos8.4" f16fa189240c centos8.4:test
(3)创建完成后,会返回新创建镜像的ID信息,查看要地镜像列表时,可以看到新创建的镜像信息,执行命令如下。
[root@localhost ~]# docker images | grep centos
[root@localhost ~]# docker images
3.利用Dockerfile创建镜像
(1)下载基础镜像。
下载一个创建SSHD镜像的基础镜像CentOS,可以使用docker pull centos命令进行拉取镜像,执行命令如下。
[root@localhost ~]# docker pull centos
(2)建立工作目录。
创建sshd目录,执行命令如下。
[root@localhost ~]# mkdir sshd
[root@localhost ~]# cd sshd
[root@localhost sshd]#
(3)创建并编写Dockerfile文件。
编写Dockerfile文件内容,执行命令如下。
[root@localhost sshd]# vim Dockerfile
#第一行必须指明基于的基础镜像
FROM centos:7.9.2009
#说明新镜像的维护人信息
MAINTAINER The centos_sshd Project <cloud@csg>
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum update -y
#镜像操作指令
RUN yum -y install openssh-server net-tools -y
#配置用户root的密码为admin123
RUN echo 'root:admin123' | chpasswd
#修改替换sshd_config文件内容
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
#指定密钥类型
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#开启22端口
EXPOSE 22
#启动容器并修改执行指令
CMD ["/usr/sbin/sshd","-D"]
[root@localhost sshd]# ll
总用量 4
-rw-r--r-- 1 root root 511 6月 5 23:10 Dockerfile
[root@localhost sshd]#
(4)利用build命令构建镜像。
使用docker build命令构建镜像,执行命令如下。
[root@localhost sshd]# docker build -t centos_sshd:latest .
(5)查看镜像是否构建成功。
使用docker images命令,查看镜像是否构建成功,执行命令如下。