跳到主要内容

命令

2023年12月01日
柏拉文
越努力,越幸运

一、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 importdocker export 是两个与镜像和容器相关的命令,常用于镜像的创建与容器的备份或迁移。它们与 docker savedocker 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 importdocker export 是两个与镜像和容器相关的命令,常用于镜像的创建与容器的备份或迁移。它们与 docker savedocker 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 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 查看容器、镜像系统架构。

四十四、docker container