容器是镜像的运行实例。 镜像是静态的只读文件,而容器带有运行时需要的可写文件层。

创建容器

主要有:createstartrunwaitlogs子命令;

新建容器 - docker create

docker create 创建的容器处于停止状态,需要 docker start 启动。

  1. C:\Users\1314y\docker-stu>docker create -it --name aaaaa ubuntu
  2. Unable to find image 'ubuntu:latest' locally
  3. latest: Pulling from library/ubuntu
  4. f3ef4ff62e0d: Pull complete Digest: sha256:a0d9e826ab87bd665cfc640598a871b748b4b70a01a4f3d174d4fb02adad07a9
  5. Status: Downloaded newer image for ubuntu:latest
  6. 18f885c9b82de5144f43201d68e86c9cae6fc9cc07be7a0fb7caa77e5eb577bc

启动容器 - docker start

docker start 容器名称 | id

  1. C:\Users\1314y\docker-stu>docker create --name aaaaa -it ubuntu
  2. 909e88f1892453b95431c41f55993bd90d26007e72250ccdfd4b6199c037177c
  3. C:\Users\1314y\docker-stu>docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. C:\Users\1314y\docker-stu>docker ps -a
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 909e88f18924 ubuntu "bash" 8 seconds ago Created aaaaa
  8. C:\Users\1314y\docker-stu>docker start aaaaa
  9. aaaaa
  10. C:\Users\1314y\docker-stu>docker ps
  11. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  12. 909e88f18924 ubuntu "bash" 18 seconds ago Up 3 seconds aaaaa

新建并启动容器 - docker run

docker run 镜像。

当在容器内用 exit命令退出后,容器也会自动退出。 在容器内,可以按住 ctrl + c 退出容器,或者 ctrl + p + q 退出【不会停止容器】。

  1. PS C:\Users\1314y> docker run -it --name myUbuntu ubuntu /bin/bash
  2. root@6c4632681395:/# ls
  3. bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
  4. -it 解释:
  5. -t选项:让Docker 分配一个伪终端( pseudo-即)并绑定到容器的标准输入上,
  6. -i选项:则让容器的标准输入保持打开

守护态运行 - docker run -d

docker run -d ubuntu /bin/bash

  1. PS C:\Users\1314y> docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
  2. 6fe4e412f6f5e955058cca0583922b010a5150bc509ed236e03b7d147fc1a60c

查看容器输出日志 - docker logs

  1. PS C:\Users\1314y> docker logs -f 6fe4e412f6f5e955058cca0583922b010a5150bc509ed236e03b7d147fc1a60c
  2. hello world
  3. hello world
  4. hello world
  5. hello world
  6. hello world
  7. hello world
  8. hello world
  9. hello world

停止容器

主要有:pauseunpausestopcontainer prune子命令.

暂停容器 - docker pause

docker pause 暂停容器。 docker unpause 将 paused 状态的容器恢复到运行状态。

  1. PS C:\Users\1314y> docker run -it --name test -d ubuntu bash
  2. 1e0e455b1a04f7ca74cc8b7199a8f4eb6f0450b8471fcf0b6b2fd90c8e7f1117
  3. PS C:\Users\1314y> docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 1e0e455b1a04 ubuntu "bash" 7 seconds ago Up 7 seconds test
  6. PS C:\Users\1314y> docker pause test
  7. test
  8. PS C:\Users\1314y> docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. 1e0e455b1a04 ubuntu "bash" 14 seconds ago Up 13 seconds (Paused) test
  11. PS C:\Users\1314y> docker unpause test
  12. test
  13. PS C:\Users\1314y> docker ps
  14. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  15. 1e0e455b1a04 ubuntu "bash" 42 seconds ago Up 41 seconds test
  16. PS C:\Users\1314y>

终止容器 - docker stop

docker stop 容器名称 | id 。 终止后,如果执行 docker container prune会自动清除掉停止状态的容器。 也可以用 docker kill发送 SIGKILL信号强行终止容器。 docker restart重启容器。

进入容器

包含 attachexec 命令

attach 命令

docker attach 容器名称 | id。 使用 attach 命令有时候并不方便。当多个窗口同时 attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

  1. PS C:\Users\1314y> docker run -itd ubuntu
  2. 912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298
  3. PS C:\Users\1314y> docker attach 912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298
  4. root@912698cbf348:/# ls
  5. bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var

