Docker之镜像与容器

原文链接:http://wyb0.com/posts/docker-image-and-container

操作系统:Ubuntu14.04.1
Docker版本:Docker version 17.06.0-ce, build 02c1d87

0x00 镜像操作

  • 下载镜像
#一般容器的id和name可以互换

$ docker search ubuntu #从公共registry搜索镜像

$ docker pull ubuntu #从公共registry下载镜像
$ docker pull ubuntu:14.04
  • 查看当前系统镜像
$ docker images
REPOSITORY    TAG       IMAGE ID        CREATED        SIZE
ubuntu        latest    14f60031763d    2 weeks ago    120MB
ubuntu        14.04     54333f1de4ed    2 weeks ago    188MB
  • 打包镜像
$ docker save 54333f1de4ed > /home/reber/ubuntu.tar
  • 加载镜像
$ docker load < ./ubuntu.tar
1b0c71361973: Loading layer  196.9MB/196.9MB
150e95c79e16: Loading layer  209.9kB/209.9kB
1ae9c3d1e0b7: Loading layer  7.168kB/7.168kB
4622ee8f36ae: Loading layer  4.608kB/4.608kB
4455b4d81934: Loading layer  3.072kB/3.072kB
Loaded image ID: sha256:54333f1de4ed2730bea18e49605b2ea8f8a2689db213ece94db6ccbc8cf279a6
$ docker images
REPOSITORY    TAG       IMAGE ID        CREATED        SIZE
centos        7         328edcd84f1b    7 days ago     193MB
<none>        <none>    54333f1de4ed    3 weeks ago    188MB
  • 给镜像打标签
$ docker tag 54333f1de4ed ubuntu:14.04
$ docker images
REPOSITORY    TAG      IMAGE ID        CREATED        SIZE
centos        7        328edcd84f1b    7 days ago     193MB
ubuntu        14.04    54333f1de4ed    3 weeks ago    188MB
  • 查看镜像层组成
$ docker history ubuntu:desktop
  • 删除镜像(删除镜像前要先删除上面的容器)
$ docker rmi ubuntu:latest #docker rmi 14f60031763d

0x01 容器操作

  • 运行容器(exit后容器就停止了)
$ docker run --rm -ti ubuntu:14.04 /bin/bash
root@172c8d8b0671:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@172c8d8b0671:/# exit
exit

解释:
--rm:告诉Docker一旦运行的进程退出就删除容器
-ti:告诉Docker分配一个为终端并进入交互模式(这将进入容器内)
ubuntu:这是容器立足的镜像
/bin/bash:shell
  • 后台运行容器
$ docker run -d ubuntu:14.04 ping 8.8.8.8
1f665a3ccf4bab2e1a901727e3eef9140e713f3a4699c55c0e67f8666cca5d11
#$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
  • 查看当前运行的容器
$ docker ps
CONTAINER ID   IMAGE          COMMAND          CREATED          STATUS          PORTS    NAMES
1f665a3ccf4b   ubuntu:14.04   "ping 8.8.8.8"   5 seconds ago    Up 4 seconds             goofy_dubinsky
  • 查看所有容器
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND          CREATED          STATUS          PORTS    NAMES
1f665a3ccf4b   ubuntu:14.04   "ping 8.8.8.8"   13 minutes ago   Up 13 minutes            goofy_dubinsky
82113ae171f1   ubuntu         "ping 8.8.8.8"   28 minutes ago   Created                  mystifying_keller
  • 查看容器日志
$ docker logs 1f665a3ccf4b
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=127 time=183 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=127 time=184 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=127 time=185 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=127 time=183 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=127 time=182 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=127 time=184 ms
  • 查看容器的端口映射
$ docker port 1f665a3ccf4b
  • 查看容器的进程信息
$ docker top 1f665a3ccf4b
  • 查看容器的文件变化
$ docker diff 1f665a3ccf4b
C /root
A /root/.bash_history
A /root/a.txt
  • 从宿主机向容器复制数据
$ docker cp a.txt 1f665a3ccf4b:/root/
$ docker cp test 1f665a3ccf4b:/root/
  • 从容器向宿主机复制数据
$ docker cp 1f665a3ccf4b:/root/libxml29_compat.patch ~/
$ docker cp 1f665a3ccf4b:/root/test ~/
  • 导出/导入容器(导出的其实是镜像)
$ docker export df2a7e881c8a > ./ubuntu_container.tar
$ docker import ./ubuntu_container.tar
$ docker images
REPOSITORY    TAG       IMAGE ID        CREATED               SIZE
<none>        <none>    499df17f51e7    About a minute ago    175MB
$ docker tag 499df17f51e7 ubuntu:container
  • 进入容器
$ docker exec -ti goofy_dubinsky /bin/bash
root@1f665a3ccf4b:/# ps -aux|grep ping
root         1  0.0  0.0   6524   712 ?        Ss   09:38   0:00 ping 8.8.8.8
  • 停止/启动容器
$ docker stop 1f665a3ccf4b
1f665a3ccf4b
#docker kill 1f665a3ccf4b,stop会在10s后停止,kill则直接停止
$ docker start 1f665a3ccf4b
1f665a3ccf4b
  • 删除容器(容器需要先停止才能删除)
$ docker rm 1f665a3ccf4b
Error response from daemon: You cannot remove a running container 1f665a3ccf4bab2e1a901727e3eef9140e713f3a4699c55c0e67f8666cca5d11. Stop the container before attempting removal or force remove
$ docker kill 1f665a3ccf4b
1f665a3ccf4b
$ docker rm 1f665a3ccf4b
1f665a3ccf4b
  • 删除所有容器(只能删除停止运行的)
$ docker rm $(docker ps -a -q)
be5877380ca5
3e4b3a11d49f
2e51c9c2c6d1
dc6cadfc08f7

0x02 查看镜像或容器的底层信息(IP、端口绑定、配置信息等)

$ docker inspect 65987aa8f0cb

0x03 例子

$ exec_ping=$(docker run -d ubuntu:14.04 ping 8.8.8.8)
$ docker logs $exec_ping
$ docker restart $exec_ping
$ docker commit $exec_ping ubuntu:ping #保存容器为镜像
sha256:c496c5d6e3cd4ac9f54d200c5b374ded94cea11f4b2b6eef1fde25a703fcc06c
$ docker images
REPOSITORY    TAG      IMAGE ID        CREATED          SIZE
ubuntu        ping     c496c5d6e3cd    2 seconds ago    188MB
centos        7        328edcd84f1b    7 days ago       193MB
ubuntu        14.04    54333f1de4ed    3 weeks ago      188MB
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容