当前位置: 首页 > news >正文

(四)docker命令

1.Docker常用命令概述

1.1 容器管理命令

用于容器管理的基本命令

命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

IMAGE:指定容器镜像(如 nginx:latest

COMMAND:容器内执行的命令(如 bash),默认为镜像定义的启动命令

1.1.1 【常用重点】docker run:在新容器中执行命令

linux参数格式

短参数:单个减号 - ,后面加单个字母、 如果选项需要加参数的时候,紧跟在选项后面(或者加空格) 

mysql -uroot -p     或    mysql -u  root  -p   

长参数:  两个减号 -- , 后面加单词 ,GNU风格更容易理解,因为出现的不再是单个的字母。如果选项需要带参数,则使用空格或者=将参数和选项分开

ls --sort time  或 ls --sort=time

官方文档链接: docker container run | Docker Docshttps://docs.docker.com/reference/cli/docker/container/run/ 

短参数长参数作用备注
-d--detach=false指定容器运行于前台还是后台,默认为false
-i--interactive=false打开STDIN,用于控制台交互
-t--tty=false 分配tty设备,该可以支持终端登录,默认为false
-u--user=""指定容器的用户
-a--attach=[]登录容器(必须是以docker run -d启动的容器)
-w--workdir=""指定容器的工作目录
-c--cpu-shares=0设置容器CPU权重,在CPU共享场景使用
-e--env=[]指定环境变量,容器中可以使用该环境变量
-m--memory="" 指定容器的内存上限
-P--publish-all=false将容器内所有暴露的端口随机映射到宿主机的端口(自动化处理所有暴露的端口,适合于不确定哪些端口需要暴露时使用。)
-p--publish=[]指定容器暴露的端口: -p 宿主机端口:容器端口
-h--hostname=""指定容器的主机名
-v--volume=[]给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[]给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[]添加权限,权限清单详见https://linux.die.net/man/7/capabilities
--cap-drop=[] 删除权限,权限清单详见https://linux.die.net/man/7/capabilities
--cidfile=""运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset=""设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[]添加主机设备给容器,相当于设备直通
--dns=[] 指定容器的dns服务器
--dns-search=[]指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint=""覆盖image的入口点
--env-file=[]指定环境变量文件,文件格式为每行一个环境变量
--expose=[]指定容器暴露的端口,即修改镜像的暴露端口
--link=[]指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[]指定容器的配置文件,只有在指定--exec-drive
--name=""指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge"容器网络设置
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置

--privileged=false指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no"

指定容器停止后的重启策略:

no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启

--rm=false指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

1.1.2 docker start:启动一个或多个已停止的容器

  • 命令

docker start命令用于启动已停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

options可选参数
-a: 附加到容器的标准输入、输出和错误输出。
-i:以交互模式运行容器。

  • 使用示例
# 1.启动单个容器
docker start <container_id>
# 比如我们要启动名为 name1 的容器,命令如下:
docker start b46d7d1aa479# 2. 启动多个容器
docker start <container_id1> <container_id2>
# 比如我们要同时启动名为 name1 和 name2 的容器,命令如下:
docker start b46d7d1aa479 3e747fd0bc2e#  3. 使用容器的CONTAAINER NAME启动容器
docker start CONTAINER
# 比如我们要启动名为 name1 的容器,命令如下:
docker start name1#  4.启动所有容器
docker start $(docker ps -a -q)

1.1.3 docker stop:停止一个正在运行的容器

  • 命令

用于停止运行中的容器。以下是其基本语法:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

options可选参数

  • -t:指定停止容器前的超时时间(默认为10秒)

使用示例

# 1.停止单个容器,可以通过容器id或者容器name停止容器
docker stop <container_id>docker stop <container_name># 比如我们要启动名为 name1 的容器,命令如下:
docker stop jenkins_salah docker stop b46d7d1aa479# 2. 停止多个容器,可以通过多个容器id或者容器name停止容器
docker stop <container_id1> <container_id2>docker stop <container_name1> <container_name2># 比如我们要同时停止名为 name1 和 name2 的容器,命令如下:
docker stop  b46d7d1aa479 3e747fd0bc2edocker stop  name1 name2 #  3.停止所有容器
docker stop $(docker ps -a -q)

1.1.4 docker restart:重启一个正在运行的容器

同上 start stop使用方式

1.1.5 docker kill:强制停止一个正在运行的容器

docker kill [OPTIONS] CONTAINER [CONTAINER...]

$docker kill Name/ID

1.1.6 docker rm:删除一个或多个容器


# 删除所有容器  
$docker rm `docker ps -a -q`  # 删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container  
$docker rm Name/ID

1.1.7 docker pause:暂停容器的所有进程

  • 作用:暂停一个或多个容器中的所有进程 
  • 要操作的容器的名称,可以同时操作多个
docker pause CONTAINER [CONTAINER...]

实例:
①暂停一个容器及其所有进程:
docker pause myContainer。
②同时暂停多个容器的所有进程:
docker pause container1 container2 container3。使用场景:
①临时暂停活动: 当需要临时暂停容器中的所有活动以进行系统维护或资源管理时,可以使用 docker pause。
②资源管理: 在需要重新分配系统资源时,暂停不必要的容器以释放资源。
③调试和故障排除: 在调试或故障排除过程中暂停容器以分析当前状态。

1.1.8 docker unpause:恢复容器的所有进程

  • 作用:恢复一个或多个容器中的所有进程

语法:
docker unpause CONTAINER [CONTAINER…](要操作的容器的名称,可以同时操作多个)。实例:
①恢复一个容器及其所有进程:
docker unpause myContainer。
②同时恢复多个容器的所有进程:
docker unpause container1 container2 container3。

1.2 镜像管理命令 

还有许多其他Docker命令,如查看容器列表的docker ps,获取容器底层信息的docker inspect,显示容器进程的docker top,以及附上运行容器的docker attach等。同时,还有版本管理、镜像仓库管理、本地镜像管理等相关命令,如创建新镜像的docker commit,拉取和推送镜像的docker pull和docker push,搜索镜像的docker search等 

1.2.1 docker search image_name 检索image


1.2.2 docker pull image_name 下载镜像

拉取过程优化

# 指定平台拉取
docker pull --platform linux/arm64 myregistry.com/app:1.0# 仅下载元数据
docker pull --quiet myregistry.com/app:1.0# 断点续传技巧
docker save myregistry.com/app:1.0 | pv | ssh user@host docker load
拉取策略对比
策略命令示例特点
默认拉取docker pull app:1.0完整下载所有层
内容信任验证DOCKER_CONTENT_TRUST=1校验签名防止篡改
增量更新docker pull app:latest仅下载变更层(复用缓存)

1.2.3 docker push new_image_name发布docker镜像

推送全流程解析

# 认证私有仓库
docker login myregistry.com -u user -p password# 标准推送操作
docker push myregistry.com/app:1.0# 多架构镜像推送
docker buildx build --platform linux/amd64,linux/arm64 --push -t myregistry.com/app:1.0 .

安全推送实践

# 签名镜像(需配置Docker Content Trust)
export DOCKER_CONTENT_TRUST=1
docker push myregistry.com/app:1.0# 漏洞扫描集成
docker scan myregistry.com/app:1.0

1.2.4 docker images 列出本地镜像

 -a, --all=false Show all images;

--no-trunc=false Don't truncate output;

-q, --quiet=false Only show numeric IDs

1.2.5 docker rmi image_name  删除一个或者多个镜像


-f, --force=false Force;

--no-prune=false Do not delete untagged parents


1.2.6 docker history image_name 显示一个镜像的历史;

--no-trunc=false Don't truncate output;

-q, --quiet=false Only show numeric IDs

1.2.7 docker import:通过tar文件导入镜像

语法:

docker import [参数选项] file | URL | - [REPOSITORY[:TAG]]。

参数解释:
file|URL|-:输入文件的路径、本地文件或 URL,或者使用 - 从标准输入读取。
[REPOSITORY[:TAG]]:(可选)为导入的镜像指定仓库和标签。

-c, --change:在导入过程中应用 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV 等。
-m, --message:为导入的镜像添加注释。

# 1、从本地 tar 文件导入镜像,并命名为 mynewimage:latest。
docker import mycontainer.tar mynewimage:latest# 2、从 URL 导入镜像,并命名为 mynewimage:latest。
docker import http://example.com/mycontainer.tar mynewimage:latest# 3、从标准输入导入镜像,这将通过管道从标准输入读取 tar 文件并导入镜像。
cat mycontainer.tar | docker import - mynewimage:latest# 4、在导入过程中应用变更,这将从 mycontainer.tar 导入镜像,并在过程中设置环境变量 LANG 和命令 CMD。
docker import -c “ENV LANG=en_US.UTF-8” -c “CMD /bin/bash” mycontainer.tar mynewimage:latest# ①导出容器快照:
# 创建并运行一个容器
docker run -d --name myContainer ubuntu:20.04 sleep 3600
# 导出容器快照
docker export myContainer -o myContainer.tar
# ②导入容器快照:
docker import myContainer.tar mynewimage:latest
# 运行导入的镜像
docker run -it mynewimage:latest /bin/bash

注意事项:
①docker import 创建的镜像不会保留原始镜像的历史和元数据。
②使用 -c 选项可以在导入过程中应用 Dockerfile 指令,从而自定义新镜像的配置。
③导入的 tar 文件必须是使用 docker export 创建的容器快照,或者是兼容的其他格式。

总结:
docker import 命令是一种从容器快照创建新镜像的灵活方法,适用于迁移、恢复和自定义 Docker 镜像的场景。通过使用 docker import,用户可以轻松地从容器快照生成新的镜像,并在导入过程中应用额外的配置。

1.2.8 docker load:加载已保存的tar镜像

docker load -i cuda-docker.tar

就将上方的cuda-docker.tar包导入到本机环境中,之后执行docker run命令就可以启动docker镜像

1.2.9  docker login 登录registry server

# 登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username  
$docker login 

1.2.10 【重点】docker build构建Dockerfile 镜像

(1)语法命令
docker build [OPTIONS] PATH | URL | -
(2)构建上下文

构建上下文是构建过程中的目录或路径,Docker 会从中获取文件以及构建时所需的资源(包括 Dockerfile)。常见的构建上下文有

  • 当前目录 (.):指定当前目录作为构建上下文。
  • 路径PATH:指定本地路径,作为构建上下文。
  • URL:也可以使用 Git 仓库的 URL,指定一个远程 URL ,作为构建上下文
  • -:表示从标准输入读取 Dockerfile。
docker build https://github.com/myrepo/myapp.git

(3)常用选项及详细说明
短参数长参数描述示例
-t--tag
  • 为构建的镜像指定标签(名称:标签)。标签是镜像的唯一标识,通常采用 name:tag 的格式
  • 如果没有提供 tag,默认会使用 latest 标签。
# 这会创建一个名为 myapp,标签为 latest 的镜像
docker build -t myapp:latest .

-f--file
  • 指定一个 Dockerfile 文件。如果没有指定,默认会在当前目录查找 Dockerfile
  • 这可以让你指定不同的 Dockerfile,例如在多环境构建中使用不同的文件
# 这会使用 Dockerfile.prod 文件来构建镜像。
docker build -f ./Dockerfile.prod -t myapp:prod

--build-arg用于在构建过程中传递参数。可以在 Dockerfile 中使用这些构建参数
#在 Dockerfile 中可以使用 ARG VERSION 来访问该参数。
docker build --build-arg VERSION=1.0 -t myapp:v1# Dockerfile文件
ARG VERSION RUN echo $VERSION

--no-cache
  • 禁止使用缓存的中间层,这意味着每次构建时都会重新执行每个构建步骤。
  • 这对确保镜像是完全最新的很有帮助,特别是在需要更新依赖时。
docker build --no-cache -t myapp:latest

--pull
  • 强制每次构建时都从 Docker Hub 拉取最新的基础镜像,而不是使用本地缓存的镜像。
docker build --pull -t myapp:latest

-q--quiet
  • 让 docker build 在构建时只输出镜像的 ID,而不会显示详细的构建日志。
docker build -q -t myapp:latest

--target用于指定多阶段构建中的构建目标阶段(Stage)。这在使用多阶段构建时非常有用
docker build --target build_stage -t myapp:build 

--rm默认情况下,Docker 在构建完成后会删除中间容器。如果不想删除中间容器,可以通过 --rm=false 来保持它们
docker build --rm=false -t myapp:latest

--squash这个选项在 Docker 1.13 后提供,允许合并镜像的多个层(Layer)为一个单一的层,以减少最终镜像的大小
docker build --squash -t myapp:latest

--no-cache不使用缓存来构建镜像。每个步骤都会被强制执行,即使之前已成功完成
docker build --no-cache -t myapp:latest

-o用于设置构建的输出位置,输出格式可以是 type=docker 或 type=tar。例如,可以将构建的内容保存为 tar 文件
docker build -o type=tar,dest=output.tar

-c用于设定构建的并行程度。通常用于通过并行处理来加速构建过程
docker build -c 4 -t myapp:latest

1.3 系统管理命令 

1.3.1 docker info:显示Docker系统信息

1.3.2 docker version:查看Docker版本信息

相关文章:

  • Fullstack 面试复习笔记:项目梳理总结
  • Oracle OCP与MySQL OCP认证如何选?
  • APx500录制波形
  • QGIS新手教程3:QGIS矢量图层导入与导出+Shape Tools插件绘图
  • 找到每一个单词+模拟的思路和算法
  • Unity与Excel表格交互热更方案
  • linux操作系统---网络协议
  • 配置GDAL使用工具
  • 什么是梯度磁场
  • Mysql中explain分析sql查询含义
  • Rocket客户端消息确认机制
  • Python IP可达性检测脚本解析
  • innovus: ecoAddRepeater改变hier层级解决办法
  • TinaCloud:为 TinaCMS 打造的专业云服务平台
  • 2025年6月4日第一轮
  • layer norm和 rms norm 对比
  • 【AI学习笔记】Coze工作流写入飞书多维表格(即:多维表格飞书官方插件使用教程)
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • 2025年计算机科学与网络安全国际会议(CSNS 2025)
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • 深圳做网站设计的公司/今日最新国内新闻
  • 德州极速网站建设 小程序/十大网站平台
  • 如何建立一个网站收会员费/手机百度正式版
  • 深圳宝安网站建设学习网/营销型制作网站公司
  • 怎么看网站开发用的语言/线上推广的渠道有哪些
  • 怎么选择顺德网站建设/小程序自助搭建平台