设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

深入浅出Docker(二):Docker命令行探秘

2014-9-1 16:27| 发布者: joejoe0332| 查看: 5186| 评论: 0|原作者: 肖德时|来自: InfoQ

摘要:   Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了 ...

port

使用方法:

docker port CONTAINER PRIVATE_PORT

使用说明:

打印出Host主机端口与容器暴露出的端口的NAT映射关系

pause / unpause

使用方法:

docker pause CONTAINER

使用说明:

使用cgroup的freezer顺序暂停、恢复容器里的所有进程。详细freezer的特性,请参考官方文档

ps

使用方法:

docker ps [OPTIONS]

例子:

$ docker psCONTAINER ID        IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES4c01db0b339c        ubuntu:12.04                 bash                   17 seconds ago       Up 16 seconds                           webappd7886598dbe2        crosbymichael/redis:latest   /redis-server --dir    33 minutes ago       Up 33 minutes       6379/tcp            redis,webapp/db

使用说明:

docker ps打印出正在运行的容器,docker ps -a打印出所有运行过的容器。

rm

使用方法:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

例子:

$ sudo docker rm /redis/redis

使用说明:

删除指定的容器。

rmi

使用方法:

docker rmi IMAGE [IMAGE...]

例子:

$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtest1 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)test2 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)$ sudo docker rmi fd484f19954fError: Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories2013/12/11 05:47:16 Error: failed to remove one or more images$ sudo docker rmi test1Untagged: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8$ sudo docker rmi test2Untagged: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtest latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB)$ sudo docker rmi testUntagged: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

使用说明:

指定删除Image文件。

run

使用方法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

例子:

$ sudo docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"

使用说明:

这个命令是核心命令,可以配置的参数多达28个参数。详细的解释可以通过docker run --help列出。官方文档中提到的 Issue 2702:"lxc-start: Permission denied - failed to mount" could indicate a permissions problem with AppArmor. 在最新版本的Dcoker中已经解决。

start / stop / restart

使用方法:

docker start CONTAINER [CONTAINER...]

使用说明:

这组命令可以开启(两个:start, restart),停止(一个:stop)一个容器。

tag

使用方法:

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

使用说明:

组合使用用户名,Image名字,标签名来组织管理Image。

top

使用方法:

docker top CONTAINER [ps OPTIONS]

使用说明:

显示容器內运行的进程。

wait

使用方法:

docker wait CONTAINER [CONTAINER...]

使用说明:

阻塞对指定容器的其他调用方法,直到容器停止后退出阻塞。

2.3 日志信息相关

events

使用方法:

docker events [OPTIONS]

使用说明:

打印容器实时的系统事件。

history

使用方法:

docker history [OPTIONS] IMAGE

例子:

$ docker history dockerIMAGE CREATED CREATED BY SIZE3e23a5875458790b7a806f95f7ec0d0b2a5c1659bfc899c89f939f6d5b8f7094 8 days ago /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8 0 B8578938dd17054dce7993d21de79e96a037400e8d28e15e7290fea4f65128a36 8 days ago /bin/sh -c dpkg-reconfigure locales && locale-gen C.UTF-8 && /usr/sbin/update-locale LANG=C.UTF-8 1.245 MBbe51b77efb42f67a5e96437b3e102f81e0a1399038f77bf28cea0ed23a65cf60 8 days ago /bin/sh -c apt-get update && apt-get install -y git libxml2-dev python build-essential make gcc python-dev locales python-pip 338.3 MB4b137612be55ca69776c7f30c2d2dd0aa2e7d72059820abf3e25b629f887a084 6 weeks ago /bin/sh -c #(nop) ADD jessie.tar.xz in / 121 MB750d58736b4b6cc0f9a9abe8f258cef269e3e9dceced1146503522be9f985ada 6 weeks ago /bin/sh -c #(nop) MAINTAINER Tianon Gravi <admwiggin@gmail.com> - mkimage-debootstrap.sh -t jessie.tar.xz jessie http://http.debian.net/debian 0 B511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158 9 months ago 0 B

 

使用说明:

打印指定Image中每一层Image命令行的历史记录。

logs

使用方法:

docker logs CONTAINER

使用说明:

批量打印出容器中进程的运行日志。

2.4 Dcoker Hub服务相关

login

使用方法:

docker login [OPTIONS] [SERVER]

使用说明:

登录Hub服务。

pull / push

使用方法:

docker push NAME[:TAG]

使用说明:

通过此命令分享Image到Hub服务或者自服务的Registry服务。

search

使用方法:

docker search TERM

使用说明:

通过关键字搜索分享的Image。

3. 总结

通过以上Docker命令行的详细解释,可以强化对Docker命令的全面理解。考虑到Docker命令行的发展变化非常快,读者可以参考官方的命令行解释文档更新相应的命令行解释。另外,通过以上Docker命令行的分析,可以知道Docker命令行架构设计的特点在于客户端和服务端的运行文件是同一个文件,内部实现代码应该是重用的设计。笔者希望开发者在开发类似的命令行应用时参考这样的设计,减少前后台容错的复杂度。

参考文献

[1] https://docs.docker.com/reference/commandline/cli/

[2] https://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

[3] https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation

转自 http://www.infoq.com/cn/articles/docker-command-line-quest?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部