摘要:本系列教程翻译自,系列共有九篇,本文译自第二篇。总结本章知识介绍了最基本的十五个命令,接下来的教程将会陆续介绍如何在中运行一个应用以及其他的命令。接下来会在本系列教程结束后补充几篇应用的实例。
本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第二篇 Part 2: The 15 Commands。
该系列所有文章将参考其他学习资料翻译,也会加入自己的学习作为部分注解。如有错误,欢迎指正。
第一篇文章《Docker 简介》 介绍了 Docker 的基本概念,也介绍了 Docker 的安装、检查了 Docker 是否能够运行。本篇文章介绍实践中常用的 15 个 Docker 命令,以及它们具体在后台做了什么工作。(原文虽然标题说有 15 条命令,实际上只有 14 条)
0. 技巧这里是一个操作 Docker 镜像的小技巧,写在最前面,请牢记。后面会多次利用到这个技巧。
不冲突的情况下, Docker 可以使用 ID 的前面几个字符进行快速操作,例如:
命令 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 920c0f3c240a 89dc7e6d0ac1:latest "ls /etc/" 15 minutes ago Exited (0) 15 minutes ago ecstatic_perlman 3f2a0b440abc 89dc7e6d0ac1:latest "ls /etc/fstab" 15 minutes ago Exited (0) 15 minutes ago tender_curie 64c55acd970e 89dc7e6d0ac1:latest "ls -l" 15 minutes ago Exited (0) 15 minutes ago sharp_lumiere c34716ad8f72 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (0) 12 hours ago trusting_kowalevski 977be396faf6 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago ecstatic_lovelace 9e553497cbed busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago lonely_fermi c9093d4c7637 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago gloomy_pike 3f81114c48c2 busybox:latest "/bin/echo Hello Doc 19 hours ago Exited (0) 19 hours ago determined_swartz 26c98d7a589d hello-world:latest "/hello" 20 hours ago Exited (0) 20 hours ago distracted_babbage 36c0b05dc414 hello-world:latest "/hello" 20 hours ago Exited (0) 20 hours ago admiring_carson
可以使用 docker rm 92 命令快速删除容器 920c0f3c240a,但是无法使用 docker rm 3f 命令进行快速删除某个容器,因为有两个以 3f 开头的容器,你必须用 docker rm 3f2 或者 docker rm 3f8 指定删除其中一个。
1. 检查安装检查 Docker 是否安装:
docker info
如果 Docker 没有安装,会提示 command not found,如果 Docker 已经成功安装,则会有类似如下的提示:
命令 # docker info Containers: 2 Images: 2 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 6 Dirperm1 Supported: false Execution Driver: native-0.2 Kernel Version: 3.13.0-24-generic Operating System: Ubuntu 14.04 LTS CPUs: 1 Total Memory: 979.6 MiB Name: ubuntu ID: PRLX:CY3O:TZ6P:4UAS:VDWM:MHWB:FB3V:TJBJ:GQ4J:Q453:GPOY:WZSI WARNING: No swap limit support2. 检查镜像
那么我们检查一下本机有多少 Docker 镜像:
docker images
输出:
命令 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 91c95931e552 5 days ago 910 B
本机只有 Docker 教程一 中的一个 hello-world 镜像。
我们可以使用如下命令去下载一个 busybox 的镜像文件:
3. 下载镜像docker pull
输出:
命令 # docker pull busybox latest: Pulling from busybox cf2616975b4a: Pull complete 6ce2e90b0bc7: Pull complete 8c2e06607696: Already exists busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d Status: Downloaded newer image for busybox:latest
busybox 是一个 Linux 工具集,包括各种常用命令,例如 cat、echo ,也有各种高级命令,例如 grep、mount 等。执行完 docker pull busybox 之后,Docker 会自动从 Docker 官方下载 busybox 的镜像文件。
这个过程中可以执行 Ctrl+C,docker pull 不会因为 Ctrl+C 打断,而回转为后台执行。
4. 运行镜像有了镜像当然要对镜像做点事情,例如:
docker run busybox /bin/echo Hello Docker
这条命令是运行 busybox 镜像中的 /bin/echo 命令,参数是 Hello Docker:
命令 # docker run busybox /bin/echo Hello Docker Hello Docker5. 运行守护进程
当然有人会感到疑惑:难道不能在 Docker 容器内运行一个守护进程之类的东西?
当然可以,例如:
sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")
在后台,以 busybox 镜像为基础创建的一个容器,每一秒运行一次 echo Docker 命令;然后该容器的 ID 保存在变量 sample_job 中。
6. 查询输出关于 sample_job :其实 Docker 给每个运行中的容器也随机会起一个名字的,而不仅仅是一串长长的 ID ,例如我这个容器的就被起名叫 trusting_kowalevski,可以通过 docker ps 获取这个名字,当然本篇文章中所有的 $sample_job 也可以用 trusting_kowalevski 这个名字替代。
查询容器的输出内容:
docker logs/
例如:通过 docker logs 命令查询 sample_job 对应的容器的输出内容。
命令 # sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done") 命令 # docker logs $sample_job Docker Docker Docker Docker Docker Docker Docker
只要这个容器运行的时间足够长,就会输出足够多行的 Docker。
7. help 选项和通用的 unix 命令一样,Docker 也有 help 选项:
docker help
和
docker8. 停止容器--help
那么还是刚刚那个容器:
这个容器已经输出了足够多的 Docker,该让他停下了:
docker stop $sample_job9. 重启容器
或者重启刚刚那个容器:
docker restart $sample_job10. 删除容器
当然也可以完全删除这个容器:
docker stop $sample_job
docker rm $sample_job
11. 保存容器注:Docker 的文件是放在 /var/lib/docker/containers/ 中的。
将当前的 Docker 容器状态保存为镜像:
docker commit $sample_job job1
这里保存成一个名叫 job1 的镜像。
12. 检查容器注意:镜像名称中只允许出现小写字母和数字。
如果不太确信刚刚已经把容器保存成镜像了,可以使用下面的命令查看刚刚 commit 的到底是什么:
docker images
可以看到,多出了一个 job1 的镜像:
命令 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE job1 latest 9b748dc45fd1 50 seconds ago 2.433 MB hello-world latest 91c95931e552 5 days ago 910 B busybox latest 8c2e06607696 5 days ago 2.433 MB13. 搜索仓库
在前面文章提到了 Docker Index 和 Docker registry,这两个就是 Docker 官方存储公有和私有镜像的地方,可以使用这个命令搜索被上传到 Docker registry 的镜像:
docker search
例如:
命令 # docker search dockerui NAME DESCRIPTION STARS OFFICIAL AUTOMATED crosbymichael/dockerui docker run -d crosbymichael/dockerui /dock... 23 abh1nav/dockerui An updated version of crosbymichael/docker... 16 [OK] dockerui/dockerui A web interface to interact with the Docke... 13 [OK] madhavkobal/dockerui Docker Updated Version having Search, Pull... 7 fardok/dockerui docker web ui from crosbymichael 1 rpidockers/dockerui 1 microbox/dockerui Trusted Automated dockerui image (16MB size) 1 sigmonsays/dockerui 1 [OK] sidd/dockerui DockerUI 0 pemcconnell/dockerui 0 devalih/dockerui To run : docker pull devalih/dockerui do... 0 jonny64/dockerui 0 eternitech/dockerui 0 akranga/dockerui 0 netz98/dockerui PHP based Docker UI 0 jonbaer/dockerui 0 rogaha/dockerui 0 bettse/dockerui Fork of crosbymichael/dockerui 0 wansc/dockerui 0 [OK] c0710204/dockerui 0 [OK] zaraki673/dockerui 0 [OK] allincloud/dockerui 0 [OK] atandock/dockerui 0 [OK] cloudaku/dockerui 0 [OK] yungsang/dockerui Docker API Version: v1.8 UI Version: v0.4 ... 0
当然 DockerUI 官方的指出官方维护镜像是 dockerui/dockerui,因此只需 docker pull dockerui/dockerui 即可得到 DockerUI。
DockerUI:一个网页版本的 Docker 管理工具。
Docker 的仓库也有个被人诟病的地方:你没有办法弄清 Docker 镜像的来源。DockerUI 官方文档指出了 DockerUI 官方镜像的名称 dockerui/dockerui,Docker 官方维护的发行版也都有 official 标签;除了这两种情况之外,所有的镜像都没有安全标签,你完全无法判断镜像的安全性。
14. 获取镜像历史获取 Docker 镜像的更改历史:
docker history
例如:
docker history busybox
15. 推送镜像注:只能对本地存在的 Docker 镜像执行这个命令。
将一个镜像推送到 Docker registry:
docker push/
总结注:不能直接使用 docker push job1,所有推送命令的格式必须是 docker push
/ ,不加无法推送到 Docker registry。
本章知识介绍了最基本的十五个 Docker 命令,接下来的教程将会陆续介绍如何在 Docker 中运行一个 Python Web 应用以及其他的 Docker 命令。
译者注:本文到此结束,但是直到本系列教程的结束,Flux7 都没有提供一个 Docker 中运行 Python Web 应用的实例。接下来会在本系列教程结束后补充几篇 Docker 应用的实例。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26396.html
摘要:本系列教程翻译自,系列共有九篇,本文译自第二篇。总结本章知识介绍了最基本的十五个命令,接下来的教程将会陆续介绍如何在中运行一个应用以及其他的命令。接下来会在本系列教程结束后补充几篇应用的实例。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第二篇 Part 2: The 15 Commands。 该系列所有文章将参考其他学习...
摘要:此刻的后手指依旧飞速地敲打键盘,丝毫没有要停不下来意思。阅读本期技术周刊,你不光能弄明白什么是,使用的意义何在,还将被传授秘籍,以达的境界。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,听到后排动感十足的清脆键盘响,我就能猜到公司程序员定...
摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...
摘要:本系列教程翻译自,系列共有九篇,本文译自第一篇。,一种新的容器化技术,因为轻量级和便携化而受到广泛关注。本篇文章是系列教程的第一篇。镜像只读的容器模板,简言之就是系统镜像文件。首先,向发出请求创建一个镜像并且指定容器内要运行的命令。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction。...
摘要:注这篇文章是系列教程中的一篇,本篇文章由发布,原文地址在前面的文章中,作为正在进行的教程系列的一部分,我们讨论了。这个系列的其他教程 注:这篇文章是系列教程中的一篇,本篇文章由 Flux7 Labs 发布,原文地址 Docker Tutorial Series, Part 8: Docker Remote API 在前面的文章中,作为正在进行的 Docker 教程系列的一部分...
阅读 1272·2021-11-16 11:44
阅读 3736·2021-10-09 10:01
阅读 1697·2021-09-24 10:31
阅读 3730·2021-09-04 16:41
阅读 2478·2021-08-09 13:45
阅读 1185·2019-08-30 14:08
阅读 1755·2019-08-29 18:32
阅读 1623·2019-08-26 12:12