命令
一、docker cp
docker cp
命令不仅可以将文件从宿主机复制到容器中,也可以从容器复制文件到宿主机。
语法
// 容器 -> 宿主
docker cp container_name_or_id:/对应路径 宿主目标路径
// 宿主 -> 容器
docker cp 宿主对应路径 container_name_or_id:/目标路径
二、docker rm
docker rm
删除指定容器。如果容器已经停止,使用此命令可以直接删除;如果容器处于运行状态,则需要提前关闭容器后,再删除容器。
2.1 docker rm [容器ID]
docker ps // 查看正在运行的容器
docker stop [容器ID] // 停止指定容器运行
docker rm [容器ID] // 删除指定容器
2.2 docker rm -f [容器ID]
docker rm -f [容器ID]
强制删除容器
2.3 docker rm $(docker ps -a -q)
docker rm $(docker ps -a -q)
批量删除所有容器
三、docker ps
docker ps
查看正在运行的容器
docker ps
3.1 docker ps -a
查看所有容器
docker ps -a
3.2 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
。
4.1 docker run -it [IMAGE Name] sh
4.2 docker run -it [IMAGE Name] bash
docker run -it 镜像 bash
运行镜像,并进入镜像
docker run -it 镜像 // 运行 centos 并进入 centos
如果想要退出 centos
并保持 centos
运行, 我们可以 control + p + q
退出。
4.3 docker run -it --privileged [IMAGE Name] bash
docker run -it --privileged 镜像
以特权用户运行容器(默认是以 Root
用户来运行)。以 privileged
身份来运行的话,可以修改 hostname
权限。
4.4 docker run -d --name xxx -p yyy:zzz [IMAGE Name]
docker run -d --name xxx -p yyy:zzz 镜像
以后台模式运行镜像, 并将容器命名为 xxx
, 将容器的 zzz
端口号映射到 yyy
端口
4.5 docker run -d --rm --name xxx -p yyy:zzz [IMAGE Name]
docker run -d --name xxx -p yyy:zzz --rm 镜像
以后台模式运行镜像, 并将容器命名为 xxx
, 将容器的 zzz
端口号映射到 yyy
端口。停止容器后,会自动删除该容器
4.6 docker run -d --name xxx -p yyy:zzz -e a=xx -e b=yy [IMAGE Name]
docker run -d --name xxx -p yyy:zzz -e a=xx -e b=yy 镜像
通过 -e
传递环境变量
五、docker rmi
docker rmi
用于删除镜像
5.1 docker rmi $(docker images)
docker rmi $(docker images)
删除 docker images
显示的全部镜像。
六、docker top
七、docker tag
docker tag
命令用于为已有的 Docker
镜像创建一个新的标签(tag
)。这不会复制镜像数据,只是为现有镜像添加一个新的标识。这样你可以用不同的标签来引用同一个镜像。
7.1 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
现有镜像的名称和标签。如果不指定标签,默认使用 latest
。新标签的名称和标签。
用法一、将已有镜像上传到个人镜像仓库
# 1. 拉取镜像
docker pull --platform linux/arm64 docker.io/calico/node:v3.25.0
# 2. 查看镜像系统架构
docker inspect calico/node:v3.25.0 | grep Architecture
# 3. 为镜像生成指定 Tag
docker tag calico/node:v3.25.0 registry.cn-hangzhou.aliyuncs.com/bolawen/calico-node:v3.25.0-linux-arm64
# 4. 推送到个人仓库
docker push registry.cn-hangzhou.aliyuncs.com/bolawen/calico-node:v3.25.0-linux-arm64
八、docker diff
九、docker exec
9.1 docker exec -it [容器ID] 命令
docker exec -it [容器ID] 命令
在容器中执行命令,并输出。比如: docker exec -it [Centos 容器ID] ls /
在Centos
容器中执行 ls /
并输出。
9.2 docker exec -it [容器ID] sh
docker exec -it [容器Id] sh
进入容器终端。如果需要退出, 输入 exit
即可。但是如果想要退出终端的同时,保持 jenkins
运行, 可以 control + p + q
退出。
9.3 docker exec -it [容器ID] bash
docker exec -it [容器Id] bash
进入容器终端。如果需要退出, 输入 exit
即可。但是如果想要退出终端的同时,保持 jenkins
运行, 可以 control + p + q
退出。
十、docker load
在 Docker
中,docker load
命令用于从一个压缩的归档文件中加载镜像。这个归档文件通常是一个 .tar
文件,它包含了一个 Docker
镜像(包括所有的镜像层、元数据等)。该命令通常用于从文件系统恢复镜像或从其他系统导入镜像。
docker load
命令是用于从一个归档文件(通常是 .tar
格式的文件)中加载 Docker
镜像的工具。它通常与 docker save
配对使用,用于导出和导入镜像,支持镜像的备份、迁移、恢复等操作。它对于在离线环境或跨机器传输 Docker
镜像非常有用。
10.1 传输镜像
1. 保存镜像: 通过 docker save
将本地镜像保存为一个压缩文件(通常是 .tar
格式),适用于将镜像导出、备份或传输到其他机器。
docker save -o my-image.tar my-image:latest
2. 传输镜像:
scp my-image.tar root@192.168.105.135:/root
3. 加载镜像: 在目标机器上加载镜像
docker load -i my-image.tar
十一、docker logs
十二、docker kill
十三、docker info
十四、docker save
在 Docker
中,docker save
命令用于将本地镜像保存为一个归档文件(通常是 .tar
格式)。这个命令可以将一个或多个镜像导出为压缩文件,方便进行存档、备份、传输或迁移到其他环境。保存为 .tar
文件后,镜像可以通过 docker load
命令在其他机器或环境中恢复。
14.1 传输镜像
1. 保存镜像: 通过 docker save
将本地镜像保存为一个压缩文件(通常是 .tar
格式),适用于将镜像导出、备份或传输到其他机器。
docker save -o my-image.tar my-image:latest
2. 传输镜像:
scp my-image.tar root@192.168.105.135:/root
3. 加载镜像: 在目标机器上加载镜像
docker load -i my-image.tar
十五、docker stop
docker stop
停止容器运行
15.1 docker stop [容器ID]
docker ps // 查看正在运行的容器
docker stop [容器ID] // 停止容器运行
15.2 docker stop $(docker ps -a -q)
docker stop $(docker ps -a -q)
批量停止容器运行
十六、docker port
十七、docker pull
在 Docker Hub
上有大量的高质量的镜像可以用,我们可以使用docker pull
从镜像仓库中拉取对应的镜像。
语法
docker pull [选项] [docker Registry 地址[:端口号]/]仓库名[:标签]
17.1 docker pull 仓库名:标签
docker pull 仓库名:版本
17.2 docker pull --platform [platform 架构] 仓库名:标签
docker pull --platform [platform 架构] 仓库名:标签
拉取指定架构镜像版本。如下所示:
ocker pull --platform linux/arm64 kubernetesui/dashboard-metrics-scraper:1.1.1
十八、docker push
在 Docker
中,docker push
命令用于将本地的 Docker
镜像上传到远程镜像仓库(如 Docker Hub
或私有 Docker
仓库)。通过 docker push
,你可以将已经创建并本地存储的镜像共享或分发给其他用户,或者将其部署到生产环境中。
18.1 推送镜像到 Docker Hub
使用 docker push
将镜像推送到 Docker Hub
。例如,假设你的 Docker Hub
用户名是 username
,你可以按如下方式推送
docker push bolawen/my-image:1.0.0
这里的 my-image:1.0.0
会推送到 Docker Hub
上你的公共仓库。如果你没有登录,Docker
会提示你进行登录。
18.2 推送镜像到 AliYun Hub
如果你有一个私有 Docker
仓库,可以将镜像推送到这个仓库。假设私有仓库的地址是 registry.cn-hangzhou.aliyuncs.com
,那么推送命令可能如下
docker tag my-image:1.0.0 registry.cn-hangzhou.aliyuncs.com/bolawen/my-image:1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/bolawen/my-image:1.0.0
十九、docker wait
二十、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指令的网络模式
20.1 docker build -t [镜像名称]:[镜像Tag] .
docker build -t [镜像名称]:[镜像Tag] .
:将当前目录 .
作为构建上下文,构建镜像。其中, .
表示将当前目录作为构建上下文, Docker
客户端将 构建上下文中的所有内容 发送到 Docker
引擎(daemon
),供后者在执行 Dockerfile
指令时使用。构建上下文包含了用于构建镜像的所有文件和目录。
20.2 docker build --no-cache -t [镜像名称]:[镜像Tag] .
docker build --no-cache -t [镜像名称]:[镜像Tag] .
将当前目录 .
作为构建上下文,构建镜像。在构建镜像时使用 --no-cache
选项可以忽略现有的缓存,强制 Docker
从头开始构建每一层:
20.3 docker build -f [Dockerfile 位置] -t [镜像名称]:[镜像Tag] .
docker build -f [Dockerfile 位置] -t [镜像名称]:[镜像Tag] .
将当前目录 .
作为构建上下文,构建镜像,并使用指定的 Dockerfile
来构建镜像
二十一、docker login
docker login
登录 Docker Hub
二十二、docker image
二十三、docker stats
二十四、docker start
二十五、docker pause
二十六、docker prune
二十七、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
来存储一些变化。
27.1 docker commit [容器ID] [Tag]
通过 docker commit [容器ID] [Tag]
提交对容器的改变
docker ps
docker commit [容器ID] centos:v1
此后, 我们再度 docker image ls
查看镜像列表时,此时会有我们自己 Tag
的镜像版本。
二十八、docker volume
二十九、docker attach
docker attach
类似于 ssh
命令, 可以进入到容器中。
29.1 docker attach [容器ID]
docker ps // 查看正在运行的容器
docker attach 容器ID // 进入到容器中
说明: 退出容器时, 如不需要容器在运行, 可直接使用 exit
退出, 如果需要容器继续运行, 可使用 ctrl + p + q
三十、docker create
三十一、docker events
三十二、docker images
三十三、docker import
在 Docker
中,docker import
和 docker export
是两个与镜像和容器相关的命令,常用于镜像的创建与容器的备份或迁移。它们与 docker save
和 docker load
不同,通常涉及到容器的导出与导入,而非镜像本身的直接操作。
docker import
用于从一个 tar
包或压缩文件中导入文件系统并创建一个新的 Docker
镜像。与 docker load
不同,docker import
创建的是一个镜像,而不是恢复镜像的所有历史层和元数据(如构建历史、标签等)。docker import
仅根据容器的文件系统创建一个新的镜像。
33.1 传输容器数据
1. 导出容器: 假设你有一个容器 mycontainer
,想要导出它的文件系统为 tar
包
docker export -o mycontainer.tar mycontainer
2. 传输容器
scp my-image.tar root@192.168.105.135:/root
3. 导入容器
docker import mycontainer.tar myapp:v1.0
三十四、docker export
在 Docker
中,docker import
和 docker export
是两个与镜像和容器相关的命令,常用于镜像的创建与容器的备份或迁移。它们与 docker save
和 docker load
不同,通常涉及到容器的导出与导入,而非镜像本身的直接操作。
docker export
用于导出一个容器的文件系统内容,并将其保存为一个 tar
包。与 docker save
不同,docker export
导出的是容器的当前文件系统状态,而不是镜像层和元数据。
34.1 传输容器数据
1. 导出容器: 假设你有一个容器 mycontainer
,想要导出它的文件系统为 tar
包
docker export -o mycontainer.tar mycontainer
2. 传输容器
scp my-image.tar root@192.168.105.135:/root
3. 导入容器
docker import mycontainer.tar myapp:v1.0
三十五、docker logout
三十六、docker search
三十七、docker rename
三十八、docker unpause
三十九、docker network
39.1 docker network ls
39.2 docker network create
docker network create
39.3 docker network create -d bridge [网络名]
docker network create -d bridge [网络名称]
39.4 docker network inspect [网络名/网络ID]
39.5 docker network connect [网络名/网络ID] [容器ID]
docker network connect [网络名/网络ID] [容器ID]
指定容器连接网络。通过该命令可以实现一个容器连接多个网络。
39.6 docker network disconnect [网络名/网络ID] [容器ID]
docker network connect [网络名/网络ID] [容器ID]
指定容器断开网络
39.7 docker network rm [网络名/网络ID]
docker network rm [网络名/网络ID]
删除指定网络
四十、docker history
四十一、docker version
四十二、docker restart
四十三、docker inspect
docker inspect 容器ID
查看容器相关信息
43.1 docker inspect [容器ID]
43.2 docker inspect nginx1 | awk '/IPAddress/ {print $2}'
docker inspect nginx1 | awk '/IPAddress/ {print $2}'
获取容器 IP
地址信息
43.3 docker inspect [容器Id/镜像Id] | grep Architecture
docker inspect [容器/镜像] | grep Architecture
查看容器、镜像系统架构。