命令
一、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
: 绑定一个卷
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 镜像
三、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)
批量停止容器运行