• docker及docker-compose的离线安装与镜像及容器的导入、导出操作总结


    本文使用的docker版本如下:

    • docker 版本:v2.7.0
    • docker-compose 版本:v20.10.17
      针对在内网服务器离线安装、容器的导入、导出操作进行总结

    1. Docker 极速下载

    Docker 极速下载 提供Docker 的安装包以及周边高速镜像

    2. 离线安装docker

    2.1. 安装步骤

    • docker离线安装包下载: https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz, 下载v20.10.17版本
    • 上传到服务器,安装步骤如下:
    tar -zxvf docker-20.10.7.tgz
    cp docker/* /usr/bin/
    # 启动Docker守护程序
    dockerd &
    
    • 1
    • 2
    • 3
    • 4

    2.2. 验证

    docker info
    验证是否安装成功,执行docker info命令,若正常打印版本信息则安装成功。

    2.3. 注册成系统服务

    • 在 /usr/lib/systemd/system/ 目录下创建docker.service 文件vi /usr/lib/systemd/system/docker.service
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
     
    [Service]
    Type=notify
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    LimitNOFILE=infinity
    LimitNPROC=infinity
    TimeoutStartSec=0
    Delegate=yes
    KillMode=process
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
     
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 启动 / 停止 docker 服务
    重启守护进程
    systemctl daemon-reload
    #启动 / 停止 docker 服务
    systemctl start/stop docker
    #开机自启/取消开机自启 docker 服务
    systemctl enable/disable docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 查看docker状态
      systemctl status docker

    3. 离线安装docker-compose

    • 如果服务器可以联网,可以直接运行下面的命令
    curl -L https://get.daocloud.io/docker/compose/releases/download/v2.7.0/docker-compose-`uname -s`-`uname -m` \
    > /usr/local/bin/docker-compose
    
    • 1
    • 2

    在这里插入图片描述

    • 如果不能联网,则先在PC电脑上浏览器上下载docker-compose: https://get.daocloud.io/docker/compose/releases/download/v2.7.0/docker-compose-Linux-x86_64
      安装步骤如下:
    # 上传到服务器,然后mv到/usr/local/bin目录下
    chmod +x /usr/local/bin/docker-compose
    docker-compose version
    
    • 1
    • 2
    • 3

    结果展示:Docker Compose version v2.7.0

    4. 导入及导出

    镜像与容器导出的区别:
    通过 docker images --tree 可以查看到镜像的所有层,就会发现, docker export 丢失了所有的历史,而docker save 则会保存所有历史

    4.1. 镜像导出

    docker save 命令用于持久化 镜像,先获得镜像名称,再执行保存:

    • 通过此命令查出要持久化的镜像名称 docker images
    • 持久化镜像名为 image_name 的镜像docker save image_name -o ~/save.tar
      • 以上命令导出image后再导入镜像没有标签,所以需要手工增加标签
      • 示例:docker tag 7d2986d15386 apache/apisix:2.15.0-alpine
    • 导出镜像时带标签信息:使用:docker save -o 文件保存路径/文件名.tar REPOSITORY:TAG
      • 示例 docker save -o nginx.tar nginx:1.19.0-alpine

    注意: 如果镜像是在远程仓库,执行保存镜像的时候可能会报 Cowardly refusing to save to a terminal. Use the -o flag or redirect. 的错,可以通过 docker save image_name > image_name.tar 将镜像从远程仓库持久化到本地。

    4.2. 镜像导入

    • 导入 save.tar docker load < ~/save.tar
    • 查看镜像 docker images

    docker export 命令用于持久化 容器,先获取容器ID,再执行保存。

    4.3. 容器导出

    • 通过此命令查出要持久化的容器ID docker ps -a
    • 持久化容器id为 container_id 的容器 docker export container_id > ~/export.tar

    4.4. 容器导入

    • 从 export.tar 导入镜像 cat ~/export.tar | docker import - my-images:latest
    • 查看镜像 docker images

    4.5 一次性导入/导出全部镜像

    将一台服务器的所有镜像导出到一个文件,然后远程复制到其它服务器,再一次性导入

    # 导出所有镜像
    docker save $(docker images --format '{{.Repository}}:{{.Tag}}') -o allinone.tar
    
    # 远程复制
    scp 172.10.1.10:/home/allinone.tar ./
    
    # 一次性导入所有镜像
    docker load -i allinone.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Django建立mysql数据库,和使用navicat连接mysql数据库
    医依通小程序项目总结
    flink对状态ttl进行单元测试
    基于Ubuntu环境Git 服务器搭建及使用
    【设计模式】原型模式
    深入理解java虚拟机-Java内存区域与内存溢出异常
    Vue中多条件图片路径通过Map存储获取避免嵌套if-else
    电子商务盛行,怎么提高商店转换率?
    count(*)为什么很慢
    App移动端测试(5)—— adb命令【续】
  • 原文地址:https://blog.csdn.net/penriver/article/details/126859137