Docker 命令大全

前言

Docker 是一个开源的容器化平台,使开发人员能够轻松地创建、部署和运行应用程序。它通过容器技术将应用程序及其所有依赖项打包在一起,确保在任何环境中都能一致运行。掌握 Docker 命令行工具是使用 Docker 的关键。本文将详细介绍常用的 Docker 命令,并附带示例。

一、Docker 基本命令

1.1 查看 Docker 版本

docker --version

示例输出:

Docker version 20.10.6, build 370c289

1.2 查看 Docker 系统信息

docker info

该命令显示 Docker 系统的详细信息,包括容器数量、镜像数量、存储驱动等。

二、镜像相关命令

2.1 搜索镜像

docker search <镜像名称>

例如,搜索 Nginx 镜像:

docker search nginx

2.2 拉取镜像

docker pull <镜像名称>

例如,拉取最新的 Ubuntu 镜像:

docker pull ubuntu:latest

2.3 列出本地镜像

docker images

2.4 删除镜像

docker rmi <镜像ID>

列出镜像并删除指定的镜像:

docker images
docker rmi 1234567890ab

三、容器相关命令

3.1 运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

例如,运行一个交互式的 Ubuntu 容器并进入其终端:

docker run -it ubuntu /bin/bash

3.2 列出正在运行的容器

docker ps

列出所有容器(包括停止的容器):

docker ps -a

3.3 停止容器

docker stop <容器ID>

3.4 启动容器

docker start <容器ID>

3.5 删除容器

docker rm <容器ID>

四、容器管理命令

4.1 查看容器日志

docker logs <容器ID>

4.2 进入运行中的容器

docker exec -it <容器ID> /bin/bash

4.3 查看容器资源使用情况

docker stats <容器ID>

4.4 导出容器

docker export <容器ID> > <文件名>.tar

4.5 导入容器

cat <文件名>.tar | docker import - <镜像名称>:<标签>

五、网络相关命令

5.1 查看网络

docker network ls

5.2 创建网络

docker network create <网络名称>

5.3 删除网络

docker network rm <网络名称>

5.4 连接容器到网络

docker network connect <网络名称> <容器ID>

5.5 断开容器与网络的连接

docker network disconnect <网络名称> <容器ID>

六、Docker Compose 相关命令

6.1 启动 Docker Compose

docker-compose up

6.2 后台运行 Docker Compose

docker-compose up -d

6.3 停止 Docker Compose

docker-compose down

6.4 查看 Docker Compose 日志

docker-compose logs

6.5 列出 Docker Compose 服务

docker-compose ps

七、docker run 命令详解

docker run 命令是 Docker 最常用的命令之一,用于创建并启动一个新的容器。该命令非常强大,支持多种选项来控制容器的行为和配置。下面我们详细介绍 docker run 命令的各种用法及其常用选项。

7.1 基本用法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • IMAGE: 指定要运行的镜像。
  • COMMAND: (可选)指定要在容器中执行的命令。
  • ARG...: (可选)传递给命令的参数。

7.2 常用选项

1. 交互模式 (-i-t)

  • -i--interactive: 使容器保持标准输入打开。
  • -t--tty: 分配一个伪终端。

通常一起使用以便于进入容器的交互式终端,例如:

docker run -it ubuntu /bin/bash

2. 后台运行 (-d)

  • -d--detach: 后台运行容器并返回容器ID。
docker run -d nginx

3. 命名容器 (--name)

  • --name: 为容器指定一个名称,便于管理和识别。
docker run --name mynginx -d nginx

4. 端口映射 (-p-P)

  • -p: 指定端口映射,格式为 host_port:container_port
docker run -p 8080:80 nginx
  • -P: 随机映射所有暴露的端口。
docker run -P nginx

5. 环境变量 (-e)

  • -e--env: 设置环境变量。
docker run -e "ENV_VAR_NAME=value" ubuntu env

6. 挂载卷 (-v)

  • -v--volume: 挂载主机目录或卷到容器内,格式为 host_dir:container_dir
docker run -v /host/data:/container/data ubuntu

