Docker-05-容器导入导出

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker-05-容器导入导出

容器的简单操作相信你已经掌握了,现在有一个需求,我们希望能够在 ubuntu 的容器中搭建 python 运行环境,并且要将这个镜像保存下来,方便给新同事直接使用。


需求分析


  1. 启动 ubuntu 容器
  2. 安装 python 并测试
  3. 容器导出为镜像包
  4. 使用导出的镜像包创建容器并测试
  5. 发布


实施


启动容器


root@phyger-VirtualBox:~# docker run --name ubuntu_py --net host -it ubuntu /bin/bash
root@phyger-VirtualBox:/#
复制代码


注意参数:


  • --name ubuntu_py:指定容器名称
  • --net host:指定容器网络类型(后续详解)


安装 python


1、将本地/etc/apt/sources.list 拷贝到容器中。


docker cp /etc/apt/sources.list 1cdae865d767:/etc/apt/
复制代码


后续操作都是在容器内进行。


2、获取软件列表 apt-get update


root@phyger-VirtualBox:/# apt-get update
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease [88.7 kB]
Get:2 后续省略
复制代码


3、安装 python


root@phyger-VirtualBox:/# apt-get install python3.8
Reading package lists... Done
Building dependency tree
Reading state information... Done
后续省略
复制代码


4、测试


root@phyger-VirtualBox:/# python
Python 3.8.0 (default, Oct 28 2019, 16:14:01)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
复制代码


容器中 python 安装成功。


导出容器为镜像


命令:docker export  xxx.tar


root@phyger-VirtualBox:/home/phyger# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1cdae865d767        ubuntu              "/bin/bash"         22 minutes ago      Up 22 minutes                           ubuntu_py
root@phyger-VirtualBox:/home/phyger# docker export 1cdae865d767 > ubuntu_py.tar
root@phyger-VirtualBox:/home/phyger# ls | grep *.tar
ubuntu_py.tar
root@phyger-VirtualBox:/home/phyger#
复制代码


导入镜像


命令:docker import xxx.tar name:version


root@phyger-VirtualBox:/home/phyger# docker import ubuntu_py.tar my_ubuntu:v5
sha256:0383424243326866c32cfbce134ee2cd63321254c1a13c4715ea1dc2b1970f7a
root@phyger-VirtualBox:/home/phyger# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my_ubuntu           v5                  038342424332        11 seconds ago      141MB
alpine              latest              a24bb4013296        2 weeks ago         5.57MB
ubuntu              latest              1d622ef86b13        8 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
root@phyger-VirtualBox:/home/phyger#
复制代码


my_ubuntu:v5 镜像导入成功,镜像从之前的 73.9MB 变为了 141MB


使用新镜像创建虚机并测试:


root@phyger-VirtualBox:/home/phyger# docker run -it --name test_py my_ubuntu:v5 /bin/bash
root@8dfd0b202d7e:/# python
Python 3.8.0 (default, Oct 28 2019, 16:14:01)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
复制代码


到此,这个需求完成,我们只需要将 ubuntu_py.tar 保存到版本仓库即可。


Tip


有些同学可能对镜像的导入导出和保存加载有所混淆,镜像的导入导出(export、import)是针对容器的操作,即将某一时刻的某状态的容器保存为一个镜像,在其他地方导入后可以拉起一个和此刻状态一致的容器,类似快照。而镜像的保存和加载(save、load)是针对镜像的操作,即镜像的复制,类似拷贝粘贴。

相关文章
|
10天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
8天前
|
存储 虚拟化 数据中心
|
10天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
10天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
前端开发 算法 数据中心
Docker consul的容器服务更新与发现
服务注册与发现解决分布式架构中服务定位和管理问题,允许动态更新与发现服务网络位置,减少配置维护。Consul是Google开源的多数据中心、高可用服务管理工具,提供服务发现、健康检查和配置共享功能。采用Raft算法确保高可用性,节点运行Agent,有Server和Client两种模式。Server模式负责信息持久化和同步,而Client模式只转发服务。每个数据中心推荐3-5个Server节点以保证数据安全和选举稳定性。
|
7天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
7天前
|
Linux 开发者 Docker
Docker容器化技术详解
【4月更文挑战第30天】Docker,一个开源的容器化平台,助力开发者通过轻量级容器打包应用及依赖,实现跨平台快速部署。核心概念包括:容器(可执行的软件包)、镜像(只读模板)、Dockerfile(构建镜像的指令文件)和仓库(存储镜像的地方)。Docker利用Linux内核功能隔离容器,采用联合文件系统构建镜像。广泛应用包括开发测试一致性、微服务部署、CI/CD以及本地到远程部署。通过安装Docker,编写Dockerfile,构建&运行容器,可实现高效灵活的应用管理。随着容器技术进步,Docker在云计算和DevOps中的角色日益重要。
|
7天前
|
Shell Docker Ruby
3.Docker容器的数据卷
3.Docker容器的数据卷
|
7天前
|
弹性计算 Shell 数据安全/隐私保护
|
7天前
|
弹性计算 Shell 数据安全/隐私保护
自动化构建和部署Docker容器
【4月更文挑战第30天】
11 0