设为首页收藏本站

LUPA开源社区

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

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

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

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


Docker后台进程参数清单如下表:

参数

解释

--api-enable-cors=false

开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开发的上层应用提供了支持。

-b, --bridge=""

挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none 可以停用容器里的网络。

--bip=""

使用 CIDR 地址来设定网络桥的 IP。注意,此参数和 -b 不能一起使用。

-D, --debug=false

开启Debug模式。例如:docker -d -D

-d, --daemon=false

开启Daemon模式。

--dns=[]

强制容器使用DNS服务器。例如: docker -d --dns 8.8.8.8

--dns-search=[]

强制容器使用指定的DNS搜索域名。例如: docker -d --dns-search example.com

-e, --exec-driver="native"

强制容器使用指定的运行时驱动。例如:docker -d -e lxc

-G, --group="docker"

在后台运行模式下,赋予指定的Group到相应的unix socket上。注意,当此参数 --group 赋予空字符串时,将去除组信息。

-g, --graph="/var/lib/docker"

配置Docker运行时根目录

-H, --host=[]

在后台模式下指定socket绑定,可以绑定一个或多个 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。例如:

$ docker -H tcp://0.0.0.0:2375 ps 或者

$ export DOCKER_HOST="tcp://0.0.0.0:2375"
$ docker ps

--icc=true

启用内联容器的通信。

--ip="0.0.0.0"

容器绑定IP时使用的默认IP地址

--ip-forward=true

启动容器的 net.ipv4.ip_forward

--iptables=true

启动Docker容器自定义的iptable规则

--mtu=0

设置容器网络的MTU值,如果没有这个参数,选用默认 route MTU,如果没有默认route,就设置成常量值 1500。

-p, --pidfile="/var/run/docker.pid"

后台进程PID文件路径。

-r, --restart=true

重启之前运行中的容器

-s, --storage-driver=""

强制容器运行时使用指定的存储驱动,例如,指定使用devicemapper, 可以这样:

docker -d -s devicemapper

--selinux-enabled=false

启用selinux支持

--storage-opt=[]

配置存储驱动的参数

--tls=false

启动TLS认证开关

--tlscacert="/Users/dxiao/.docker/ca.pem"

通过CA认证过的的certificate文件路径

--tlscert="/Users/dxiao/.docker/cert.pem"

TLS的certificate文件路径

--tlskey="/Users/dxiao/.docker/key.pem"

TLS的key文件路径

--tlsverify=false

使用TLS并做后台进程与客户端通讯的验证

-v, --version=false

显示版本信息

注意,其中带有[] 的启动参数可以指定多次,例如

$ docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash

2. Docker命令行探秘

2.1 环境信息相关

info

使用方法: docker info

例子:

