1. 什么是容器?
容器是镜像的运转实体。容器是根据镜像创立的可运转实例,而且单独存在,一个镜像可以创立出多个容器。容器有自己独立的命名空间阻隔和资源约束。也就是说在容器内部,无法看到主机上的进程、环境变量、网络等信息,这是容器与直接运转在主机上进程的本质区别。
2. 操作容器的指令
2.1 docker run
- 功用:创立一个新的容器并运转一个指令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
参数:
- -d: 后台运转容器,并回来容器 ID
- -i: 以交互形式运转容器,一般与 -t 一起运用
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格局为: 主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,一般与 -i 一起运用
- –name “……”: 为容器指定一个称号
- -h “mars”: 指定容器的 hostname
- -e username=”ritchie”: 设置环境变量
- –cpuset-cpus=”0-2″ or –cpuset-cpus=”0,1,2″: 绑定容器到指定 CPU 运转
- -m :设置容器运用内存最大值
- –network=”……”: 指定容器的网络连接类型
- –link=[]: 增加链接到另一个容器
- –volume , -v: 绑定一个卷
- –rm :shell 退出的时分主动删去容器
-
-i、-t 参数
# 拉取一个 centos:7 的镜像
ocker pull centos:7
# 发动容器,并进入该容器的终端,并将它的姓名改为 mycentos2
docker run -it --name mycentos2 centos:7
- CONTAINER ID: 容器的唯一标识符,一般是一个长字符串。
- IMAGE: 容器所根据的镜像。在这个比如中,运用的是 CentOS 7 镜像。
- COMMAND: 运转容器时履行的指令。
- CREATED: 容器创立的时刻。
- STATUS: 容器的状况。在这个比如中,”Exited (0)” 表示容器现已停止运转,括号中的数字表示容器退出时的状况码。
- PORTS: 容器的端口映射情况。
- NAMES: 容器的称号。
- -p、-P 参数
因为容器里使用程序端口与外面是阻隔的,所以需要将容器里的端口与主机的端口相映射。
# 将主机的 8081 端口与 nginx 的默许端口相绑定,并将 nginx 后台运转
docker run -d -p 8081:80 nginx:1.23.3
浏览器输入 IP 地址与端口:
拜访 nginx 成功!
- -h
2.2 docker ps
- 功用:列出容器
docker ps [OPTIONS]
或
docker container ls, docker container list, docker container ps
-
参数:
- -a :显现一切的容器,包含未运转的。
- -f :根据条件过滤显现的内容。
- –format :指定回来值的模板文件。如 json 或者 table
- -l :显现 latest 的容器。
- -n :列出最近创立的 n 个容器。
- –no-trunc :不截断输出。
-
-a
- -f
- -format
2.3 docker create
- 功用:创立一个容器可是不发动它。
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
- 参数:
- -i: 以交互形式运转容器,一般与 -t 一起运用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格局为: 主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,一般与 -i 一起运用;
- –name=”……”: 为容器指定一个称号;
- -h “mars”: 指定容器的 hostname;
- -e username=”ritchie”: 设置环境变量;
- –cpuset-cpus=”0-2″ or –cpuset-cpus=”0,1,2″: 绑定容器到指定 CPU 运转;
- -m :设置容器运用内存最大值;
- –network=”bridge”: 指定容器的网络连接类型;
- –link=[]: 增加链接到另一个容器;
- –volume , -v: 绑定一个卷
- –rm :shell 退出的时分主动删去容器
2.4 docker logs
- 功用:检查容器日志
docker logs [OPTIONS] CONTAINER
- 参数:
- -f: 跟踪日志输出
- –since :显现某个开始时刻的一切日志
- -t: 显现时刻戳
- -n,–tail :仅列出最新 N 条容器日志
2.5 docker attach
- 功用:连接到正在运转中的容器
docker attach [OPTIONS] CONTAINER
- 参数:
- –sig-proxy:是否将一切信号署理,默许是 true,假如设置为 false,退出的话不会影响容器,否则退出会导致容器退出。
2.6 docker exec
- 功用:在容器中履行指令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
- 参数:
- -d :分离形式: 在后台运转
- -i :即使没有附加也坚持 STDIN 翻开
- -t :分配一个伪终端
- -e :设置环境变量
- -u,–user :指定用户 “<name|uid>[:<group|gid>]”
- -w,–workdir:指定作业目录
#在容器中以交互形式翻开 shell:
docker exec -it mynginx bash
2.7 docker start
- 功用:发动停止的容器
docker start CONTAINER [CONTAINER...]
2.8 docker stop
- 功用:停止运转的容器
docker stop CONTAINER [CONTAINER...]
2.9 docker restart
- 功用:重启容器
docker restart CONTAINER [CONTAINER...]
2.10 docker kill
- 功用:强制退出容器
docker kill CONTAINER [CONTAINER...]
2.11 docker top
- 功用:检查容器中运转的进程信息,支撑 ps 指令参数。
ocker top CONTAINER [ps OPTIONS]
2.12 docker stats
- 功用:显现容器资源的运用情况,包含: CPU、内存、网络 I/O 等。
docker stats [OPTIONS] [CONTAINER...]
- 参数:
- –all , -a :显现一切的容器,包含未运转的。
- –format :指定回来值的模板文件。如 table,json
- –no-stream :展示当时状况就直接退出了,不再实时更新。
- –no-trunc :不截断输出。
-
CONTAINER ID
与NAME
: 容器 ID 与称号。 -
CPU %
与MEM %
: 容器运用的 CPU 和内存的百分比。 -
MEM USAGE / LIMIT
: 容器正在运用的总内存,以及允许运用的内存总量。 -
NET I/O
: 容器经过其网络接口发送和接纳的数据量。 -
BLOCK I/O
: 容器从主机上的块设备读取和写入的数据量。 -
PIDS
: 容器创立的进程或线程数
2.13 docker container inspect
- 功用:检查容器详细信息
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
- 参数:
- -f :指定回来值的模板文件。如 table、 json
- -s :显现总的文件巨细
2.14 docker port
- 功用:用于列出指定的容器的端口映射。
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
2.15 docker cp
- 功用:在容器和宿主机之间复制文件
# 把容器中的文件复制到宿主机的目录下
docker cp 容器ID或称号:宿主机的文件 宿主机的目录
# 把宿主机中的文件复制到容器中的某个目录下
docker cp 宿主机的文件 容器ID或称号:容器的目录
2.16 docker diff
- 功用:检查容器里文件结构的更改。
docker diff CONTAINER
2.17 docker commit
- 功用:从容器创立一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- 参数:
- -a :提交的镜像作者;
- -c :运用 Dockerfile 指令来创立镜像;可以修改发动指令
- -m :提交时的阐明文字;
- -p :在 commit 时,将容器暂停
2.18 docker pause
- 功用:暂停容器中一切的进程。
docker pause CONTAINER [CONTAINER...]
2.19 docker unpause
- 功用:康复容器中一切的进程。
docker unpause CONTAINER [CONTAINER...]
2.20 docker rm
- 功用:删去停止的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
- 参数:-f :经过 SIGKILL 信号强制删去一个运转中的容器。
#删去一切停止的容器
docker rm $(docker ps -a -q)
2.21 docker export
- 功用:导出容器内容为 tar 文件。
docker export [OPTIONS] CONTAINER
# 导出 nginx 为 tar
docker export -o mynginx202203.tar mynginx
2.22 docker import
- 功用:将 export 导出的 tar 文件创立一个镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
- 参数:
- -c :使用 docker 指令创立镜像。
- -m :提交时的阐明文字。
docker import mynginx202203.tar mynginx:v4
2.23 docker rename
- 功用:重命名容器
docker rename CONTAINER NEW_NAME
2.24 docker container prune
- 功用:删去一切停止的容器
docker container prune [OPTIONS]
- 参数:-f, –force:不提示是否进行确认