exec 命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

  1. PS C:\Users\1314y> docker exec -it 1e0e455b1a04 bash
  2. root@1e0e455b1a04:/# w
  3. 03:20:05 up 2:58, 0 users, load average: 0.00, 0.00, 0.00
  4. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  5. root@1e0e455b1a04:/# ps
  6. PID TTY TIME CMD
  7. 9 pts/1 00:00:00 bash
  8. 19 pts/1 00:00:00 ps

删除容器 - docker rm

docker rm [OPTIONS] CONTAINER [CONTAINER...]

导入和导出容器

导出容器 - docker export

导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。

docker export [OPTIONS] CONTAINER

  1. PS C:\Users\1314y> docker export -o ubu.tar test

导入容器 - docker import

import命令导人变成镜像。

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

  1. PS C:\Users\1314y> docker import ubu.tar my
  2. sha256:5e7252a50f5bc960b96fc5ad9fb9d83ba2f11ed8b319f2dc4dcc0ede9f9109ee
  3. PS C:\Users\1314y> docker images
  4. REPOSITORY TAG IMAGE ID CREATED SIZE
  5. my latest 5e7252a50f5b 25 seconds ago 72.8MB

查看容器

inspecttopstats 命令。

查看容器详情 - docker inspect

  1. PS C:\Users\1314y> docker inspect test
  2. [
  3. {
  4. "Id": "1e0e455b1a04f7ca74cc8b7199a8f4eb6f0450b8471fcf0b6b2fd90c8e7f1117",
  5. "Created": "2021-10-12T02:59:28.2263212Z",
  6. "Path": "bash",
  7. "Args": [],

查看容器内进程 - docker top

  1. PS C:\Users\1314y> docker top test
  2. UID PID PPID C STIME TTY
  3. TIME CMD
  4. root 22529 22508 0 03:05 ?
  5. 00:00:00 bash

查看统计信息 - docker stats

  1. PS C:\Users\1314y> docker stats test
  2. sCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  3. 1e0e455b1a04 test 0.00% 856KiB / 6.158GiB 0.01% 1.33kB / 0B 0B / 0B 1

其他命令

cpdiffportupdate

复制文件 - docker cp

复制容器内文件到本地 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
复制本地文件到容器内 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

  1. 复制本地文件到容器内

    1. PS C:\Users\1314y> docker cp .\output.txt test:/root
    2. PS C:\Users\1314y> docker exec -it test bash
    3. root@1e0e455b1a04:/# cd /root/
    4. root@1e0e455b1a04:~# ls
    5. output.txt
  2. 复制容器内文件到本地 ```bash PS C:\Users\1314y> docker cp test:/root/output.txt bb.txt PS C:\Users\1314y> ls bb*

  1. 目录: C:\Users\1314y

Mode LastWriteTime Length Name


-a—— 2021/10/11 14:30 53491 bb.txt

  1. <a name="gbF17"></a>
  2. ## 查看变更 - `docker diff`
  3. > docker diff CONTAINER
  4. ```bash
  5. PS C:\Users\1314y> docker diff test
  6. C /root
  7. A /root/.bash_history
  8. A /yejianhui

查看端口映射 - docker port

查看容器的端口映射情况。 docker port CONTAINER [PRIVATE_PORT[/PROTO]]

更新配置 - docker update

docker update 命令可以更新容器的一些运行时配置,主要是一些资源限制份额。 格式: docker update [OPTIONS] CONTAINER [CONTAINER...] docker update --help 查看命令帮助

支持的选项

  1. Options:
  2. --blkio-weight uint16 Block IO (relative weight), between 10
  3. and 1000, or 0 to disable (default 0)
  4. --cpu-period int Limit CPU CFS (Completely Fair
  5. Scheduler) period
  6. --cpu-quota int Limit CPU CFS (Completely Fair
  7. Scheduler) quota
  8. --cpu-rt-period int Limit the CPU real-time period in
  9. microseconds
  10. --cpu-rt-runtime int Limit the CPU real-time runtime in
  11. microseconds
  12. -c, --cpu-shares int CPU shares (relative weight)
  13. --cpus decimal Number of CPUs
  14. --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
  15. --cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
  16. --kernel-memory bytes Kernel memory limit
  17. -m, --memory bytes Memory limit
  18. --memory-reservation bytes Memory soft limit
  19. --memory-swap bytes Swap limit equal to memory plus swap:
  20. '-1' to enable unlimited swap
  21. --pids-limit int Tune container pids limit (set -1 for
  22. unlimited)
  23. --restart string Restart policy to apply when a
  24. container exits