速通Docker === 使用最佳实践总结

 

目录

主要使用步骤

1. 命令

2. 网络

3. 存储

卷存储(Volumes)

目录挂载(Bind Mounts)

比较

4. 环境变量

5. 端口

示例:启动 MySQL 容器

解释:

总结


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主要使用步骤

根据提供的图和命令示例,我们可以总结出 Docker 的主要使用步骤如下:

1. 命令

Docker 的操作主要通过命令行工具进行。常用的命令包括 docker run(运行容器)、docker stop(停止容器)、docker start(启动容器)、docker rm(删除容器)等。

  • docker pull IMAGE:从镜像仓库中拉取或更新镜像。
  • docker push IMAGE:将镜像推送到镜像仓库。
  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:运行一个新的容器。
  • docker stop CONTAINER:停止一个或多个正在运行的容器。
  • docker start CONTAINER:启动一个或多个已经被停止的容器。
  • docker restart CONTAINER:重启容器。
  • docker rm CONTAINER:删除一个或多个容器。
  • docker rmi IMAGE:删除一个或多个镜像。
  • docker ps:列出当前所有正在运行的容器。
  • docker logs CONTAINER:获取容器的日志。

2. 网络

Docker 容器可以配置网络,以便容器之间或容器与外部世界进行通信。网络配置可以通过 docker network 命令进行管理。

  • docker network ls:列出所有网络。
  • docker network create NETWORK:创建一个新网络。
  • docker network inspect NETWORK:查看网络的详细信息。
  • docker network connect NETWORK CONTAINER:将容器连接到网络。
  • docker network disconnect NETWORK CONTAINER:将容器从网络中断开。

3. 存储

Docker 容器的数据持久化通过卷(Volumes)实现。卷可以挂载到容器中,用于存储数据。例如,使用 -v 参数将宿主机的目录挂载到容器中。

目录挂载是将宿主机上的目录直接挂载到容器内。这种方式使得容器可以访问宿主机上的文件和目录,但这种方式不如卷存储安全,因为宿主机的文件系统直接暴露给了容器。

区分目录挂载和卷映射,可通过挂载的路径中是否包含 / 或者 ./来判断

卷存储(Volumes)

Docker 卷是 Docker 管理的数据存储机制,它们独立于容器的生命周期,即使容器被删除,卷中的数据也不会丢失。卷可以被多个容器挂载,非常适合用于持久化数据。

创建和使用卷的命令:

  • docker volume create VOLUME_NAME:创建一个新的 Docker 卷。
  • docker volume ls:列出所有 Docker 卷。
  • docker volume inspect VOLUME_NAME:查看卷的详细信息。
  • docker volume rm VOLUME_NAME:删除一个 Docker 卷。

使用卷的示例命令:

docker run -d \-v mydata:/path/in/container \myimage

这里,mydata 是 Docker 卷的名称,/path/in/container 是容器内挂载卷的路径。

目录挂载(Bind Mounts)

目录挂载是将宿主机上的目录直接挂载到容器内。这种方式使得容器可以访问宿主机上的文件和目录,但这种方式不如卷存储安全,因为宿主机的文件系统直接暴露给了容器。

使用目录挂载的示例命令:

docker run -d \-v /host/path:/path/in/container \myimage

这里,/host/path 是宿主机上的目录路径,/path/in/container 是容器内挂载目录的路径。

比较
  • 持久性:卷存储和目录挂载都可以实现数据的持久化,但卷存储更安全,因为它是 Docker 管理的。

  • 共享性:卷可以被多个容器挂载,而目录挂载通常只用于单个容器。

  • 性能:目录挂载可能提供更好的性能,因为它直接使用宿主机的文件系统,但这也取决于具体的使用场景。

4. 环境变量

环境变量用于在容器启动时传递配置信息。例如,使用 -e 参数设置环境变量。

  • -e KEY=VALUE--env KEY=VALUE:设置环境变量。
  • -e KEY--env KEY:设置环境变量,值从宿主机环境变量中获取。

5. 端口

