Docker的迁移与备份

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 dockersystemctl 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"]
    }
    
上一篇:AI电销机器人常见问题回复


下一篇:【目标检测】CornerNet: Detecting Objects as Paired Keypoints论文理解