# docker run [选项] [镜像名] [shell命令] [参数] docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND:一次性运行容器中命令 OPTIONS: -i, --interactive Keep STDIN open even if not attached,通常和-t 一起使用 -t, --tty 分配 pseudo-TTY,通常和-i 一起使用,注意对应的容器必须运行 shell 才支持进入 -d, --detach 后台运行容器,并返回容器 ID,默认前台运行 --name string 启动容器时会自动随机字符作为容器名,--name 指定容器名称 -h string 设置虚拟机内的 hostname --rm 退出后立即删除容器,一次性运行,下次从镜像中启动 -p, --publish list (小写p)暴露指定端口映射,为避免宿主机端口冲突,要做好端口规划 -P, --publish-all (大些P)暴露所有端口,随机,默认从 32768 开始 --dns list Set custom DNS servers --entrypoint string Overwrite the default ENTRYPOINT of the image --privileged 赋予虚拟机内的 root 真正的 root 权限,有权限宿主机,没有特殊需求不要使用 -e=[] 传递环境变量 --env-file=[] 传递环境变量,文件 --restart string 容器的重启策略,面向生产环境的启动策略 no # 默认策略,容器退出时不重启容器 on-failure # 容器非正常退出时(退出状态非 0),才会重启容器 on-failure:3 # 容器非正常退出时重启容器,最多重启 3 次 always # 容器退出时总是重启容器,设置为 always,则启动 docker 服务的时候会自动启动容器 unless-stopped # 容器退出时总是重启容器,但是不考虑在 docker 守护进程启动时就已经停止了的容器 -v,--volume list 数据卷相关
注意:容器启动后,如果容器内没有前台运行的进程,将自动退出停止
退出容器:exit 容器停止;ctrl+p+q 容器不停止
查看容器信息
查看当前存在的容器 ls
1 2 3 4 5 6 7 8 9 10
docker ps [OPTIONS] docker container ls [OPTIONS]
选项: -a, --all 查看所所有容器,包括退出状态的容器(默认只显示处于运行状态的容器) -q, --quiet Only display numeric IDs -s, --size 显示容器大小 -f, --filter 过滤,例如 `-f status=exited` -l, --latest 显示最新创建的容器 -n, --last int Show n last created containers (includes all states)(default -1)
Options: -a, --all Show all containers (default shows just running) --format string Pretty-print images using a Go template --no-stream Disable streaming stats and only pull the first result --no-trunc Do not truncate output
Options: -d, --detach Detached mode: run commandin the background --detach-keys string Override the key sequence for detaching a container -e, --env list Set environment variables -i, --interactive Keep STDIN open even if not attached --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) -w, --workdir string Working directory inside the containe
Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
传递运行命令
当docker run xxx启动容器,如果 xxx 容器中没有常驻前台的进程,xxx 会认为没什么任务,在启动后马上退出,有的服务支持前台运行,有的不支持,如果服务不支持前台运行,我们可以启动一个常驻前台的进程,阻止容器推出,常用的方式是让容器运行tail -f /etc/hosts命令,注意不要监听频繁更改的文件,避免产生不必要的磁盘 IO
范例:
1 2 3 4 5 6
# nginx前台运行,直接后台启动即可 docker container run -d nginx:1120 # alpine没有常驻前台的进程,以下两种方式均可 # 在容器内执行`/bin/sh`,然后把容器放到宿主机后台,sh是交互式命令,所以也有常驻前台的效果 docker container run -itd alpine docker run -d alpine 'tail -f /etc/hosts'