7. 限制资源

  • --memory: 限制容器的内存使用,例如 100m
  • --cpus: 限制容器使用的 CPU 数,例如 0.5 表示限制使用 50% 的 CPU。
docker run --memory="100m" --cpus="0.5" ubuntu

8. 自动重启 (--restart)

  • --restart: 设置容器的重启策略,例如 no, on-failure, always, unless-stopped
docker run --restart=always nginx

9. 网络设置

  • --network: 指定容器使用的网络模式,例如 bridge, host, none, container:<name|id>
docker run --network=host nginx

10. 移除容器 (--rm)

  • --rm: 容器退出时自动删除容器。
docker run --rm ubuntu

11. 用户 (-u)

  • -u--user: 以指定用户身份运行容器。
docker run -u username ubuntu

12. 停止信号 (--stop-signal)

  • --stop-signal: 设置停止容器时发送的系统信号,默认是 SIGTERM
docker run --stop-signal=SIGKILL ubuntu

7.3 示例

  1. 运行一个带有环境变量的交互式 Ubuntu 容器
docker run -it -e "MY_VAR=hello" ubuntu /bin/bash
  1. 运行一个后台 Nginx 容器并映射端口
docker run -d -p 8080:80 --name mynginx nginx
  1. 运行一个具有卷挂载和资源限制的容器
docker run -d -v /host/data:/container/data --memory="200m" --cpus="1.0" ubuntu
  1. 运行一个自动重启的 MySQL 容器
docker run -d --restart=unless-stopped --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
  1. 运行一个在自定义网络中的 Redis 容器
docker network create mynetwork
docker run -d --network=mynetwork --name redis redis

docker run 命令提供了强大的功能和灵活性,通过结合不同的选项,用户可以创建符合各种需求的容器化应用。掌握这些选项将极大地提升您使用 Docker 的效率和能力。

八、docker exec 命令详解

docker exec 命令用于在一个已经运行的容器中执行命令。这对于调试和管理运行中的容器非常有用。通过 docker exec,可以进入容器的终端,检查容器的状态,运行脚本或程序,而无需停止和重新启动容器。

8.1 基本用法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • CONTAINER: 运行的容器的名称或 ID。
  • COMMAND: 要在容器中执行的命令。
  • ARG...: 传递给命令的参数。

8.2 常用选项

1. 交互模式 (-i-t)

  • -i--interactive: 使命令保持标准输入打开。
  • -t--tty: 分配一个伪终端。

通常一起使用以便于进入容器的交互式终端。例如:

docker exec -it <CONTAINER> /bin/bash

2. 用户 (-u)

  • -u--user: 指定以哪个用户身份执行命令。可以是用户名或 UID。
docker exec -u <USER> <CONTAINER> <COMMAND>

例如,以 root 用户在容器中执行命令:

docker exec -u root <CONTAINER> /bin/bash

3. 环境变量 (-e)

  • -e--env: 设置环境变量。
docker exec -e "ENV_VAR_NAME=value" <CONTAINER> <COMMAND>

4. 运行特权 (--privileged)

  • --privileged: 给予命令特权,允许访问更多系统资源。
docker exec --privileged <CONTAINER> <COMMAND>

5. 分离模式 (-d)

  • -d--detach: 在后台执行命令。
docker exec -d <CONTAINER> <COMMAND>

8.3 示例

  1. 在运行的容器中启动一个交互式 Bash 终端
docker exec -it mycontainer /bin/bash
  1. 以指定用户身份执行命令
docker exec -u username mycontainer ls /home/username
  1. 设置环境变量并执行命令
docker exec -e "MY_VAR=hello" mycontainer printenv MY_VAR
  1. 在容器中后台运行一个进程
docker exec -d mycontainer sh -c "while true; do echo hello; sleep 1; done"
  1. 使用特权模式执行命令
docker exec --privileged mycontainer /sbin/init

8.4 实际案例

调试运行中的 Web 服务器容器

假设有一个正在运行的 Nginx 容器,并且需要检查其配置文件:

docker exec -it mynginx /bin/bash

进入容器后,可以查看和编辑配置文件:

cat /etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf

运行数据库查询

假设有一个正在运行的 MySQL 容器,并且需要执行一个数据库查询:

