镜像操作

列出镜像:

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

获取镜像:

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

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

#从docker官方仓库下载ubuntu12.04版本镜像
sudo docker pull ubuntu:12.04

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

注意:从第三方镜像仓库获取镜像可能出现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 28012
v1 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命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。

-o: 表示以文件的形式导出  紧跟在-o后面的是导出文件保存的位置  最后是镜像(仓库:TAG,或者镜像id)
sudo docker save -o /home/fengzheng/dockerImages/mmm.tar ubuntu:12.04 同样用的是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.tar d0751467dcad

镜像导入:

docker load

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

镜像删除

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

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

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

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

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

# -a:修改者信息 -m:注释、说明  紧跟着当前操作的容器id   最后是要生成的新的镜像名称
sudo docker commit -a "fengzheng" -m "this is a commit message" ae2a59b86dd9 fengzheng/ubuntu
085243761c41ae58e92ba855539460b7342a5cd31b44b51a71c654bb8f823c10

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

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

容器操作

新建并启动容器

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

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端口,用法如下:

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

查看容器列表

#查看已启动的容器
sudo docker ps #查看所有容器
sudo docker ps -a  

启动一个已存在的容器  

#后面的id为容器ID
sudo docker start 8d98fd43acd4

进入容器  

sudo docker attach 8d98fd43acd4

停止容器

sudo docker stop 8d98fd43acd4

删除容器

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

sudo docker rm 8d98fd43acd4

导出容器

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

导入容器  

 

  

 

Docker:镜像操作和容器操作的更多相关文章

  1. Windows10下的docker安装与入门 (三) 创建自己的docker镜像并且在容器中运行它

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  2. docker containerd中的容器操作

    containerd的中的各种操作都是通过Task来进行的,因此对于容器的create, start, delete等等操作其实都是一个个的Task而已. Task的数据结构如下所示: type Ta ...

  3. docker镜像相关的常用操作

    1.保存镜像 #docker save 镜像名称 -o 保存的完整地址和文件名 docker save zhoushiya/zhiboyuan -o d:/zhiboyuan.tar 2.载入镜像 # ...

  4. kubernetes如何要使用用户名和密码登陆harbor以拉取docker镜像,应该如何操作?

    还好,网上有相应的CASE处理. http://www.jianshu.com/p/ffbfb44dc496 =========================== 先生成名为为regsecret的S ...

  5. Docker的镜像理解以及容器的备份、恢复和迁移操作

    Docker的镜像理解以及容器的备份.恢复和迁移操作 这篇文章主要介绍了Docker的镜像理解以及容器的备份.恢复和迁移操作,覆盖很多原理知识以及容器的重要操作步骤,极力推荐!需要的朋友可以参考下 D ...

  6. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作

    实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...

  7. docker镜像、容器

    第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...

  8. Docker镜像管理基础与基于容器的镜像制作示例

    一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建 ...

  9. asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行

    1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加us ...

随机推荐

  1. XOR Swap

    swap(a, b): a ^= b b ^= a a ^= b 先明确一下,a ^ a = 0,同时对于一切数x ^ 0 = x 可以这样理解,第三行: b ^= a b ^= a ^ b b = ...

  2. 学习微信小程序之css9内边距

    padding内边距 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. iOS Swift 3 open

    参考资料:http://stackoverflow.com/questions/38947101/what-is-the-open-keyword-in-swift

  4. 该不该在C#中使用var关键词

    作为一个并不勤快的程序猿,在项目开发过程中总是想尽办法少写代码,对var关键词的使用自然不会放过,几乎在每个能使用var的地方都用了var,对此,很多朋友同事给出了不同的建议,觉得能不使用var关键词 ...

  5. iOS笔记———数据存储

    应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...

  6. Python excel 库:Openpyxl xlrd 对比 介绍

    打算用python做一个写mtk camera driver的自动化工具. 模板选用标准库里面string -> Template 即可 但要重定义替换字符,稍后说明 配置文件纠结几天:cfg, ...

  7. Eclipse 双击变量,其他相同变量有底色

    转载:http://blog.csdn.net/majian_1987/article/details/46691697 方便下次查找. 在Eclipse中,鼠标选中或者光标移动到Java类的变量名时 ...

  8. lua 时间戳和时间互转

    1.时间戳转换成时间 local t = 1412753621000 function getTimeStamp(t)     return os.date("%Y%m%d%H", ...

  9. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  10. 安装windows服务批处理代码

    批处理是DOS时代比较常用的方法之一,目前来说也是一种高效的方法,复制代码到文本文件中,保存并修改文件扩展名为“*.bat”. 安装windows服务批处理代码如下: @echo off set fi ...