【Docker 】深入探索 Docker :高阶操作与配置设置(上)

冉升10个月前行业资讯725

Docker 是现代应用开发和部署的重要工具,能够帮助开发者轻松创建、管理和部署容器化应用。除了基本的命令外,掌握高阶操作和配置设置将大大提高您的工作效率和应用性能。本文将介绍一些 Docker 的高阶操作,包括网络管理、数据持久化、容器资源设置、监控容器状态和性能、日志管理等。


一、修改 Docker 配置文件

Docker的行为和性能可以通过修改其配置文件来调整。一般情况下,Docker的默认配置文件位于 /etc/docker/daemon.json。以下是一些常见的配置选项:


示例配置:

{
  "storage-driver": "overlay2",
  "log-level": "info",
  "insecure-registries": ["myregistry.local:5000"],
  "data-root": "/var/lib/docker"
}

配置项解释:


storage-driver: 指定Docker使用的存储驱动。常见选项包括 overlay2, aufs, btrfs 等。

log-level: 设置日志级别,可以是 debug, info, warn, error。

insecure-registries: 指定不安全的注册表地址,适用于开发环境。

data-root: 指定Docker数据存储的根目录。

1.1 配置镜像源

在某些地区,Docker 官方镜像源可能访问速度较慢,因此可以配置国内的镜像源,以提高拉取镜像的速度。以下是配置镜像源的步骤:


步骤:

1.创建或编辑 Docker 配置文件:

配置文件通常位于 /etc/docker/daemon.json。


sudo nano /etc/docker/daemon.json


2.添加镜像源配置:

可以选择以下常用的镜像源之一:


镜像源说明
阿里云https://.mirror.aliyuncs.com
网易云https://hub-mirror.c.163.com
腾讯云https://mirrors.cloud.tencent.com

示例配置(以阿里云为例):

{
  "registry-mirrors": ["https://<your-aliyun-id>.mirror.aliyuncs.com"]
}

3.重启 Docker 服务

sudo systemctl restart docker
  1. 4.验证配置

检查配置是否生效:

docker info | grep "Registry Mirrors"

1.2 配置存储驱动

Docker 支持多种存储驱动,选择合适的存储驱动可以优化容器性能和存储效率。修改存储驱动同样在 daemon.json 中进行配置。

示例配置

{
  "storage-driver": "overlay2"
}

二、Docker 网络配置

Docker 提供了多种网络模式,包括 bridgehostnone 和自定义网络。通过配置网络,可以实现容器之间的通信及外部访问。

网络模式说明

模式描述
bridge默认模式,容器通过虚拟网桥进行通信
host容器共享主机的网络栈
none容器没有网络
overlay跨多个 Docker 主机的网络

2.1 创建自定义网络

创建一个自定义桥接网络:

docker network create my_bridge_network

2.2 连接和断开网络

将容器连接到网络:

docker network connect my_bridge_network my_container

从网络中断开容器:

docker network disconnect my_bridge_network my_container

2.3 查看网络信息

列出所有网络:

docker network ls

查看特定网络的详细信息:

docker network inspect my_bridge_network

2.4 优化网络性能

配置容器的网络模式为 host,以减少网络延迟。

示例

docker run --network host -d --name my_app my_image

示例:创建自定义网络

创建一个名为 my_bridge 的自定义桥接网络,并在该网络上启动两个容器。

步骤

  1. 1.创建自定义网络

docker network create my_bridge
  1. 2.启动容器并连接到自定义网络

docker run -d --name container1 --network my_bridge nginx
docker run -d --name container2 --network my_bridge nginx
  1. 3.验证网络连接

在 container1 中 ping container2

docker exec -it container1 ping container2

三、数据卷与持久化存储

Docker 容器中的数据是临时的,使用卷 (Volumes) 可以实现数据的持久化。这使得数据在容器重启或删除后仍然存在。

3.1 创建和使用卷

  1. 创建卷

使用 docker volume create 命令创建数据卷。

docker volume create my_volume
  1. 挂载卷到容器

在运行容器时挂载数据卷,以实现数据的持久化:

docker run -d -v my_volume:/data --name my_container busybox

3.2 查看和管理卷

  1. 1.查看所有卷

使用以下命令查看系统中的所有 Volume:

docker volume ls
  1. 2.挂载卷到容器

在运行容器时挂载数据卷,以实现数据的持久化:

docker run -d -v my_volume:/data --name my_container busybox

3.2 查看和管理卷

  1. 1.查看所有卷

使用以下命令查看系统中的所有 Volume:

docker volume ls
  1. 2.查看卷的详细信息
    使用以下命令查看卷的详细信息:

docker volume inspect my_volume
  1. 3.删除卷
    删除不再需要的卷:

docker volume rm my_volume

示例:创建卷并挂载到容器

步骤

  1. 1.创建卷

  2. docker volume create my_volume
  3. 2.挂载卷到容器

  4. docker run -d -v my_volume:/data --name my_container busybox
  5. 3.验证卷是否挂载成功


  6. docker exec -it my_container shls /data

3.3 备份与恢复卷数据

备份 Docker 卷

可以使用 tar 命令备份卷中的数据:

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox tar cvf /backup/my_volume_backup.tar /data

恢复 Docker 卷

从备份中恢复数据的命令如下:

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox sh -c "cd /data && tar xvf /backup/my_volume_backup.tar --strip 1"

————————————————

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ


相关文章

【Docker】深入理解 Dockerfile:构建高效 Docker 镜像的指南

【Docker】深入理解 Dockerfile:构建高效 Docker 镜像的指南

Dockerfile 是 Docker 的核心组成部分之一,它定义了如何构建 Docker 镜像。Dockerfile 是一份文本文件,其中包含了构建 Docker 镜像所需的所有命令和参数。通过 D...

运维监控体系总结

总结归纳运维工作中的监控内容。监控目标:明白监控的重要性以及使用监控要实现的业务目标通常包括以下三点:对目标系统进行实时监控监控可以实时反馈目标系统的当前状态 目标系统硬件、软件、业务是否正常、目前处...

云计算概念以及与云服务的区别

云计算概念以及与云服务的区别

1.云的概念1.1 什么是云?        “云”在计算机科学和信息技术领域通常指“云计算”,即通过互联网提供计算资源(如服务器、存储、数据库、网络、软件、分...

IPV6的相关网络问题

IPV6的相关网络问题

一.什么是NAT64转换NAT64(Network Address Translation 64)是一种网络地址转换技术,它主要被设计用来促进IPv4和IPv6两种网络协议之间的通信。随着IPv4地址...

MyBatisPlus从零到一:快速入门与核心功能详解(2)

MyBatisPlus从零到一:快速入门与核心功能详解(2)

二、核心功能刚才的案例中都是以 id 为条件的简单 CRUD,一些复杂条件的 SQL 语句就要用到一些更高级的功能了。2.1 条件构造器:除了新增以外,修改、删除、查询的 SQL 语句都需要指定 wh...

如何理解运维

如何理解运维

运维工程师(运营),负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率,优化资源利用率提高整体的投资回报率。运维工程师面对的最大挑战是大规模集群的管理问题,如何管理好几十万台服务器上的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。