[fedora@docker-devel-cli docker]$ sudo docker -D infoContainers: 0Images: 32Storage Driver: devicemapper Pool Name: docker-252:1-130159-pool Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 1616.9 Mb Data Space Total: 102400.0 Mb Metadata Space Used: 2.4 Mb Metadata Space Total: 2048.0 MbExecution Driver: native-0.2Kernel Version: 3.11.10-301.fc20.x86_64Debug mode (server): falseDebug mode (client): trueFds: 11Goroutines: 14EventsListeners: 0Init SHA1: 2c5adb59737b8a01fa3fb968519a43fe140bc9c9Init Path: /usr/libexec/docker/dockerinitSockets: [fd://]

使用说明:

这个命令在开发者报告Bug时会非常有用,结合docker vesion一起,可以随时使用这个命令把本地的配置信息提供出来,方便Docker的开发者快速定位问题。

version

使用方法: docker version

使用说明:

显示Docker的版本号,API版本号,Git commit, Docker客户端和后台进程的Go版本号。

2.2 系统运维相关

attach

使用方法: docker attach [OPTIONS] CONTAINER

例子:

$ ID=$(sudo docker run -d ubuntu /usr/bin/top -b)$ sudo docker attach $IDtop - 17:21:49 up  5:53,  0 users,  load average: 0.63, 1.15, 0.78Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie%Cpu(s):  1.0 us,  0.7 sy,  0.0 ni, 97.7 id,  0.7 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem:   2051644 total,   723700 used,  1327944 free,    33032 buffersKiB Swap:   0 total,   0 used,  0 free.   565836 cached Mem  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND    1 root      20   0   19748   1280   1008 R  0.0  0.1   0:00.04 top$ sudo docker stop $ID

使用说明:

使用这个命令可以挂载正在后台运行的容器,在开发应用的过程中运用这个命令可以随时观察容器內进程的运行状况。开发者在开发应用的场景中,这个命令是一个非常有用的命令。

build

使用方法:docker build [OPTIONS] PATH | URL | -

例子:

$ docker build .Uploading context 18.829 MBUploading contextStep 0 : FROM busybox ---> 769b9341d937Step 1 : CMD echo Hello world ---> Using cache ---> 99cc1ad10469Successfully built 99cc1ad10469

使用说明:

这个命令是从源码构建新Image的命令。因为Image是分层的,最关键的Base Image是如何构建的是用户比较关心的,Docker官方文档给出了构建方法,请参考这里

commit

使用方法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

例子:

$ sudo docker psID                  IMAGE               COMMAND             CREATED             STATUS              PORTSc3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours$ docker commit c3f279d17e0a  SvenDowideit/testimage:version3f5283438590d$ docker images | headREPOSITORY                        TAG                 ID                  CREATED             VIRTUAL SIZESvenDowideit/testimage            version3            f5283438590d        16 seconds ago      335.7 MB

使用说明:

这个命令的用处在于把有修改的container提交成新的Image,然后导出此Imange分发给其他场景中调试使用。Docker官方的建议是,当你在调试完Image的问题后,应该写一个新的Dockerfile文件来维护此Image。commit命令仅是一个临时创建Imange的辅助命令。

cp

使用方法: cp CONTAINER:PATH HOSTPATH

使用说明:

使用cp可以把容器內的文件复制到Host主机上。这个命令在开发者开发应用的场景下,会需要把运行程序产生的结果复制出来的需求,在这个情况下就可以使用这个cp命令。

diff

使用方法:docker diff CONTAINER

例子:

$ sudo docker diff 7bb0e258aefeC /devA /dev/kmsgC /etcA /etc/mtabA /goA /go/srcA /go/src/github.comA /go/src/github.com/dotcloud....

使用说明:

diff会列出3种容器内文件状态变化(A - Add, D - Delete, C - Change )的列表清单。构建Image的过程中需要的调试指令。

export

使用方法:docker export CONTAINER

例子:

$ sudo docker export red_panda > latest.tar

使用说明:

把容器系统文件打包并导出来,方便分发给其他场景使用。

images

使用方法:docker images [OPTIONS] [NAME]

例子:

$ sudo docker images | headREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE<none> <none> 77af4d6b9913 19 hours ago 1.089 GBcommittest latest b6fa739cedf5 19 hours ago 1.089 GB<none> <none> 78a85c484f71 19 hours ago 1.089 GB$ docker latest 30557a29d5ab 20 hours ago 1.089 GB<none> <none> 0124422dd9f9 20 hours ago 1.089 GB<none> <none> 18ad6fad3402 22 hours ago 1.082 GB<none> <none> f9f1e26352f0 23 hours ago 1.089 GBtryout latest 2629d1fa0b81 23 hours ago 131.5 MB<none> <none> 5ed6274db6ce 24 hours ago 1.089 GB

使用说明:

Docker Image是多层结构的,默认只显示最顶层的Image。不显示的中间层默认是为了增加可复用性、减少磁盘使用空间,加快build构建的速度的功能,一般用户不需要关心这个细节。

import / save / load

使用方法:

docker import URL|- [REPOSITORY[:TAG]]docker save IMAGEdocker load

使用说明:

这一组命令是系统运维里非常关键的命令。加载(两种方法: import, load),导出(一种方法: save)容器系统文件。

inspect

使用方法:

docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]

例子:

$ sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' $INSTANCE_ID

使用说明:

查看容器运行时详细信息的命令。了解一个Image或者Container的完整构建信息就可以通过这个命令实现。

kill

使用方法:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

使用说明:

杀掉容器的进程。


酷毙

雷人

鲜花

鸡蛋

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

最新评论

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

返回顶部