Docker常用命令总结~

1、关于镜像
获取镜像
复制代码
docker pull [image name] [option:tag]AI助手
  1. //获取postgres镜像(没有设置镜像版本号则默认获取最新的,使用`latest`标记)

  2. docker pull postgres

  3. or

  4. docker pull postgres:11.14

列出本地镜像
复制代码
docker imagesAI助手
指定镜像启动一个容器
  1. //运行postgres,最后一个postgres代表使用的镜像名称

  2. //POSTGRES_PASSWORD=postgres :环境变量POSTGRES_PASSWORD,代表设置密码为postgres

  3. //postgres有关的其他环境变量可以参考:https://hub.docker.com/_/postgres

  4. docker run -d --restart always --name postgre- e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres

指定镜像启动并进入容器
  1. docker run -it [image name] /bin/bash

  2. ordocker run -i -t [image name] /bin/bash

伪终端,输入exit退出容器

2、利用Dockerfile创建镜像

创建目录和Dockerfile文件

  1. //linux命令:创建目录

  2. mkdir [director name] ----mkdir study

  3. //进入目录

  4. cd [director name] ----cd study

  5. //创建文件

  6. touch [file name] ----touch Dockerfile

编写Dockerfile

  1. //编辑文件vi [file name] 按 `insert` or `i` 进入编辑状态

  2. vi Dockerfile

编写好的Dockerfile文件 , 按esc,输入 :wq 保存并退出

构建镜像

  1. //"." 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径

  2. docker build .

删除本地镜像

*注意:

删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器

复制代码
  1. docker rmi [image id]

  2. 例如:docker rmi 07e2ee723e2d (07e2ee723e2d 为镜像id)

删除所有镜像
复制代码
docker rmi -f $(docker images -qa)AI助手
关键字删除镜像
复制代码
docker rmi $(docker images | grep "关键字")AI助手
删除未被使用的镜像
复制代码
docker image prune -aAI助手
3、关于容器
启动容器
  1. //基于镜像启动容器

  2. docker run --name [container name] [image name]

  3. //启动容器后台运行

  4. docker run --name[container name] -d [image name]

  5. //启动停止的容器 (可以写多个)

  6. docker start [container name or id]

  7. //重启容器,(会把运行中的容器停止,再重新启动,可以写多个)

  8. docker restart [container name or id]

查看启动的容器
复制代码
docker psAI助手
查看所有容器
复制代码
docker ps -aAI助手
进入启动后的容器
复制代码
  1. docker exec -it[container name or container id] /bin/bash

  2. //缺点:当多个窗口同时attach同一个容器时,所有窗口都会同步显示.

  3. //当某个窗口因命令阻塞时,其他窗口也无法执行操作.

  4. docker attach [container name or id]

  5. //exec 和 attach的区别

  6. attach 不会在容器中创建进程执行额外的命令,只是附着到容器上.

  7. exec会在运行的容器上创建进程执行新的命令.

  8. //nsenter的方式

  9. //要下载nsenter 的工具 util-linux

  10. cd /tmp

  11. wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz

  12. tar -xvf util-linux-2.24.tar.gz

  13. cd util-linux-2.24./configure --without-ncurses make nsenter && sudo cp nsenter /usr/local/bin

  14. docker inspect -f {``{.State.Pid}} [container id]

  15. nsenter --target [上一个命令的输出内容] --mount --uts --ipc --net --pid

查看容器日志

复制代码
docker logs -f [container id or name]AI助手
停止容器
复制代码
docker stop [container name or id]AI助手
删除容器
  1. //只能删除未运行的容器

  2. docker rm [container name or id]

  3. 例如:docker rm 6516c6b03ccd (6516c6b03ccd 为 容器id)

  4. 或者 docker rm redis (redis 为 容器名称)

强制删除容器(包括运行的)
复制代码
docker stop $(docker ps -q)AI助手
停用所有运行中的容器
复制代码
docker rm $(docker ps -aq)AI助手
删除全部已经停止的容器
复制代码
docker rm $(docker ps -aq)AI助手
停用并删除所有容器
复制代码
docker stop $(docker ps -q) & docker rm $(docker ps -aq)AI助手
4、其他
查看docker版本
复制代码
docker versionAI助手
运行docker
复制代码
docker run -d -p 80:80 docker/getting-startedAI助手
Options Explain
-d 在后台运行容器
-p 设置端口映射
-a 获取所有/指定更新的用户信息
--restart always docker 启动时自动启动容器
--name 设置启动的容器名称
-e 指定环境变量的值
-m 指定提交的说明信息
-i 以交互模式运行容器,让容器的标准输入保持打开,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,并绑定到容器的标准输入上,通常与 -i 同时使用
-f 通过 SIGKILL 信号强制删除一个运行中的容器 or 实时查看日志
-l 移除容器间的网络连接,而非容器本身
-v 删除与容器关联的卷 or 创建一个数据卷并挂载到容器里
:ro 设置挂载数据卷的权限为只读
-P 随机映射一个 49000~49900 的端口到内部容器开放的网络端口
-rm 用-rm 启动的容器 容器终止时会自动删除,不能和-d一起使用
--link 使容器之间进行安全的交互
-b BRIDGE or --bridge=BRIDGE 指定容器挂载的网桥
--bip=CIDR 定制 docker0 的掩码
--icc=true or false 是否支持容器之间进行通信
相关推荐
egoist202328 分钟前
【Linux仓库】进程优先级及进程调度【进程·肆】
linux·运维·服务器·进程切换·进程调度·进程优先级·大o1调度
格调UI成品3 小时前
预警系统安全体系构建:数据加密、权限分级与误报过滤方案
大数据·运维·网络·数据库·安全·预警
xuanzdhc6 小时前
Linux 基础IO
linux·运维·服务器
愚润求学6 小时前
【Linux】网络基础
linux·运维·网络
小和尚同志7 小时前
29.4k!使用 1Panel 来管理你的服务器吧
linux·运维
小米里的大麦9 天前
014 Linux 2.6内核进程调度队列(了解)
linux·运维·驱动开发
WIN赢9 天前
PostMan使用
测试工具·lua·postman
退役小学生呀9 天前
三、kubectl使用详解
云原生·容器·kubernetes·k8s
程序员的世界你不懂9 天前
Appium+python自动化(三十)yaml配置数据隔离
运维·appium·自动化
算法练习生9 天前
Linux文件元信息完全指南:权限、链接与时间属性
linux·运维·服务器