docker exec -it mymysql mysql -uroot -p

进入 MySQL 终端后,可以运行 SQL 查询:

SHOW DATABASES;

在后台运行健康检查脚本

假设有一个需要在后台运行的健康检查脚本,以便定期检查应用程序的状态:

docker exec -d myappcontainer /path/to/healthcheck.sh

通过这些示例,我们可以看到 docker exec 命令在容器管理中的灵活性和强大功能。掌握 docker exec 命令,将有助于更有效地调试和管理 Docker 容器化应用。

总结

以上是 Docker 常用命令的简要概述,掌握这些命令将有助于您更高效地使用 Docker 进行容器管理和应用部署。在实际操作中,可以通过 docker --helpdocker <命令> --help 查看每个命令的详细用法和参数选项。希望本文能为您提供一个良好的参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言入门学习系列:基本语法

目录 引言1. 标准库与头文件2. 语句3. 表达式3.1 表达式在赋值语句中3.2 表达式在控制结构中3.3 表达式作为函数参数3.4 表达式和语句的区别 4. 语句块5. 空格6. 注释7. printf() 函数7.1 基本用法7.2 占位符7.3 输出格式 引言 #include <stdio.h>int main(void) {int a…

能耗分析与远程抄表是什么?

一、引言 在21世纪的数字化时代&#xff0c;能耗分析和远程抄表已成为现代能源管理的重要组成部分。这两项技术不仅提高了能源效率&#xff0c;还为企业和个人提供了更精细的能源使用数据&#xff0c;从而实现更科学的节能减排。 二、能耗分析的深度洞察 能耗分析是通过收集…

深入理解计算机系统 CSAPP 家庭作业6.36

A:100% 数组x的大小是缓存的两倍, x[0][0]-x[0][127]刚好存满512字节,那就意味着x[1][0]映射在缓存的组0,那就意味着x[0][i]和x[1][i]总是读到缓存后又互相替换. B:25% 缓存变为1024字节,意味着x[1][0]被映射在缓存的组128 (组0到127存放x[0][0]到x[0][127]),所以每次读一行…

【React】useCallback和useMemo使用指南

useCallback和useMemo是React中两个用于优化性能的Hooks。以下是它们的使用指南,分点表示并归纳了关键信息: useCallback useCallback返回一个记忆化的回调函数,该回调函数只在它的依赖项发生改变时才会更新。这对于在组件渲染之间保持稳定的引用特别有用,可以防止不必要…

2024.6.15 英语六级 经验与复盘

文章目录 英语六级 经验与复盘2024年上半年六级考试(2024 6.8 - 6.15)前情提要&#xff1a;经验&#xff1a;作文&#xff1a;(30min)听力&#xff1a;(25min)SectionC(精细阅读) (30min)SectionB(段落匹配) (15min)SectionA(选词填空) (5min / 舍弃)翻译&#xff08;20min&…

整理好了!2024年最常见 20 道并发编程面试题(七)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道并发编程面试题&#xff08;六&#xff09;-CSDN博客 十三、请描述什么是生产者-消费者问题以及如何解决它。 生产者-消费者问题&#xff0c;也称为有限缓冲问题&#xff0c;是计算机科学和操作系统中的一个经典…

cs与msf权限传递,以及mimikatz抓取明文密码

cs与msf权限传递&#xff0c;以及mimikatz抓取win10明文密码 1、环境准备2、Cobalt Strike ------> MSF2.1 Cobalt Strike拿权限2.2 将CS权限传递给msf 3、MSF ------> Cobalt Strike3.1 msf拿权限3.2 将msf权限传递给CS 4、使用mimikatz抓取明文密码 1、环境准备 攻击&…

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend UNION存在的问题 到PostgreSQL16.3版本为止&#xff0c;UNION执行计划通常不是最优的&#xff0c;优化器有两种处理方法&#xff1a; 优化器只考虑使用Append节点并通过使用Hash Aggregate&#xff0c;Append -…

【人工智能】文本提取技术的算法延伸

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 文本提取技术中用到的算法 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency…

无人机的发展

