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

速通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.kler.cn/a/516008.html

相关文章:

  • Geek Uninstaller,绿色免安装轻量的应用卸载工具!
  • Mac安装Homebrew
  • FFmpeg常用命令
  • KNN的调参方法
  • windows平台intel-vpl编译
  • 查看电脑或笔记本CPU的核心数方法及CPU详细信息
  • deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
  • 嵌入式知识点总结 ARM体系与架构 专题提升(三)-中断与异常
  • 字节跳动自研HTTP开源框架Hertz简介附使用示例
  • 人工智能如何重塑音频、视觉及多模态领域的应用格局
  • 詳細講一下在RN(ReactNative)中,6個比較常用的組件以及詳細的用法
  • can not be imported as a dangling index
  • 低代码平台放入外部链接有缓存不生效
  • 【全栈】SprintBoot+vue3迷你商城-扩展:vue的基本用法
  • springboot 调用 c++生成的so库文件
  • selenium clear()方法清除文本框内容
  • 单例模式 - 单例模式的实现与应用
  • 动静态库的制作与使用(Linux操作系统)
  • 深圳大学-计算机系统(3)-实验四处理器结构实验一
  • 设计模式的艺术-迭代器模式
  • Unity|小游戏复刻|见缝插针1(C#)
  • mybatis(57/134)
  • Python 轻松扫描,快速检测:高效IP网段扫描工具全解析
  • Web 音视频(二)在浏览器中解析视频
  • Lisp语言的区块链
  • H266/VVC 量化编码中 TCQ(或 DQ)技术