docker容器在启动之后,如果需要迁移到其他的机器节点或者部署到其他的服务器中,如何直接部署为一样的容器呢?将自定义的容器保存下来如何做呢 下面的方式可以帮助到你
镜像备份
将docker镜像通过保存为文件,可以导出为文件,可以在其他的机器节点创建相同的镜像
-
将容器保存为镜像
docker commit [container_name] [image_name]
构建自定义镜像,后续可以保存为镜像文件,或者可以再次基于该自定义镜像创建新的容器
-
镜像备份
docker save -o [file_name] [image_name]
例如:
docker save -o nginx.tar mynginx
-
镜像导入
docker load -i [file_name]
例如:
docker load -i nginx.tar
Dockerfile构建镜像
根据centos7的基础镜像,自定义的jdk版本构建jdk8的镜像
- 第一步:编写
Dockerfile
文件
# 基础镜像
FROM centos:7
# 作者
MAINTAINER tangsong
# 切换工作目录
WORKDIR /usr
# 执行命令
RUN mkdir /usr/local/java
# copy文件,并且copy之后会自动解压
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
-
第二步:将jdk-8u171-linux-x64.tar.gz 文件放到当前
Dockerfile
同目录中 -
第三步:构建镜像
docker build -t='jdk8' .
- -t='jdk8’表示指定构建之后的镜像名称
Docker私有仓库
-
拉取私有仓库镜像
docker pull registry
-
启动私有仓库
docker run -di --name=registry -p 5000:5000 registry
测试:访问localhost:5000/v2/_catalog
-
修改
daemon.json
vi /etc/docker/daemon.json
-
添加以下内容(开放docker的安全策略,让docker信任私有仓库的地址)
# 后面是的docker仓库的ip和端口 {"insecure-registries": ["192.xx.xx.x:5000"]}
-
-
重启docker
service restart docker
或systemctl restart docker
上传到私有仓库
-
镜像标签
docker tag [image] 192.xx.xx.x:5000/[image]
docker images
查看镜像,会多一个镜像记录 -
上传镜像
docker push 192.xx.xx.x:5000/[image]
上传即可
-
下载私有仓库镜像
docker pull 192.xx.xx.x:5000/[image]
指定私服地址和镜像名称(即上传时指定的名称即可)
docker镜像源配置
加快docker拉取镜像的速度,配置国内镜像仓库地址
-
编辑daemon.json
vi /etc/docker/daemon.json
-
加入源地址
{ "registry-mirros": ["https://docker.mirros.ustc.edu.cn"] }