跳到主要内容

命令

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

一、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 传递环境变量

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 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:v1centos 镜像指定的 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 topDocker 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,这样你可以使用新的标签来引用同一个镜像。