端口映射允许容器内的服务通过宿主机的端口访问。例如,使用 -p 参数将容器的端口映射到宿主机的端口。

  • -p 宿主机端口:容器端口--publish 宿主机端口:容器端口:映射端口。
  • -p 容器端口--publish 容器端口:让 Docker 自动在宿主机上选择端口。

 

示例:启动 MySQL 容器

以下是一个启动 MySQL 容器的示例命令:

docker run -d -p 3306:3306 \
-v /home/docker/mysql/config:/etc/mysql/conf.d \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=shiguang \
--name mysql \
mysql:8.0.37-debian

解释:

  • -d:后台运行容器。

  • -p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口。

  • -v /home/docker/mysql/config:/etc/mysql/conf.d:将宿主机的 /home/docker/mysql/config 目录挂载到容器的 /etc/mysql/conf.d 目录,用于配置 MySQL。

  • -v /home/docker/mysql/data:/var/lib/mysql:将宿主机的 /home/docker/mysql/data 目录挂载到容器的 /var/lib/mysql 目录,用于存储 MySQL 数据。

  • -e MYSQL_ROOT_PASSWORD=shiguang:设置环境变量 MYSQL_ROOT_PASSWORD,用于设置 MySQL 的 root 用户密码。

  • --name mysql:为容器指定名称 mysql

  • mysql:8.0.37-debian:指定要运行的镜像,这里是 MySQL 8.0.37 的 Debian 版本。

总结

通过以上步骤和示例,我们可以看到 Docker 的使用主要包括命令操作、网络配置、存储管理、环境变量设置和端口映射。这些步骤确保了容器的可移植性、安全性和灵活性。Docker 的最佳实践还包括使用官方镜像、定期更新镜像、合理配置资源限制等,以确保容器的稳定运行和资源的高效利用。

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

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

相关文章

Postgresql源码(140)理解PG的编译流程(make、Makefile、Makefile.global.in)

PG16 PG中使用的makefile看起来代码比较多,但是实际逻辑比较简单,这里做一些抽象总结。 总结 Makefile.global.in的$(recurse)宏自动生成了target,可以方便的进入内存目录进行编译。 all: all-common-recurse all-common-recurse: submak…

c语言中的数组(上)

数组的概念 数组是⼀组相同类型元素的集合; 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。 数组创建 在C语言…

戴尔电脑设置u盘启动_戴尔电脑设置u盘启动多种方法

最近有很多网友问,戴尔台式机怎么设置u盘启动,特别是近两年的戴尔台式机比较复杂,有些网友不知道怎么设置,其实设置u盘启动有两种方法,下面小编教大家戴尔电脑设置u盘启动方法。 戴尔电脑设置u盘启动方法一、戴尔进入b…

2【选修】再探宝可梦、数码宝贝分类器

1 Pokemon/Digimon Classifier 1.1 Observation 1.2 Function 1.3 Loss 1.4 Training Examples – OOPS what do we want? 2 What is the probability of sampling bad D t r a i n D_{train} Dtrain​ 2.1 Theroy – Larger N N N smaller ∣ H ∣ |H| ∣H∣ 2.2…

ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件

介绍 .NET 6.0 已经发布,ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如,“谁动了我的奶酪”,它在哪里Startup.cs?在这篇文章中,我将深入研究这个问题,看看它移动到了哪里以及其他变化。…

欧几里得算法求最小公倍数和最大公约数

一.最大公约数 gcd(a,b)gcd(b,a%b) 递归式,当且仅当b0,易得0和a的公约数为a.(可作为递归的出口) 证明: int gcd(int a, int b) {if (b 0) return a;else return gcd(b, a % b); } 二.最小公倍数 给定整数a b,求a b的最小公倍数 有图可知…

文档解析:PDF里的复杂表格、少线表格如何还原?

PDF中的复杂表格或少线表格还原通常需要借助专业的工具或在线服务,以下是一些可行的方法: 方法一:使用在线PDF转换工具 方法二:使用桌面PDF编辑软件 方法三:通过OCR技术提取表格 方法四:手动重建表格 …

