镜像仓库常用指令:Docker 镜像仓库是什么?有哪些镜像仓库命令? - 掘金 (juejin.cn)
镜像常用指令:操作 Docker 镜像的常用命令 - 掘金 (juejin.cn)
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
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f7bc0f1bd3ec49968d72e666c862edf5~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=828&h=104&s=108761&e=png&b=223d4f)
![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65057f388924490a916cb8cba800d7b2~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=999&h=123&s=136903&e=png&b=1a2e3f)
CONTAINER ID: 容器的唯一标识符,通常是一个长字符串。
IMAGE: 容器所基于的镜像。在这个例子中,使用的是 CentOS 7 镜像。
COMMAND: 运行容器时执行的命令。
CREATED: 容器创建的时间。
STATUS: 容器的状态。在这个例子中,"Exited (0)" 表示容器已经停止运行,括号中的数字表示容器退出时的状态码。
PORTS: 容器的端口映射情况。
NAMES: 容器的名称。
-p、-P 参数
由于容器里应用程序端口与外面是隔离的,所以需要将容器里的端口与主机的端口相映射。
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/13cea8c40190487780cfe94e308f3a34~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=6235&h=5131&s=634607&e=png&b=bcf7c6)
# 将主机的 8081 端口与 nginx 的默认端口相绑定,并将 nginx 后台运行
docker run -d -p 8081:80 nginx:1.23.3
浏览器输入 IP 地址与端口:
![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/651b1612060a41b28ba0d4293ffef188~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1101&h=533&s=45885&e=png&b=fbfbfb)
访问 nginx 成功!
-h
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5db704751699483eb94100930c88291f~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=826&h=238&s=221142&e=png&b=1c3345)
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
![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d49461caf4324147aa71af790b9edcf7~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1146&h=117&s=160985&e=png&b=203949)
-f
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b086df6d26646eab714b1118fb8ce6b~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1050&h=117&s=155731&e=png&b=31566b)
-format
![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/76af60b89e7d4948b493dbd497356bd0~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1216&h=383&s=576363&e=png&b=1c3142)
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,退出的话不会影响容器,否则退出会导致容器退出。
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f64f4371fc9f4240a7299dd981cb0881~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1149&h=506&s=711111&e=png&b=1d3445)
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fa2e08e06ce349d08cfdc4a91dece537~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1101&h=298&s=387458&e=png&b=1c3344)
2.6 docker exec
功能:在容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
参数:
-d :分离模式: 在后台运行
-i :即使没有附加也保持 STDIN 打开
-t :分配一个伪终端
-e :设置环境变量
-u,--user :指定用户 "[:]"
-w,--workdir:指定工作目录
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/604a6ac26f6849a7bc265e47032ac039~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1028&h=150&s=182167&e=png&b=1a2e40)
#在容器中以交互模式打开 shell:
docker exec -it mynginx bash
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1a40ca2936f44b76bdf4dba4f7069b70~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=672&h=65&s=50550&e=png&b=182b3b)
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 :不截断输出。
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a9c1ae68e88c4c9e92adb2ea28cf5d06~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=974&h=53&s=62763&e=png&b=1f3747)
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 :显示总的文件大小
![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aa6f4566e4954a20aef53a93183d78eb~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1196&h=702&s=997487&e=png&b=2e5266)
2.14 docker port
功能:用于列出指定的容器的端口映射。
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
2.15 docker cp
功能:在容器和宿主机之间拷贝文件
# 把容器中的文件拷贝到宿主机的目录下
docker cp 容器ID或名称:宿主机的文件 宿主机的目录
# 把宿主机中的文件拷贝到容器中的某个目录下
docker cp 宿主机的文件 容器ID或名称:容器的目录
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b4d4b9dfc2b4b869848577d66f5feb6~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=929&h=162&s=178987&e=png&b=1b3142)
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/27fb0abbccc04b6199b2d7ae00fc8163~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1152&h=230&s=316802&e=png&b=1c3344)
2.16 docker diff
功能:检查容器里文件结构的更改。
docker diff CONTAINER
2.17 docker commit
功能:从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数:
-a :提交的镜像作者;
-c :使用 Dockerfile 指令来创建镜像;可以修改启动指令
-m :提交时的说明文字;
-p :在 commit 时,将容器暂停
![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/95373a789e2e482cb10ed6e08524ebc9~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1194&h=327&s=460567&e=png&b=1c3344)
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
![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b4a02d54c4504a75a80bbe306a90591c~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1094&h=207&s=284909&e=png&b=305469)
2.24 docker container prune
功能:删除所有停止的容器
docker container prune [OPTIONS]
参数:-f, --force:不提示是否进行确认
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a9984788d584688b45db04b26e0a179~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1200&h=579&s=802673&e=png&b=1e3547)
|