《‘狂’人日记》---Docker从入门到进阶之进阶操作(一)

简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 本篇文章将向您展示常用的Docker技术,让您快速入门

提供前面三章的学习,相信大家已经对docker有了初步了解,那么今天就玩点进阶操作,对Docker的网络进行管理

1.容器网络

1.1.映射网络

**容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。\
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。\
使用 docker ps 可以看到,本地主机的 49153 被映射到了容器的 80 端口。此时访问本机的 49153 端口即可访问容器 内 web 应用提供的界面。**


# 指定映射
docker run -dit --name nginxweb1 -p 8081:80 nginx

# 随机映射
docker run -dit --name nginxweb4 -P nginx

# 查看所有容器
docker ps -a

image.png

1.2.主机网络

可以使用 --network=host 参数来直接使用宿主机网络

docker run -dit --network=host --name nginx-host nginx

image.png

1.3.容器互联

1.3.1 新建网桥

-d 参数指定 Docker 网络类型,有 bridge overlay 。其中 overlay 网络 类型用于 Swarm mode,在本小节中你可以忽略它。

docker network create -d bridge new-net

1.3.2 容器互联创建容器

docker run -dit --name box1 --network new-net busybox
docker run -dit --name box2 --network new-net busybox

1.3.3 容器互联测试

# 进入box1容器
docker exec -it box1 sh

# ping测试
ping box2

image.png

2.自定义docker0网络

当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交 换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1 ,掩码为 255.255.0.0 。此后启动的容器内的网口也会自动分配一个同一网段( 172.17.0.0/16 )的 地址。 当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以 收到相同的数据包)。这对接口一端在容器内,即 eth0 ;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开 头(例如 vethAQI2QT )。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所 有容器之间一个虚拟共享网络。

2.1 移除原有网络

2.1.1 安装btctl命令

yum install -y bridge-utils

[](https://link.juejin.cn?target=)

2.1.2 查询网桥信息

brctl  show

[](https://link.juejin.cn?target=)

2.1..3 关闭docker服务

systemctl stop docker

[](https://link.juejin.cn?target=)

2.1.4 停止docker0网桥

ip link set dev docker0 down

[](https://link.juejin.cn?target=)

2.1.5 删除docker0网桥

brctl delbr docker0

[](https://link.juejin.cn?target=)

2.1.6 查询所有网桥信息

brctl show

image.png

2.2 自定义新网络

2.2.1 创建新网桥bridge0

brctl addbr bridge0

[](https://link.juejin.cn?target=)

2.2.2 查询创建的bridge0

brctl show

image.png[](https://link.juejin.cn?target=)

2.2.3 设置新网桥的网络段地址

ip addr add 192.168.0.1/24 dev bridge0

2.2.4 启动bridge0网桥

ip link set dev bridge0 up

2.2.5 查询bridge0网桥信息

ifconfig bridge0

image.png[](https://link.juejin.cn?target=)

7.4.2.6、添加新网桥到配置文件

vi /etc/sysconfig/docker
# 添加 -b=bridge0 到 OPTIONS 中
OPTIONS='-b=bridge0'

2.2.7 加载配置文件,重启docker服务

systemctl daemon-reload
systemctl restart docker

image.png

2.3 使用新网络部署应用测试docker0网络

2.3.1 创建一个nginx容器

docker run -dit --name nginx-net nginx

2.3.2 查看容器的状态

docker ps -a

image.png[](https://link.juejin.cn?target=)

2.3.3 查看容器的bridge

docker inspect -f {{.NetworkSettings.Networks.bridge}} nginx-net

image.png

目录
相关文章
|
9天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
37 2
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
85 5
|
11天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
17天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
54 2
|
24天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
35 3
|
29天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
45 2
|
1月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
1月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)
|
1月前
|
Ubuntu Linux 应用服务中间件
Docker容器入门实战
Docker容器入门实战