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