Docker 入门 3 容器基本操作

启动容器

单次启动容器

docker run [image] [命令]

交互式容器

docker run -i -t <image> /bin/bash
  • -i : --interative=true | fasle ,默认是 false,告诉 docher 守护进程为容器始终打开标准输入
  • -t :--tty=true | false ,默认是 false,为容器创建一个伪 tty 终端
  • /bin/bash:在容器启动时运行 bash 命令

自定义容器名

docker run --name=<自定义名> -i -t <image> /bin/bash

第一次启动

docker run -i -t ubuntu /bin/bash

第一次启动尚未用过的容器(比如:安装完 Docker 第一次创建 Ubuntu 容器),会提示无法在本地找到映像“ubuntu:最新版” ,然后执行下载:

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
423ae2b273f4: Pull complete
de83a2304fa1: Pull complete
f9a83bce3af0: Pull complete
b6b53be908de: Pull complete
Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df
Status: Downloaded newer image for ubuntu:latest
root@e4e83623d3a0:/#

可以看到容器 id 为:e4e83623d3a0


以守护态运行容器

交互式容器转守护态

docker run -i -t --name=ubuntu_test [image] /bin/bash

以守护形式运行该容器,前输入 [Ctrl+P] ,再输入 [Ctrl+Q]

以守护态启动容器

docker run -d [-i] [-t] [id/容器名] [/bin/bash]
  • -d :后台启动
  • 其余参数同交互式创建

创建成功会返回容器的长id,过程如下:

$ docker run -d ubuntu
4021afee76279836d4b497b55a8e921f1ade8e993bebfe0f8a02b799a2a7df7a

查看容器列表

docker ps [-a] [-l]
  • 无参数:docker ps 显示当前运行的容器,如果容器停止了,表格为空。
  • -a :显示所有容器
  • -l :显示最新 创建 的容器

查看容器信息

docker inspect [CONTAINER NAME/ID]

停止和启动停止容器

暂停容器

docker pause [CONTAINER NAME/ID]

终止容器

docker stop [CONTAINER NAME/ID]

kill 命令也能终止容器,为什么不推荐使用它呢?

stop 支持“优雅退出”。先发送 SIGTERM=19 信号,在一段时间之后(10s)再发送 SIGKILL=9 信号。Docker 内部的应用程序可以接收 SIGTERM=19 信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。

kill 则发送 SIGKILL=9 信号,应用程序直接退出。

启动停止容器

docker start [-i] [CONTAINER NAME/ID]
  • -i :交互方式启动

重启容器

docker restart [CONTAINER NAME/ID]

过程:先 stop 终止,再 start 启动。

进入容器

推荐使用 exec 命令进入容器。

exec

exec 用以在容器中执行任意命令,在运行容器中启动新进程。

docker exec [-d] [-i] [-t] [CONTAINER NAME/ID] [COMMAND] [ARG]

进入容器:

docker exec -it [CONTAINER NAME/ID] /bin/bash
  • 打开容器的一个新的 bash 终端,并以 -it 保持标准输入打开。

    不加 -it/bin/bash ,则只执行一次命令并输出。示例:

    $ docker exec blivechat ls
    Dockerfile
    $ 
    

attach

docker attach [OPTIONS] [CONTAINER NAME/ID]
  • Options:
          --detach-keys string   指定推出 attach 模式的快捷键序列
          --no-stdin             是否打开标准输出
          --sig-proxy            是否代理收到的系统信号给应用程序
    

注意:多个 attach 同时访问时,其中一个进行操作,所有 attach 都同步显示。当然,单个阻塞全部阻塞。

查看容器输出、日志

docker logs [-f] [-t] [--tail] [CONTAINER NAME/ID]
  • 无参数:不指定,返回所有日志

  • -f :--follow=true | false ,默认为 false ,一直跟踪日志变化并返回结果。实时返回,Ctrl+C 停止返回。

  • -t :--timestamps=true | false ,默认为 false,在返回结果上加上时间戳

  • --tail :后跟需返回的日志数量。

查看容器进程

docker top [CONTAINER NAME/ID]

复制文件

docker cp [FILE] [CONTAINER NAME/ID]:[PATH]

[FILE] 为宿主机文件, [CONTAINER NAME/ID]:[PATH] 为指定的容器存储文件的目标路径。

查看端口映射

docker port [CONTAINER NAME/ID]

更新配置

docker update [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS 说明

名称 描述
--blkio-weight 阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止)
--cpu-period 限制CPU CFS(完全公平的调度程序)期限
--cpu-quota 限制CPU CFS(完全公平的调度程序)配额
--cpu-rt-period API 1.25+,将CPU实时时间限制为微秒
--cpu-rt-runtime API 1.25+,将CPU实时运行时间限制为微秒
--cpu-shares, -c CPU份额(相对权重)
--cpus API 1.29+,CPU数量
--cpuset-cpus 允许执行的CPU(0-3,0,1)
--cpuset-mem 允许执行的MEM(0-3,0,1)
--kernel-memory 内核内存限制
--memory-swap 交换限制等于内存加交换,“-1”以启用无限交换
--memory-reservatio 内存软限制
--memory, -m 内存限制
--pids-limit API 1.40+,调节容器pids限制(-1表示无限制)
--restart 容器退出时重新启动策略以应用

更多用法请查看:https://docs.docker.com/engine/reference/commandline/update/

本引用段落来自(https://blog.lanweihong.com/posts/26195/)。

原文地址:https://www.cnblogs.com/Yogile/p/12507742.html