温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker镜像与容器的导入导出及常用命令实例分析

发布时间:2022-08-23 17:20:21 来源:亿速云 阅读:113 作者:iii 栏目:开发技术

这篇“Docker镜像与容器的导入导出及常用命令实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker镜像与容器的导入导出及常用命令实例分析”文章吧。

    一、Docker 镜像和容器的导入导出

    1.1、镜像的导入导出

    1.1.1、镜像的保存

    通过镜像ID保存

    方式一:

    docker save image_id > image-save.tar

    例如:

    root@Ubuntu:/usr/local/docker/nginx# docker images
    REPOSITORY      TAG                 IMAGE ID       CREATED         SIZE
    openjdk         8-jre               26ac3f63d29f   2 months ago    273MB
    nginx           1.21.3              87a94228f133   4 months ago    133MB
    root@Ubuntu:/usr/local/docker/nginx# docker save 87a94228f133 > nginx-save.tar

    方式二:

    docker save -o image-save.tar image_id

    例如:

    root@Ubuntu:/usr/local/docker/nginx# docker images
    REPOSITORY      TAG                 IMAGE ID       CREATED         SIZE
    openjdk         8-jre               26ac3f63d29f   2 months ago    273MB
    nginx           1.21.3              87a94228f133   4 months ago    133MB
    root@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar 87a94228f133

    通过镜像repositorytag保存

    docker save -o image-save.tar repository:tag

    例如:

    root@Ubuntu:/usr/local/docker/nginx# docker images
    REPOSITORY      TAG                 IMAGE ID       CREATED         SIZE
    openjdk         8-jre               26ac3f63d29f   2 months ago    273MB
    nginx           1.21.3              87a94228f133   4 months ago    133MB
    root@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar nginx:1.21.3
    1.1.2、镜像的导入

    方式一:

    docker load < nginx-save.tar

    方式二:

    docker load -i nginx-save.tar

    注意

    使用 image_id作为参数的方式导出的镜像包进行导入会出现 none的情况,需要手动打标签

    docker tag 87a94228f133 nginx:1.21.3

    使用镜像 repository:tag 作为导出参数的方式则正常

    1.2、容器的导入和导出

    1.2.1、容器的导出

    容器的导出是将当前容器变成一个容器包

    root@Ubuntu:/usr/local/docker/nginx# docker ps -a
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS       PORTS                                        NAMES
    66b23477cdc6   nginx:1.21.3  "/docker-entrypoint.…"   7 days ago   Up 3 hours   80/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp    nginx_51tj
    root@Ubuntu:/usr/local/docker/nginx# docker export -o nginx-export.tar 66b23477cdc6
    1.2.2、容器包的导入
    docker import nginx-export.tar nginx:1.21.3-new

    exportimport 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer

    你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。

    快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。

    注意:

    • docker save 保存的是镜像(image),docker export 保存的是容器(container);

    • docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;

    • docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

    二、Docker 常用命令

    查看 Docker 版本

    docker version

    从 Docker 文件构建 Docker 映像

    docker build -t image-name docker-file-location

    运行 Docker 映像

    docker run -d image-name

    查看可用的 Docker 映像

    docker images

    查看最近的运行容器

    docker ps -l

    查看所有正在运行的容器

    docker ps -a

    停止运行容器

    docker stop container_id

    删除一个镜像

    docker rmi image-name

    删除所有镜像

    docker rmi $(docker images -q)

    强制删除所有镜像

    docker rmi -r $(docker images -q)

    删除所有虚悬镜像

    docker rmi $(docker images -q -f dangling=true)
    
    docker image prune

    删除所有容器

    docker rm $(docker ps -a -q)

    进入 Docker 容器

    docker exec -it container-id /bin/bash

    查看所有数据卷

    docker volume ls

    删除指定数据卷

    docker volume rm [volume_name]

    删除所有未关联的数据卷

    docker volume rm $(docker volume ls -qf dangling=true)

    从主机复制文件到容器

    sudo docker cp host_path containerID:container_path

    从容器复制文件到主机

    sudo docker cp containerID:container_path host_path

    以上就是关于“Docker镜像与容器的导入导出及常用命令实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI