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)是针对镜像的操作,即镜像的复制,类似拷贝粘贴。

相关文章
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
816 108
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
4月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命
|
4月前
|
运维 持续交付 开发者
Docker:现代应用开发的容器化革命
Docker:现代应用开发的容器化革命
|
2月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !