命令
一、docker ps
1.1 docker ps
查看正在运行的容器
docker ps
1.2 docker ps -a
查看所有容器
docker ps -a
1.3 docker ps -a -q
docker ps -a -q
查看所有容器的 容器ID
二、docker run
docker run
创建一个新的容器并运行一个命令。执行命令并创建新的 Image Layer
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
-a stdin
: 指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR
三项; -
-d
: 后台运行容器,并返回容器ID
; -
-i
: 以交互模式运行容器,通常与-t
同时使用; -
-P
: 随机端口映射,容器内部端口随机映射到主机的端口 -
-p
: 指定端口映射,格式为:主机(宿主)端口:容器端口 -
-t
: 为容器重新分配一个伪输入终端,通常与-i
同时使用; -
--name="nginx-lb"
: 为容器指定一个名称; -
--dns 8.8.8.8
: 指定容器使用的DNS服务器,默认和宿主一致; -
--dns-search example.com
: 指定容器DNS搜索域名,默认和宿主一致; -
-h "mars"
: 指定容器的hostname
; -
-e username="ritchie"
: 设置环境变量; -
--env-file=[]
: 从指定文件读入环境变量; -
--cpuset="0-2" or --cpuset="0,1,2"
: 绑定容器到指定CPU
运行; -
-m
:设置容器使用内存最大值; -
--net="bridge"
: 指定容器的网络连接类型,支持bridge/host/none/container
: 四种类型; -
--link=[]
: 添加链接到另一个容器; -
--expose=[]
: 开放一个端口或一组端口; -
--volume , -v
: 绑定一个卷 -
--privileged
:Docker
默认以Root
用户身份来运行。如果开启privileged
, 会以特权用户来运行,权限会非常大。比如可以更改hostname
。
2.1 docker run -it 镜像 bash
docker run -it 镜像 bash
运行镜像,并进入镜像
docker run -it 镜像 // 运行 centos 并进入 centos
如果想要退出 centos
并保持 centos
运行, 我们可以 control + p + q
退出。
2.2 docker run -d --name xxx -p yyy:zzz 镜像
docker run -d --name xxx -p yyy:zzz 镜像
以后台模式运行镜像, 并将容器命名为 xxx
, 将容器的 zzz
端口号映射到 yyy
端口
2.3 docker run -d --rm --name xxx -p yyy:zzz 镜像
docker run -d --name xxx -p yyy:zzz --rm 镜像
以后台模式运行镜像, 并将容器命名为 xxx
, 将容器的 zzz
端口号映射到 yyy
端口。停止容器后,会自动删除该容器
2.4 docker run -d --name xxx -p yyy:zzz -e a=xx -e b=yy 镜像
docker run -d --name xxx -p yyy:zzz -e a=xx -e b=yy 镜像
通过 -e
传递环境变量
2.5 docker run -d --name xxx -p yyy:zzz --link 镜像
docker run -d --name xxx -p yyy:zzz --link 镜像
2.6 docker run -it --privileged 镜像
docker run -it --privileged 镜像
以特权用户运行容器(默认是以 Root
用户来运行)。以 privileged
身份来运行的话,可以修改 hostname
权限。
三、docker rmi
docker rmi
用于删除镜像
3.1 docker rmi $(docker images)
docker rmi $(docker images)
删除 docker images
显示的全部镜像。
四、docker build
docker build
命令用于使用 Dockerfile
创建镜像。
语法
docker build [OPTIONS] PATH | URL | -
-
--build-arg=[]
:设置镜像创建时的变量; -
--cpu-shares
:设置cpu
使用权重; -
--cpu-period
:限制CPU
CFS
周期; -
--cpu-quota
:限制CPU
CFS
配额; -
--cpuset-cpus
:指定使用的CPU id
; -
--cpuset-mems
:指定使用的内存id
; -
--disable-content-trust
:忽略校验,默认开启; -
-f
:指定要使用的Dockerfile
路径; -
--force-rm
:设置镜像过程中删除中间容器; -
--isolation
:使用容器隔离技术; -
--label=[]
:设置镜像使用的元数据; -
-m
:设置内存最大值; -
--memory-swap
:设置Swap
的最大值为内存+swap
,-1
表示不限swap
; -
--no-cache
:创建镜像的过程不使用缓存; -
--pull
:尝试去更新镜像的新版本; -
--quiet, -q
:安静模式,成功后只输出镜像ID
; -
--rm
:设置镜像成功后删除中间容器; -
--shm-size
:设置/dev/shm
的大小,默认值是64M
; -
--ulimit
:Ulimit
配置。 -
--squash
:将Dockerfile
中所有的操作压缩为一层。 -
--tag, -t
: 镜像的名字及标签,通常name:tag
或者name
格式;可以在一次构建中为一个镜像设置多个标签。 -
--network
: 默认default
。在构建期间设置RUN指令的网络模式
4.1 docker build -t [镜像名称]:[镜像Tag] .
docker build -t [镜像名称]:[镜像Tag] .
:将当前目录 .
作为构建上下文,构建镜像。其中, .
表示将当前目录作为构建上下文, Docker
客户端将 构建上下文中的所有内容 发送到 Docker
引擎(daemon
),供后者在执行 Dockerfile
指令时使用。构建上下文包含了用于构建镜像的所有文件和目录。
4.2 docker build --no-cache -t [镜像名称]:[镜像Tag] .
docker build --no-cache -t [镜像名称]:[镜像Tag] .
将当前目录 .
作为构建上下文,构建镜像。在构建镜像时使用 --no-cache
选项可以忽略现有的缓存,强制 Docker
从头开始构建每一层:
4.3 docker build -f [Dockerfile 位置] -t [镜像名称]:[镜像Tag] .
docker build -f [Dockerfile 位置] -t [镜像名称]:[镜像Tag] .
将当前目录 .
作为构建上下文,构建镜像,并使用指定的 Dockerfile
来构建镜像
五、docker pull
在 Docker Hub
上有大量的高质量的镜像可以用,我们可以使用docker pull
从镜像仓库中拉取对应的镜像。
语法
docker pull [选项] [docker Registry 地址[:端口号]/]仓库名[:标签]
5.1 docker pull 仓库名:标签
docker pull 仓库名:版本
5.2 docker pull --platform [platform 架构] 仓库名:标签
docker pull --platform [platform 架构] 仓库名:标签
拉取指定架构镜像版本。如下所示:
ocker pull --platform linux/arm64 kubernetesui/dashboard-metrics-scraper:1.1.1
六、docker info
七、docker image
7.1 docker image ls
如果想要查看本地已经下载的镜像,可以使用 docker image ls
命令。 docker image ls
相当于 docker images
都是用于查看镜像的。
docker image ls
7.2 docker image rm
如果想要删除本地镜像,可以使用 docker image rm
命令
docker image rm [选项] <镜像1> [<镜像2>...]
八、docker search
docker search XX容器
用于搜索 Docker Hub
容器镜像。
docker search nginx
docker search centos
九、docker inspect
docker inspect 容器ID
查看容器相关信息
9.1 docker inspect [容器ID]
9.2 docker inspect nginx1 | awk '/IPAddress/ {print $2}'
docker inspect nginx1 | awk '/IPAddress/ {print $2}'
获取容器 IP
地址信息
9.3 docker inspect [容器Id/镜像Id] | grep Architecture
docker inspect [容器/镜像] | grep Architecture
查看容器、镜像系统架构。
十、docker version
十一、docker commit
docker commit
将容器提交为一个镜像。docker build
是在镜像的基础上构建镜像。
docker commit
理解: 以 centos
镜像为例, 我们通过 docker run -it centos:latest bash
运行并进入容器, 在容器中 touch test.txt
创建 test.txt
文件, 当我们退出容器后, test.txt
文件还在,但是当我们删除这个容器时, test.txt
不存在了。我们的需求就是即使删除容器之后,我们的改变还在,这就需要我们 docker commit
来存储一些变化。
11.1 docker commit [容器ID] [Tag]
通过 docker commit [容器ID] [Tag]
提交对容器的改变
docker ps
docker commit [容器ID] centos:v1
此后, 我们再度 docker image ls
查看镜像列表时,此时会有我们自己 Tag
的镜像版本。
十二、docker save
docker save
导出容器镜像,方便分享。
注意: 使用 docker save
导出镜像, 则使用 docker load
导入镜像。
12.1 docker save -o [镜像 tar 包名] [镜像:Tag]
docker save -o [镜像 tar 包名] [镜像:Tag]
将镜像存储为一个 tar
包。比如 docker save -o centosV1.tar centos:v1
将 centos
镜像指定的 v1
版本打包为 tar
。
示例
docker save -o mysql-server.tar mysql/mysql-server:latest
十三、docker load
docker load
把他人分享的容器镜像导入到本地,这通常是容器镜像的发布方式之一。
注意: 使用 docker save
导出镜像, 则使用 docker load
导入镜像。
13.1 docker load -i [镜像.tar]
docker load -i [镜像.tar]
将从其他地方传输过来的 镜像.tar
加载到镜像中。
docker load -i [镜像.tar] // 将 镜像.tar 加载到 本地镜像中
docker image ls / docker images // 查看本地镜像
十四、docker export
docker export
把正在运行的容器导出。
注意: 使用 docker export
导出镜像,那么使用 docker import
导入镜像。
14.1 docker export -o [容器.tar] [正在运行的容器ID]
docker export -o [容器.tar] [正在运行的容器ID]
把正在运行的容器导出为 容器.tar
十五、docker attach
docker attach
类似于 ssh
命令, 可以进入到容器中。
15.1 docker attach [容器ID]
docker ps // 查看正在运行的容器
docker attach 容器ID // 进入到容器中
说明: 退出容器时, 如不需要容器在运行, 可直接使用 exit
退出, 如果需要容器继续运行, 可使用 ctrl + p + q
十六、docker stop
docker stop
停止容器运行
16.1 docker stop [容器ID]
docker ps // 查看正在运行的容器
docker stop [容器ID] // 停止容器运行
16.2 docker stop $(docker ps -a -q)
docker stop $(docker ps -a -q)
批量停止容器运行
十七、docker start
17.1 docker start $(docker ps)
docker start $(docker ps)
开启所有容器服务
十八、docker top
docker top
在 Docker Host
查看容器中运行的进程信息。
18.1 docker top [容器ID]
docker ps // 查看正在运行的容器
docker top [容器ID] // 查看容器进行信息
十九、docker rm
docker rm
删除指定容器。如果容器已经停止,使用此命令可以直接删除;如果容器处于运行状态,则需要提前关闭容器后,再删除容器。
19.1 docker rm [容器ID]
docker ps // 查看正在运行的容器
docker stop [容器ID] // 停止指定容器运行
docker rm [容器ID] // 删除指定容器
19.2 docker rm -f [容器ID]
docker rm -f [容器ID]
强制删除容器
19.3 docker rm $(docker ps -a -q)
docker rm $(docker ps -a -q)
批量删除所有容器
二十、docker status
docker status
查看容器占用主机的资源
20.1 docker status --no-stream [容器ID]
docker ps // 查看正在运行的容器
docker status --no-stream [容器ID] // 查看指定容器占用主机的资源
二十一、docker prune
docker prune
删除未使用的容器镜像
20.1 docker image prune
docker image prune
删除未使用的镜像
20.2 docker image prune -a
docker image prune -a
删除所有未使用的镜像
20.3 docker container prune
docker container prune
删除所有停止运行的容器
20.4 docker volume prune
docker volume prune
删除所有未被挂载的卷
20.5 docker network prune
docker network prune
删除所有网络
20.6 docker system prune
docker system prune
删除 docker
所有资源
二十一、docker import
docker import
导入使用 docker export
导出的容器作为本地容器镜像
注意: 使用 docker export
导出镜像,那么使用 docker import
导入镜像。
21.1 docker import [容器.tar] [镜像:Tag]
docker import [容器.tar] [镜像:Tag]
将通过 docker export
导出的容器作为本地容器镜像,版本为 Tag
。
二十二、docker exec
22.1 docker exec -it [容器ID] 命令
docker exec -it [容器ID] 命令
在容器中执行命令,并输出。比如: docker exec -it [Centos 容器ID] ls /
在Centos
容器中执行 ls /
并输出。
27.2 docker exec -it [容器ID] sh
docker exec -it [容器Id] sh
进入容器终端。如果需要退出, 输入 exit
即可。但是如果想要退出终端的同时,保持 jenkins
运行, 可以 control + p + q
退出。
22.3 docker exec -it [容器ID] bash
docker exec -it [容器Id] bash
进入容器终端。如果需要退出, 输入 exit
即可。但是如果想要退出终端的同时,保持 jenkins
运行, 可以 control + p + q
退出。
二十三、docker logs
23.1 docker logs [容器ID]
docker logs [容器ID]
通过 Docker
日志访问容器控制台日志
二十四、docker restart
docker restart
重启容器
24.1 docker restart [容器ID]
docker restart [容器ID]
重启容器
二十五、docker login
docker login
登录 Docker Hub
二十六、docker push
26.1 docker push [Docker Hub 用户名]/[镜像名称]:镜像版本
docker push [Docker Hub 用户名]/[镜像名称]:镜像版本
docker push [Docker Hub 用户名]/[镜像名称]:镜像版本
二十七、docker history
27.1 docker history [镜像名称]:[镜像Tab]
docker history [镜像名称]:[镜像Tab]
查看某个版本镜像的分层
二十八、docker stats
docker stats
提供容器内各种资源使用情况的实时统计信息
28.1 docker stats [容器ID 或名字]
docker stats [容器ID 或名字]
监控正在运行的容器
二十九、docker volume
docker volume
三十、docker volume ls
docker volume ls
三十一、docker volume inspect [VOLUME NAME]
docker volume inspect [VOLUME NAME]
三十二、docker images
docker images
三十三、docker cp
docker cp
命令不仅可以将文件从宿主机复制到容器中,也可以从容器复制文件到宿主机。
语法
// 容器 -> 宿主
docker cp container_name_or_id:/对应路径 宿主目标路径
// 宿主 -> 容器
docker cp 宿主对应路径 container_name_or_id:/目标路径
三十四、docker network
34.1 docker network ls
34.2 docker network create
docker network create
34.3 docker network create -d bridge [网络名]
docker network create -d bridge [网络名称]
34.4 docker network inspect [网络名/网络ID]
34.5 docker network connect [网络名/网络ID] [容器ID]
docker network connect [网络名/网络ID] [容器ID]
指定容器连接网络。通过该命令可以实现一个容器连接多个网络。
34.6 docker network disconnect [网络名/网络ID] [容器ID]
docker network connect [网络名/网络ID] [容器ID]
指定容器断开网络
34.7 docker network rm [网络名/网络ID]
docker network rm [网络名/网络ID]
删除指定网络
三十五、docker container
35.1 docker container ls
docker container ls
三十六、docker tag
docker tag
命令用于为已有的 Docker
镜像创建一个新的标签(tag
)。这不会复制镜像数据,只是为现有镜像添加一个新的标识。这样你可以用不同的标签来引用同一个镜像。
36.1 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
现有镜像的名称和标签。如果不指定标签,默认使用 latest。新标签的名称和标签。举例如下:
docker tag kubernetesui/dashboard-metrics-scraper:1.1.1 dashboard-metrics-scraper:1.1.1-linux-arm64
这个命令会将 kubernetesui/dashboard-metrics-scraper:1.1.1
镜像标记为 dashboard-metrics-scraper:1.1.1-linux-arm64
,这样你可以使用新的标签来引用同一个镜像。