朋友们&#xff0c;你们知道吗&#xff1f;无人机的发展之路可谓是科技界的一股清流&#xff0c;风头正劲啊&#xff01;从最初简单的遥控飞机到现在各种智能功能的加持&#xff0c;无人机真是越来越神奇了&#xff01; 首先&#xff0c;无人机在航拍领域大放异彩&#xff01;无…

复杂度分析

大O复杂度表示法 例子1 int cal(int n) {int sum 0;int i 1;for (; i < n; i) {sum sum i;}return sum;}代码的 int sum 0和 int i 1需要1个unit_time的执行时间遍历那部分的代码&#xff0c;需要执行n遍&#xff0c;所以需要2n*untime_time的执行时间所以整个代码的…

Swift 是 C++ 的最佳继任者

苹果称 Swift 是 C 的最佳继任者 Swift 是苹果公司在 2014 年推出的&#xff0c;一款旨在替代 Objective-C 的编程语言。但苹果语言和运行时总监 Ted Kremenek 在 WWDC24 的主题演讲中表示&#xff0c;Swift 也将取代 C。 “Swift 的安全性、速度和易用性&#xff0c;加上内…

利用485缓存器实现两主一丛RS485串行通信

作者:艺捷自动化&#xff0c;其旗下产品有艺捷自动化网站和易为二维码小程序&#xff08;微信&#xff09; 对于工控自动化领域的电气工程师来说&#xff0c;基于RS485的串行通讯是最常见的。绝大部分仪表都能支持这种通讯方式。RS485通讯&#xff0c;是一种异步半双工模式&…

联想电脑 调节屏幕亮度不起使用,按F5,F6,屏幕上的hotkeys进度条是在改变,但是屏幕没有一些作用的处理方法

1、查看驱动是否正常 Win键X &#xff0c;设备管理器 发现似乎挺正常的。 查看原厂驱动&#xff1a;联想电脑管家 这样看来&#xff0c;驱动是没有问题了。 2、看看设置电池模式 其实还是这个电池模式的问题导致。 如果处于养护模式的话&#xff0c;充电只在75%~80%&#x…

Vue3 生命周期函数及其与Vue2的对比总结

Vue3 继续保留了 Vue2 的生命周期钩子&#xff0c;但在 Composition API&#xff08;setup 函数&#xff09;中&#xff0c;它们被改为了一组导入函数。以下是它们的对比&#xff1a; Vue2 生命周期钩子和 Vue3 对应的生命周期函数&#xff1a; 在 Vue3 中&#xff0c;所有的…

Python | Leetcode Python题解之第145题二叉树的后序遍历

题目&#xff1a; 题解&#xff1a; class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…

Maven常用命令介绍(Ⅰ)

基本命令 Maven生命周期 Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的&#xff0c;这意味着生命周期本身不做任何实际的工作&#xff0c;生命周期只是定义了一系列的阶段&#xff0c;并确定这些阶段的执行顺序。而在执行这些阶段时&#xff0c;…

【JavaScript脚本宇宙】深入解析六大图像裁剪库:帮你找到最佳选择

图像裁剪新纪元&#xff1a;从基础到进阶的六大解决方案 前言 随着数字化内容的爆炸式增长&#xff0c;图像编辑和裁剪功能已成为多个应用程序中的核心需求。无论是社交媒体平台、电子商务网站还是个人博客&#xff0c;能够快速、方便地裁剪和调整图像以适应不同需求的重要性…

System-Verilog 实现DE2-115流水灯

文章目录 一、 SystemVerilog1. SystemVerilog简介2. 基本语法和特性 二、实验过程hello.v文件引脚分配 三、实验效果参考 一、 SystemVerilog 1. SystemVerilog简介 SystemVerilog是一种高级的硬件描述语言&#xff08;HDL&#xff09;&#xff0c;它不仅继承了Verilog语言的…

大数据之Hadoop是什么?Hadoop起源?

什么是Hadoop Hadoop 是一个用于存储和处理大规模数据集(大数据)的分布式存储和分布式计算平台。它由 Apache 软件基金会维护,并基于 Java 编程语言编写。Hadoop 的核心设计理念是能够在普通硬件上运行,并且能够处理非常大的数据集。狭义上说Hadoop就是一个框架平台,广义…