Docker:镜像操作和容器操作

镜像操作

列出镜像:

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              0a6ba66e537a        4 weeks ago         960 B

获取镜像:

docker系统镜像可以从任意一个可访问的镜像仓库获取,默认从docker hub上获取,如果下载太慢的话可以考虑国内的镜像仓库,例如dl.dockerpool.com:5000或者阿里云镜像库下载。

docker获取镜像用docker pull命令,如下:

 docker pull ubuntu:
从dl.dockerpool获取镜像 docker pull dl.dockerpool.com:/ubuntu:

注意:从第三方镜像仓库获取镜像可能出现https证书问题,例如:

Error response from daemon: unable to ping registry endpoint https://dl.dockerpool.com:5000/v0/v2 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v2/: tls: oversized record received with length 28012v1 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v1/_ping: tls: oversized record received with length 28012

解决方案:

进入/etc/default目录,找到docker文件,在其中添加如下代码:

DOCKER_OPTS="--insecure-registry dl.dockerpool.com:5000"

之后重启docker服务:

sudo service docker restart

镜像保存与导入

保存的文件以.tar方式存在

保存方式一:save

save命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。

 docker save -o /home/fengzheng/dockerImages/mmm. ubuntu:

 Error response from daemon: open /var/lib/docker/aufs/mnt/30868777f2756735efc907c763555f869472d48ea92156c3c4b09ac22ec4adc6/.wh..wh.plnk/1003.3513973: operation not permitted

保存方式二:export

确切的说,export其实是容器的保存,只把镜像当前的状态保存下来,没有历史版本等信息,所有文件比较小

-o:表示以文件形式导出 紧跟在-o后面的是导出文件保存位置   最后是容器的id 容器通过sudo docker ps -a 查看,下一篇会介绍
docker export -o ubuntu1204. d0751467dcad

镜像导入:

docker load

sudo docker load < /home/fengzheng/Docker/ubtuntu12.04.tar

镜像删除

删除镜像前,要先把依赖于这个镜像的容器删除(sudo docker rm 容器id)

删除镜像的命令是docker rmi [镜像id]

sudo docker rmi 0ac5b09d8536
Deleted: 0ac5b09d8536832e73c10e39bfda2e94781e07ebe47a206ea1c20f3f672f258a
Deleted: efbb515ae632b8ba4b8536c1eadcf1304d915c076fcadbc8c2cb6f8f2ab82013
Deleted: 5e59ab4801348d2d951c93373151bf0b4059c30bb1b58af4ce5e390114e83e1c
Deleted: be10ee96620dd1cb4bae39bb0351f241eed25b086e0c90a907a29eef2af41b34

提交修改的容器,并生成新的镜像

当对现有容器进行修改后,例如安装了某些软件、修改了配置等,要保存当前修改并生成新的镜像,使用docker commit命令 ,这个命令和git的commit命令很像

 docker commit -a  -m  ae2a59b86dd9 fengzheng/

查看镜像的信息:docker inspect [镜像名称或者镜像id]

sudo docker inspect fengzheng/ubuntu
或者sudo docker inspect 085243761c41

容器操作

新建并启动容器

根据一个镜像可以启动多个容器,启动容器的命令是docker run

1
2
3
sudo docker run -t -i ubuntu:12.04  /bin/bash
或者
sudo docker run -t -i  镜像id

常用参数解释:

-t 表示让Docker分配一个伪终端并绑定到容器的标准输入上

-i 表示让容器的标准输入保持打开

-d 表示以守护方式打开(即非交互模式,后台运行)

还有一个比较常用的,做网络配置时端口映射的参数-p,例如下面的命令将宿主机的3222端口映射到容器的22端口、将宿主机的3280端口映射到容器的22端口,用法如下:

1
#-p 设置端口映射 -p 宿主机端口:容器端口  <br>sudo docker run -t -i -p 3222:22 -p 3280:80 87e5b6b3ccc1 /bin/bash

查看容器列表

1
2
3
4
5
#查看已启动的容器
sudo docker ps
#查看所有容器
sudo docker ps -a  

启动一个已存在的容器  

1
#后面的id为容器ID<br>sudo docker start 8d98fd43acd4

进入容器  

1
sudo docker attach 8d98fd43acd4

停止容器

1
sudo docker stop 8d98fd43acd4

删除容器

容器必须是停止状态的才可以删除

1
sudo docker rm 8d98fd43acd4

导出容器

1
2
#将容器id为7691a814370e 的导出到当前目录下 名称为ubuntu.tar
sudo docker export 7691a814370e > ubuntu.tar

docker镜像文件导入与导出

工作中经常需要拉取一些国外的镜像,但是网络限制等原因在公司拉取很慢,所以我习惯用亚马逊服务器拉取镜像,导出后下载到本地再导入开发环境

1. 查看镜像id

sudo docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
quay.io/calico/node      v1.0.1              c70511a49fa1        6 weeks ago         257 MB
hello-world              latest              48b5124b2768        2 months ago        1.84 kB
quay.io/coreos/flannel   v0.7.0              63cee19df39c        2 months ago        73.8 MB
quay.io/calico/cni       v1.5.5              ada87b3276f3        2 months ago        67.1 MB

2. 选择要打包的镜像,执行打包命令

