容器是镜像的运行实例。 镜像是静态的只读文件,而容器带有运行时需要的可写文件层。
创建容器
主要有:
create、start、run、wait和logs子命令;
新建容器 - docker create
docker create创建的容器处于停止状态,需要docker start启动。
C:\Users\1314y\docker-stu>docker create -it --name aaaaa ubuntuUnable to find image 'ubuntu:latest' locallylatest: Pulling from library/ubuntuf3ef4ff62e0d: Pull complete Digest: sha256:a0d9e826ab87bd665cfc640598a871b748b4b70a01a4f3d174d4fb02adad07a9Status: Downloaded newer image for ubuntu:latest18f885c9b82de5144f43201d68e86c9cae6fc9cc07be7a0fb7caa77e5eb577bc
启动容器 - docker start
docker start容器名称 | id
C:\Users\1314y\docker-stu>docker create --name aaaaa -it ubuntu909e88f1892453b95431c41f55993bd90d26007e72250ccdfd4b6199c037177cC:\Users\1314y\docker-stu>docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESC:\Users\1314y\docker-stu>docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES909e88f18924 ubuntu "bash" 8 seconds ago Created aaaaaC:\Users\1314y\docker-stu>docker start aaaaaaaaaaC:\Users\1314y\docker-stu>docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES909e88f18924 ubuntu "bash" 18 seconds ago Up 3 seconds aaaaa
新建并启动容器 - docker run
docker run镜像。当在容器内用
exit命令退出后,容器也会自动退出。 在容器内,可以按住ctrl + c退出容器,或者ctrl + p + q退出【不会停止容器】。
PS C:\Users\1314y> docker run -it --name myUbuntu ubuntu /bin/bashroot@6c4632681395:/# lsbin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var-it 解释:-t选项:让Docker 分配一个伪终端( pseudo-即)并绑定到容器的标准输入上,-i选项:则让容器的标准输入保持打开
守护态运行 - docker run -d
docker run -d ubuntu /bin/bash
PS C:\Users\1314y> docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"6fe4e412f6f5e955058cca0583922b010a5150bc509ed236e03b7d147fc1a60c
查看容器输出日志 - docker logs
PS C:\Users\1314y> docker logs -f 6fe4e412f6f5e955058cca0583922b010a5150bc509ed236e03b7d147fc1a60chello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world
停止容器
主要有:
pause、unpause、stop和container prune子命令.
暂停容器 - docker pause
docker pause暂停容器。docker unpause将 paused 状态的容器恢复到运行状态。
PS C:\Users\1314y> docker run -it --name test -d ubuntu bash1e0e455b1a04f7ca74cc8b7199a8f4eb6f0450b8471fcf0b6b2fd90c8e7f1117PS C:\Users\1314y> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1e0e455b1a04 ubuntu "bash" 7 seconds ago Up 7 seconds testPS C:\Users\1314y> docker pause testtestPS C:\Users\1314y> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1e0e455b1a04 ubuntu "bash" 14 seconds ago Up 13 seconds (Paused) testPS C:\Users\1314y> docker unpause testtestPS C:\Users\1314y> docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1e0e455b1a04 ubuntu "bash" 42 seconds ago Up 41 seconds testPS C:\Users\1314y>
终止容器 - docker stop
docker stop容器名称 | id 。 终止后,如果执行docker container prune会自动清除掉停止状态的容器。 也可以用docker kill发送SIGKILL信号强行终止容器。docker restart重启容器。
进入容器
包含
attach和exec命令
attach 命令
docker attach容器名称 | id。 使用attach命令有时候并不方便。当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
PS C:\Users\1314y> docker run -itd ubuntu912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298PS C:\Users\1314y> docker attach 912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298root@912698cbf348:/# lsbin 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...]
PS C:\Users\1314y> docker exec -it 1e0e455b1a04 bashroot@1e0e455b1a04:/# w03:20:05 up 2:58, 0 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot@1e0e455b1a04:/# psPID TTY TIME CMD9 pts/1 00:00:00 bash19 pts/1 00:00:00 ps
删除容器 - docker rm
docker rm [OPTIONS] CONTAINER [CONTAINER...]
导入和导出容器
导出容器 - docker export
导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。
docker export [OPTIONS] CONTAINER
PS C:\Users\1314y> docker export -o ubu.tar test
导入容器 - docker import
import命令导人变成镜像。docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
PS C:\Users\1314y> docker import ubu.tar mysha256:5e7252a50f5bc960b96fc5ad9fb9d83ba2f11ed8b319f2dc4dcc0ede9f9109eePS C:\Users\1314y> docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmy latest 5e7252a50f5b 25 seconds ago 72.8MB
查看容器
inspect、top和stats命令。
查看容器详情 - docker inspect
PS C:\Users\1314y> docker inspect test[{"Id": "1e0e455b1a04f7ca74cc8b7199a8f4eb6f0450b8471fcf0b6b2fd90c8e7f1117","Created": "2021-10-12T02:59:28.2263212Z","Path": "bash","Args": [],
查看容器内进程 - docker top
PS C:\Users\1314y> docker top testUID PID PPID C STIME TTYTIME CMDroot 22529 22508 0 03:05 ?00:00:00 bash
查看统计信息 - docker stats
PS C:\Users\1314y> docker stats testsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS1e0e455b1a04 test 0.00% 856KiB / 6.158GiB 0.01% 1.33kB / 0B 0B / 0B 1
其他命令
cp、diff、port和update
复制文件 - docker cp
复制容器内文件到本地 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
复制本地文件到容器内 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
复制本地文件到容器内
PS C:\Users\1314y> docker cp .\output.txt test:/rootPS C:\Users\1314y> docker exec -it test bashroot@1e0e455b1a04:/# cd /root/root@1e0e455b1a04:~# lsoutput.txt
复制容器内文件到本地 ```bash PS C:\Users\1314y> docker cp test:/root/output.txt bb.txt PS C:\Users\1314y> ls bb*
目录: C:\Users\1314y
Mode LastWriteTime Length Name
-a—— 2021/10/11 14:30 53491 bb.txt
<a name="gbF17"></a>## 查看变更 - `docker diff`> docker diff CONTAINER```bashPS C:\Users\1314y> docker diff testC /rootA /root/.bash_historyA /yejianhui
查看端口映射 - docker port
查看容器的端口映射情况。 docker port CONTAINER [PRIVATE_PORT[/PROTO]]
更新配置 - docker update
docker update命令可以更新容器的一些运行时配置,主要是一些资源限制份额。 格式:docker update [OPTIONS] CONTAINER [CONTAINER...]docker update --help查看命令帮助
支持的选项
Options:--blkio-weight uint16 Block IO (relative weight), between 10and 1000, or 0 to disable (default 0)--cpu-period int Limit CPU CFS (Completely FairScheduler) period--cpu-quota int Limit CPU CFS (Completely FairScheduler) quota--cpu-rt-period int Limit the CPU real-time period inmicroseconds--cpu-rt-runtime int Limit the CPU real-time runtime inmicroseconds-c, --cpu-shares int CPU shares (relative weight)--cpus decimal Number of CPUs--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)--kernel-memory bytes Kernel memory limit-m, --memory bytes Memory limit--memory-reservation bytes Memory soft limit--memory-swap bytes Swap limit equal to memory plus swap:'-1' to enable unlimited swap--pids-limit int Tune container pids limit (set -1 forunlimited)--restart string Restart policy to apply when acontainer exits
