六、Docker镜像保存为文件与从文件导入镜像

制作好镜像后,有时需要将镜像复制到另一台服务器使用,那么有两种方式:
一种是上传镜像到仓库中(本地仓库或远程公共仓库)
一种是将镜像保存为文件然后传到其他服务器上,再从文件中载入镜像;
可以使用Docker save和Docker load命令来存储和载入镜像。

第一种方式:私有仓库搭建

可配置加速器加速下载
/etc/docker/daemon.json
{
“registry-mirrors”: [“https://registry.docker-cn.com”]
}

下载registry镜像:
docker pull registry
docker pull docker.io/registry

这两个一样
启动镜像:
docker run -d -p 5000:5000 registry
在这里插入图片描述
然后可以通过restful接口查看仓库中的镜像(当前仓库是空的)
http://114.116.213.93:5000/v2/_catalog
私服仓库推送镜像
docker tag [imageId] 114.116.213.93:5000/cat/redis:latest
比如:
1、docker tag 6408fdc94212 127.0.0.1:5000/cat/tomcat:latest
2、docker push 127.0.0.1:5000/cat/tomcat:latest
[root@server docker]# docker tag 6408fdc94212 127.0.0.1:5000/cat/tomcat:latest
[root@server docker]#
[root@server docker]# docker push 127.0.0.1:5000/cat/tomcat:latest
The push refers to a repository [127.0.0.1:5000/cat/tomcat]
cd5b7e2631fa: Pushed
9f99f85da76a: Pushed
2c17ac16afc6: Pushed
2ee490fbc316: Pushed
b18043518924: Pushed
9a11244a7e74: Pushed
5f3a5adb8e97: Pushed
73bfa217d66f: Pushed
91ecdd7165d3: Pushed
e4b20fcc48f4: Pushed
latest: digest: sha256:8e75a9065fd732f2d06fccba994b246d77360b6e9870ac02b60b5b7d1fc6007d size: 2422
[root@server docker]

#查询镜像:
http://114.116.213.93:5000/v2/_catalog
查询刚才上传的镜像的版本
http://114.116.213.93:5000/v2/cat/tomcat/tags/list

启动容器的时候,也可以通过 --name指定容器的名字
docker run -d --name mytomcat -p 8080:8080 my_tomcat

第二种方式:保存镜像为文件

如果要将镜像保存为本地文件,使用docker save命令;
docker save -o 要保存的文件名 要保存的镜像
查看已有镜像:docker images
保存镜像为文件: docker save -o redis.tar.gz docker.io/redis
完成后通过 ls 命令查看保存的文件在当前目录下;
把保存的此文件上传到另一台服务器上;
从文件载入镜像
从压缩文件载入镜像使用docker load命令;
docker load --input 文件
或者
docker load < 文件名
导入后可以使用docker images命令查看;

Docker自定义镜像

Dockerfile文件
Dockerfile用于构建Docker镜像,Dockerfile文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像;
Dockerfile的基本结构
一般的,Dockerfile分为四部分:
基础镜像信息;
维护者/作者信息;(可选部分)
镜像操作指令;
容器启动时执行指令;
比如下面就是一个Dockefile文件样例:
FROM centos:latest
MAINTAINER docker_user
ENV JAVA_HOME /usr/local/java
ADD apache-tomcat-8.0.32.tar.gz /usr/local/
RUN mv apache-tomcat-8.0.32 tomcat8
EXPOSE 8080
RUN chmod u+x /usr/local/tomcat8/bin/*.sh
CMD /usr/local/tomcat8/bin/catalina.sh start

Dockerfile指令
FROM
格式为 FROM 或 FROM :
Dockerfile文件的第一条指令必须为 FROM 指令,表示从哪个基础镜像开始构建;
MAINTAINER
格式为 MAINTAINER ,可选的,指定维护者/作者信息;
ENV
格式为 ENV ,指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;
ADD
格式为ADD ;
复制指定的宿主机上的到容器中的(能够进行自动解压压缩包);
EXPOSE
格式为 EXPOSE […]
告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容器时需要通过 -p映射端口,Docker 宿主机会自动分配一个端口转发到指定的端口;
RUN
格式为 RUN
RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行,如果需要将两条命令或者多条命令联合起来执行需要加上&&;
如:cd /usr/local/src && wget xxxxxxx;
CMD
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令,如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
WORKDIR:
用来指定当前工作目录(或者称为当前目录)
USER:
运行RUN指令的用户
VOLUME:
用来创建一个在image之外的mount point
自定义JDK镜像

FROM centos:latest
MAINTAINER cat
ADD jdk-8u191-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_191
ENV CLASSPATH J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV PATH P A T H : PATH: PATH:JAVA_HOME/bin
CMD java -version

构建镜像:docker build -t my_jdk1.8.0_191 .
运行镜像:docker run -d ac84bde53958 (镜像id)

自定义Tomcat镜像
定义Dockerfile文件:
FROM my_jdk1.8.0_191
MAINTAINER cat
ADD apache-tomcat-9.0.29.tar.gz /usr/local/
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.29
ENV PATH P A T H : PATH: PATH:CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.29/bin/catalina.sh run

构建镜像:docker build -t my-tomcat-9.0.29 .
运行镜像:docker run -d -p 8080:8080 7db5d55cd5c4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值