【C++高并发服务器WebServer】-2:exec函数簇、进程控制

本文目录 一、exec函数簇介绍二、exec函数簇 一、exec函数簇介绍 exec 函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。 exec函数族的函数执行成功后不会返回&…

TDengine 与上海电气工业互联网平台完成兼容性认证

在工业数字化转型和智能化升级的浪潮中,企业对高效、可靠的数据管理解决方案的需求日益增长。特别是在风电智能运维、火电远程运维、机床售后服务等复杂多样的工业场景下,如何实现海量设备和时序数据的高效管理,已经成为推动行业升级的关键。…

machine learning knn算法之使用KNN对鸢尾花数据集进行分类

通过导入必要的scikit-learn导入必要的库,加载给定的数据,划分测试集和训练集之后训练预测和评估即可 具体代码如下: import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…

C++ 入门速通-第1章【黑马】

内容来源于:黑马 集成开发环境:CLion CLion的官方下载网址:CLion: A Cross-Platform IDE for C and C by JetBrains 我在b站找到了一个安装教程,可以按照这个视频教程进行安装(内置汉化教程): …

Python的进程和线程

ref 接受几个设定: 进程是一家almost密不透风的公司,缅甸KK园区 线程里面工作的…人 进程**[园区]**内公共资源对于进程来说,可以共享. 别的园区[进程],一般不能和自己的园区共享人员资源,除非… 好的,现在再接受设定: 单个CPU在任一时刻只能执行单个线程,只有…

自动化01

测试用例的万能公式:功能测试界面测试性能测试易用性测试安全性测试兼容性测试 自动化的主要目的就是用来进行回归测试 新产品--第一个版本 (具备丰富的功能),将产品的整体进行测试,人工创造一个自动化测试用例,在n个版本的时候…

jmeter中对接口进行循环请求后获取相应数据

1、工作中遇到一个场景就是对某个单一接口进行循环请求,并需要获取每次请求后返回的相应数据; 2、首先就在jmeter对接口相关组件进行配置,需要组件有:循环控制器、CSV数据文件设置、计数器、访问接口、HTTP信息头管理器、正则表达…

Jetson Xavier NX 安装 CUDA 支持的 PyTorch 指南

本指南将帮助开发者完成在 Jetson Xavier NX 上安装 CUDA 支持的 PyTorch。 安装方法 在 Jetson 上安装 Pytorch 只有两种方法。 一种是直接安装他人已经编译好的 PyTorch 轮子;一种是自己从头开始开始构建 PyTorch 轮子并且安装。 使用轮子安装 可以从我的 Gi…

Ansible fetch模块详解:轻松从远程主机抓取文件

在自动化运维的过程中,我们经常需要从远程主机下载文件到本地,以便进行分析或备份。Ansible的fetch模块正是为了满足这一需求而设计的,它可以帮助我们轻松地从远程主机获取文件,并将其保存到本地指定的位置。在这篇文章中&#xf…

【AI论文】生成式视频模型是否通过观看视频学习物理原理?

摘要:AI视频生成领域正经历一场革命,其质量和真实感在迅速提升。这些进步引发了一场激烈的科学辩论:视频模型是否学习了能够发现物理定律的“世界模型”,或者,它们仅仅是复杂的像素预测器,能够在不理解现实…

论文速读|Matrix-SSL:Matrix Information Theory for Self-Supervised Learning.ICML24

论文地址:Matrix Information Theory for Self-Supervised Learning 代码地址:https://github.com/yifanzhang-pro/matrix-ssl bib引用: article{zhang2023matrix,title{Matrix Information Theory for Self-Supervised Learning},author{Zh…

视觉语言模型 (VLMs):跨模态智能的探索

文章目录 一. VLMs 的重要性与挑战:连接视觉与语言的桥梁 🌉二. VLMs 的核心训练范式:四种主流策略 🗺️1. 对比训练 (Contrastive Training):拉近正例,推远负例 ⚖️2. 掩码方法 (Masking):重构…

数据结构——堆(介绍,堆的基本操作、堆排序)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研) 记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结网上借鉴&#xff0…