sudo docker save -o quay.io-calico-node-1.tar quay.io/calico/node 

会在当前目录下生成导出文件xxx.tar,然后将此文件下载到本地

3. 在开发环境导入上述打包的镜像

docker load -i quay.io-calico-node-1.tar

0a43edc59c00: Loading layer 27.59 MB/27.59 MB
69a5574b2581: Loading layer 3.636 MB/3.636 MB
fb0933709f36: Loading layer 3.913 MB/3.913 MB
7384abd120f5: Loading layer 3.859 MB/3.859 MB
e34911610de0: Loading layer 27.06 MB/27.06 MB
d6ec327c8cbe: Loading layer 6.656 kB/6.656 kB
Loaded image ID: sha256:ada87b3276f307a6b1b1ada15820b6c9842fd839fe5cc46ad5db8af81f7fd271

至此,可以使用本地镜像了!

docker 容器的导入导出

导出容器docker export

导出容器快照到本地文件
$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a814370e        ubuntu:14.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
$ sudo docker export 7691a814370e > ubuntu.tar

导入容器快照docker import

从容器快照文件中再导入为镜像
$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB

通过指定 URL 或者某个目录来导入

$sudo docker import http://example.com/exampleimage.tgz example/imagerepo

Note: 用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

转载于:https://blog.51cto.com/lookingdream/2062193

docker images 保存导入导出、容器导入导出相关推荐

  1. docker-容器相关:运行、启动、停止、进入、导出和导入、删除

    docker-容器相关 运行交互式的容器 启动容器(后台模式) 停止容器 进入容器 attach 命令 exec 命令 导出和导入容器 导出容器 导入容器快照 删除容器 运行交互式的容器 我们通过 d ...

  2. docker镜像保存为文件与文件载入为docker镜像

    文章目录 一.docker镜像保存为文件 二.导出的镜像文件载入为docker镜像 提示:以下是本篇文章正文内容,下面案例可供参考 一.docker镜像保存为文件 #查看镜像列表 [root@loca ...

  3. docker保存linux镜像,docker导入导出容器和保存加载镜像

    系统环境:centos7.4 版本: # docker -v 1.docker容器导入导出 (1)查看:# docker ps -a (2)导出---export # docker export we ...

  4. Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)

    Docker 容器 简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层. 如果认为虚拟机是模拟运行的一整套操作系统(包括内核.应用运行态环境和其他系 ...

  5. 使用export/import导出和导入docker容器

    1.导出容器 如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件. $ sudo docker ps -a CONTAINER ID        IMAGE ...

  6. docker镜像和容器的导出导入

    docker镜像的导出和导入 docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 显示当前docker中的镜像: docke ...

  7. docker存出和载入镜像、导出和导入容器

    结论:通过测试,存出镜像后再载入 和 导出容器后再导入 结果是一样的. 如果容器内项目有修改,并且不需要历史记录,选择 两个方法的区别: 镜像和容器 导出和导入的区别 1)容器(export 导出.i ...

  8. docker 镜像容器导入导出、查看日志、拷贝文件命令

    1. 本地文件拷贝到docker 容器中,参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7 ...

  9. docker 容器 导入 导出

    导出容器 方法1 docker export master>master.tar 方法2 docker export -o slave.tar fa2a8cb04b58 其他 master为容器 ...

最新文章

  1. 程序员该有的职业素养
  2. linux centos7 docker 安装 oracle
  3. 简历英文 计算机水平,计算机英文 简历
  4. 强化学习(三)—— 策略学习(Policy-Based)及策略梯度(Policy Gradient)
  5. 号外号外!自动化测试工具AutoRunner V4.2 新版本升级预告!
  6. TMS320 C6000系列 DSP之 CCS5.5 仿真调试
  7. Qt Creator用户互动方法
  8. 开源CMS webEdition 6发布
  9. Openstack的nova-network的vlan模式扩展
  10. 使用layer.tips实现鼠标悬浮时触发事件提示消息实现
  11. [转载] Python大数据文本分析及应用
  12. 给我一个软件,我将操控一个机器人军团!
  13. 拓端tecdat|R语言使用Metropolis- Hasting抽样算法进行逻辑回归
  14. c++builder Form重载WindowProc、WndProc 截获消息
  15. WinCC7.3 Win764位系统安装教程
  16. oracle TNS:listener does not currently know of service requested in connect descrip
  17. 二叉树由遍历确定一棵树
  18. 永不消逝的电波(一):无线电入门篇
  19. 在linux上挂载ntfs分区
  20. 机器人(自动化)课程的持续学习-2022-

热门文章

  1. 开源数据集汇总 | 小目标检测、图像分类、图像识别
  2. Studying Recommendation Algorithms by Graph Analysis
  3. 计算机制造属于连续性生产,生产类型
  4. pythonor和and的优先级_python中not、and、or的优先级与详细用法
  5. 农场一头母牛,母牛每年生产一头小母牛,小母牛5年后可以产母牛,n年后有多少头牛。递归思维解法
  6. STM32——stm32 I2C通信代码配置(2)(学习笔记)
  7. 用户画像(profile v.s. persona)
  8. 华为云 承诺重于泰山!
  9. ArcBlock 分享 | 在国外,没有中国人参与的项目就不投
  10. python上手_10分钟上手python pandas