镜像操作

列出镜像:

$ 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. git使用

    1.权限校验 首先,您的数据保存在远端服务器一份,服务器需要对您的身份进行识别,一段RAS加密字串, 启动GUI,step1:创建秘钥,generate SSHkey. step2:添加密钥:去你的代 ...

  2. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  3. DFS序+线段树 hihoCoder 1381 Little Y's Tree(树的连通块的直径和)

    题目链接 #1381 : Little Y's Tree 时间限制:24000ms 单点时限:4000ms 内存限制:512MB 描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每 ...

  4. 【转】《从入门到精通云服务器》第七讲—负载均衡和CDN技术

    在IDC知识中,我们常常会遇上负载均衡与CDN的概念而不知所云.第一讲[什么是云计算], 我们提到过负载均衡,仅给大家留下了印象.这次我们将深入浅出的讲讲到底什么是负载均衡与CDN技术.---互联网数 ...

  5. Leetcode Kth Smallest Element in a BST

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...

  6. Notepad++ 默认快捷键

    Notepad++绝对是windows下进行程序编辑的神器之一,要更快速的使用以媲美VIM,必须灵活掌握它的快捷键,下面对notepad++默认的快捷键做个整理(其中有颜色的为常用招数):     1 ...

  7. 谈谈rem

    用rem已久但是对于它的理解似乎一直都有偏差,使用的时候多采用的是html的font-size:62.5%;然后按照1rem=10px这样来使用.所以我一直不明白,这个rem到底哪里是相对单位了,也不 ...

  8. swift-闭包(代码块)

    语法 通用的语法 {(parameters) -> return type in statements } e.g let studname = { println("Welcome ...

  9. c# 局域网文件传输实例

    一个基于c#的点对点局域网文件传输小案例,运行效果截图 //界面窗体 using System;using System.Collections.Generic;using System.Compon ...

  10. flash小游戏在Kongregate上线——BasketBall Master(篮球大师)

    小游戏地址,欢迎上去留言评论.游戏完成度没有达到期望水平,只能算完成了核心玩法吧,一些其他构想来不及实现. BasketBall Master(篮球大师) 这个小游戏很早之前就基本做好了,只因有些细节 ...