容器是镜像的运行实例。 镜像是静态的只读文件,而容器带有运行时需要的可写文件层。
创建容器
主要有:
create
、start
、run
、wait
和logs
子命令;
新建容器 - docker create
docker create
创建的容器处于停止状态,需要docker start
启动。
C:\Users\1314y\docker-stu>docker create -it --name aaaaa ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
f3ef4ff62e0d: Pull complete Digest: sha256:a0d9e826ab87bd665cfc640598a871b748b4b70a01a4f3d174d4fb02adad07a9
Status: Downloaded newer image for ubuntu:latest
18f885c9b82de5144f43201d68e86c9cae6fc9cc07be7a0fb7caa77e5eb577bc
启动容器 - docker start
docker start
容器名称 | id
C:\Users\1314y\docker-stu>docker create --name aaaaa -it ubuntu
909e88f1892453b95431c41f55993bd90d26007e72250ccdfd4b6199c037177c
C:\Users\1314y\docker-stu>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
C:\Users\1314y\docker-stu>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
909e88f18924 ubuntu "bash" 8 seconds ago Created aaaaa
C:\Users\1314y\docker-stu>docker start aaaaa
aaaaa
C:\Users\1314y\docker-stu>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
909e88f18924 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/bash
root@6c4632681395:/# ls
bin 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 6fe4e412f6f5e955058cca0583922b010a5150bc509ed236e03b7d147fc1a60c
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
停止容器
主要有:
pause
、unpause
、stop
和container prune
子命令.
暂停容器 - docker pause
docker pause
暂停容器。docker unpause
将 paused 状态的容器恢复到运行状态。
PS C:\Users\1314y> docker run -it --name test -d ubuntu bash
1e0e455b1a04f7ca74cc8b7199a8f4eb6f0450b8471fcf0b6b2fd90c8e7f1117
PS C:\Users\1314y> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e0e455b1a04 ubuntu "bash" 7 seconds ago Up 7 seconds test
PS C:\Users\1314y> docker pause test
test
PS C:\Users\1314y> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e0e455b1a04 ubuntu "bash" 14 seconds ago Up 13 seconds (Paused) test
PS C:\Users\1314y> docker unpause test
test
PS C:\Users\1314y> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e0e455b1a04 ubuntu "bash" 42 seconds ago Up 41 seconds test
PS 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 ubuntu
912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298
PS C:\Users\1314y> docker attach 912698cbf3488965b79d2d2ab7be46d00183e1f665e612dda1845b9beca35298
root@912698cbf348:/# ls
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...]
PS C:\Users\1314y> docker exec -it 1e0e455b1a04 bash
root@1e0e455b1a04:/# w
03:20:05 up 2:58, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root@1e0e455b1a04:/# ps
PID TTY TIME CMD
9 pts/1 00:00:00 bash
19 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 my
sha256:5e7252a50f5bc960b96fc5ad9fb9d83ba2f11ed8b319f2dc4dcc0ede9f9109ee
PS C:\Users\1314y> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my 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 test
UID PID PPID C STIME TTY
TIME CMD
root 22529 22508 0 03:05 ?
00:00:00 bash
查看统计信息 - docker stats
PS C:\Users\1314y> docker stats test
sCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1e0e455b1a04 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:/root
PS C:\Users\1314y> docker exec -it test bash
root@1e0e455b1a04:/# cd /root/
root@1e0e455b1a04:~# ls
output.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
```bash
PS C:\Users\1314y> docker diff test
C /root
A /root/.bash_history
A /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 10
and 1000, or 0 to disable (default 0)
--cpu-period int Limit CPU CFS (Completely Fair
Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair
Scheduler) quota
--cpu-rt-period int Limit the CPU real-time period in
microseconds
--cpu-rt-runtime int Limit the CPU real-time runtime in
microseconds
-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 for
unlimited)
--restart string Restart policy to apply when a
container exits