您的位置:首页 > 运维架构 > Docker

Docker run 命令实战

2017-06-08 11:21 281 查看
Docker run 命令用来创建一个新的容器并运行,相当于 docker create和docker start的组合。

用 docker run -help可以显示命令的使用说明。

docker run --help

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

Run a command in a new container

Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
--blkio-weight value Block IO (relative weight), between 10 and 1000
--blkio-weight-device value Block IO weight (relative device weight) (default [])
--cap-add value Add Linux capabilities (default [])
--cap-drop value Drop Linux capabilities (default [])
--cgroup-parent string Optional parent cgroup for the container
--cidfile string Write the container ID to the file
--cpu-percent int CPU percent (Windows only)
--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
-d, --detach Run container in background and print container ID
--detach-keys string Override the key sequence for detaching a container
--device value Add a host device to the container (default [])
--device-read-bps value Limit read rate (bytes per second) from a device (default [])
--device-read-iops value Limit read rate (IO per second) from a device (default [])
--device-write-bps value Limit write rate (bytes per second) to a device (default [])
--device-write-iops value Limit write rate (IO per second) to a device (default [])
--disable-content-trust Skip image verification (default true)
--dns value Set custom DNS servers (default [])
--dns-opt value Set DNS options (default [])
--dns-search value Set custom DNS search domains (default [])
--entrypoint string Overwrite the default ENTRYPOINT of the image
-e, --env value Set environment variables (default [])
--env-file value Read in a file of environment variables (default [])
--expose value Expose a port or a range of ports (default [])
--group-add value Add additional groups to join (default [])
--health-cmd string Command to run to check health
--health-interval duration Time between running the check (default 0s)
--health-retries int Consecutive failures needed to report unhealthy
--health-timeout duration Maximum time to allow one check to run (default 0s)
--help Print usage
-h, --hostname string Container host name
-i, --interactive Keep STDIN open even if not attached
--io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only)
--io-maxiops uint Maximum IOps limit for the system drive (Windows only)
--ip string Container IPv4 address (e.g. 172.30.100.104)
--ip6 string Container IPv6 address (e.g. 2001:db8::33)
--ipc string IPC namespace to use
--isolation string Container isolation technology
--kernel-memory string Kernel memory limit
-l, --label value Set meta data on a container (default [])
--label-file value Read in a line delimited file of labels (default [])
--link value Add link to another container (default [])
--link-local-ip value Container IPv4/IPv6 link-local addresses (default [])
--log-driver string Logging driver for the container
--log-opt value Log driver options (default [])
--mac-address string Container MAC address (e.g. 92:d0:c6:0a:29:33)
-m, --memory string Memory limit
--memory-reservation string Memory soft limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
--name string Assign a name to the container
--network string Connect a container to a network (default "default")
--network-alias value Add network-scoped alias for the container (default [])
--no-healthcheck Disable any container-specified HEALTHCHECK
--oom-kill-disable Disable OOM Killer
--oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
--pid string PID namespace to use
--pids-limit int Tune container pids limit (set -1 for unlimited)
--privileged Give extended privileges to this container
-p, --publish value Publish a container's port(s) to the host (default [])
-P, --publish-all Publish all exposed ports to random ports
--read-only Mount the container's root filesystem as read only
--restart string Restart policy to apply when a container exits (default "no")
--rm Automatically remove the container when it exits
--runtime string Runtime to use for this container
--security-opt value Security Options (default [])
--shm-size string Size of /dev/shm, default value is 64MB
--sig-proxy Proxy received signals to the process (default true)
--stop-signal string Signal to stop a container, SIGTERM by default (default "SIGTERM")
--storage-opt value Storage driver options for the container (default [])
--sysctl value Sysctl options (default map[])
--tmpfs value Mount a tmpfs directory (default [])
-t, --tty Allocate a pseudo-TTY
--ulimit value Ulimit options (default [])
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
--userns string User namespace to use
--uts string UTS namespace to use
-v, --volume value Bind mount a volume (default [])
--volume-driver string Optional volume driver for the container
--volumes-from value Mount volumes from the specified container(s) (default [])
-w, --workdir string Working directory inside the container运行容器,一般有两种场景,1)前台交互模式,2)后台运行模式。
前台交互模式,例如:

docker run --rm -it oliver/centos:v7.2 /bin/bash参数 --rm 表示运行结束后删除容器实例,-it表示交互并绑定tty。
后台运行模式,需要使用-d参数。这种模式下运行的一般是一些后台服务应用,如各类web应用。它们一般会涉及:端口、存储卷、环境变量、与其它容器连接等参数的设定,这种情形,run命令也会比较复杂,但涉及到的参数主要有 -d、--name、-e、-v、-p、--link、--label等。

以下命令运行4个容器,elasticsearch 、kibana、fluentd-pilot和tomcat,功能是、fluentd-pilot收集tomcat的日志到存储到elasticsearch。

docker run -d --name="quickstart_elasticsearch_1" -p 9200:9200 \
elasticsearch

docker run -d --name="quickstart_kibana_1" -p 5601:5601 \
-e ELASTICSEARCH_URL="http://elasticsearch:9200/" \
--link=quickstart_elasticsearch_1:elasticsearch \
--label aliyun.routing.port_5601=kibana \
kibana

docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /:/host \
-e FLUENTD_OUTPUT=elasticsearch \
-e ELASTICSEARCH_HOST=elasticsearch \
-e ELASTICSEARCH_PORT=9200 \
--link=quickstart_elasticsearch_1:elasticsearch \
registry.cn-hangzhou.aliyuncs.com/acs-sample/fluentd-pilot:latest

docker run -d -p 10080:8080 \
-v /usr/local/tomcat/logs \
--label aliyun.logs.catalina=stdout \
--label aliyun.logs.access=/usr/local/tomcat/logs/localhost_access_log.*.txt \
tomcat第一个容器用--name指定了容器的名称,在同一台机器上这是唯一的,-p指定了端口;第二个容器用-e指定环境变量,用--link容器连接了第一个容器,这样在第二个容器的/etc/hosts文件下会有一条记录表示第一个容器的ip和名称,--label是元数据;第三个容器用-v指定了卷。
其它相关命令

curl命令,对应运行web应用的容器,可以用来检查,web应用是否正常工作,如

host=127.0.0.1
http_code=$(curl -m 1 -s -o /dev/null/ -w '%{http_code}' http://$host:9200/)docker inspect 命令,查看容器的各项参数,不带--format显示所有的数据。



docker ps 命令,列出运行的容器,docker ps 列出所有的容器,包括不运行的。

docker stop 命令,停止运行的容器。

docker rm 命令,删除已停止运行的容器。

docker logs 命令,查看容器的日志。

docker exec命令,进入容器的内部,如:

docker exec -it <容器id> /bin/bash
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: