IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker2——(私有)仓库、Docker网络、容器通信、Harbor搭建 -> 正文阅读

[系统运维]Docker2——(私有)仓库、Docker网络、容器通信、Harbor搭建

一、Docker仓库

在这里插入图片描述
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。

二、私有仓库搭建

  • Docker Hub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像残酷,官方也提供Registry镜像,使得我们搭建私有仓库变得非常简单。

  • 所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

1、载入镜像

docker load -i registry2.tar #载入镜像
docker volume ls
docker volume prune #清除之前存储缓存

2、生成key和CA证书并发送

mkdir /root/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt #生成key和CA证书
cp /root/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt #发送认证书

在这里插入图片描述
3、更改解析

vim /etc/hosts

在这里插入图片描述
4、创建镜像

docker tag nginx:latest reg.westos.org/nginx:latest #打标签
docker run -d --name registry -v /opt/registry/:/var/lib/opt/registry/ -p 443:443 -v "$(pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key registry
-v /opt/registry:/var/lib/registry #指定存储路径
-p 5000:5000 #指定端口映射

5、导入

docker push reg.westos.org/nginx #导入
curl -k https://reg.westos.org/v2/_catalog

在这里插入图片描述
6、配置阿里云加速器
不是用镜像加速器,从网络上拉取镜像的速度很慢!
在这里插入图片描述

在这里插入图片描述

vim /etc/docker/daemon.json
\\\
{
  "registry-mirrors": ["https://hfz3ac1q.mirror.aliyuncs.com"]
}
///
systemctl daemon-reload
systemctl restart docker #重启

三、Docker网络

1、Docker原生网络

docker的镜像是令人称道的地方,但网络功能还是相对薄弱的部分。
docker安装后会自动创建3种网络:bridge、host、none
在这里插入图片描述docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。
在这里插入图片描述
1.bridge模式
bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的。
容器通过宿主机的NAT规则后可以访问外网。
在这里插入图片描述
在这里插入图片描述
容器的ip与桥接接口在一个网段,并且ip地址以网桥ip为基础递增,以网桥ip为网关,开启容器的时候宿主机就能ping通容器

2.host网络模式
在这里插入图片描述

docker run -it --name vm1 --network host busybox

当配置完容器busybox使用host网络模式之后,在宿主机和容器里ipaddr的结果是完全一样的
在这里插入图片描述
在这里插入图片描述
3.none模式
在这里插入图片描述

2、自定义网络

在这里插入图片描述

  • 一个bridge网络是Docker中最常用的网络类型。桥接网络类似于默认bridge网络,但添加一些新功能(例DNS)并删除一些旧的能力
docker network rm mynet1 #删除网桥
docker network create -d bridge mynet1 #创建自定义网桥
docker network inspect mynet1 #查看网桥信息
docker network create --subnet 1.2.3.0/24 --gateway 1.2.3.1 mynet1 #创建自定义网桥且自定义网段
docker network ls
docker run -it --name vm1 --network mynet1 --ip 1.2.3.100 busybox #运行容器在这个网桥下,且定义网段

同一网桥下的是可以ping通的:
在这里插入图片描述

  • 桥接到不同网桥上的容器,彼此是不通信的
  • docker在设计上就是要隔离不同network的

那么如何使两个不同网桥的容器通信呢:使用 docker network connect命令为vm1添加一块my_net2 的网卡

docker network create --subnet 2.3.4.0/24 --gateway 2.3.4.1 mynet2
docker run -it --name vm3 --network mynet2 --ip 2.3.4.100 busybox
docker network connect mynet2 vm1
docker start vm1
docker container attach vm1

发现也能ping同其他容器指定网段:
在这里插入图片描述

3、Docker容器通信

1.使用名称

  • 容器之间除了使用ip通信外,还可以使用容器名称通信
  • docker 1.10开始,内嵌了一个DNS server
  • dns解析功能必须在自定义网络中使用
  • 启动容器时使用 --name 参数指定容器名称

原理图:
在这里插入图片描述
在这里插入图片描述

2.container模式

  • 在容器创建时使用–network=container:vm1指定。(vm1指定的是运行的容器名)
  • 处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用localhost高效快速通信
    在这里插入图片描述
docker run -it -d --name vm4 --network container:vm1 busybox #创建关于vm1的容器vm4且

可以看出使用这种模式后vm1的网络和vm4完全相同,使用这种模式可以实现在一个容器上访问localhost即可访问另一个容器
在这里插入图片描述
3.link模式

docker run -it --name vm6 --link testplus:web busybox #web为testplus在vm6内的别名

在这里插入图片描述

在这里插入图片描述

4、跨主机容器网络

在这里插入图片描述
在这里插入图片描述

1.在两个虚拟机上各添加一个网卡eth1,并且编辑网络配置文件:

vim /etc/sysconfig/network-scripts/ifcfg-eth1
///
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
\\\
ifup eth1
ip link set eth1 promisc on	#打开混杂模式

在这里插入图片描述
2.两台主机上各创建macvlan网络
server1:

root@server1 ~]# docker network create -d macvlan --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=eth1 mynet1
b124690d2cb5ff06c1f9042fea13674a5369fa406b1d37db183491ae4d1ccde7
[root@server1 ~]# docker run -it --name vm1 --rm --network mynet1 --ip 172.20.0.100 busyboxplus
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
140: eth0@if139: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:14:00:64 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.100/24 brd 172.20.0.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

server2:

# docker network create -d macvlan --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=eth1 mynet1
f8dd912398e8cfb44b5d51c6af7b767ab739f068405bc6d530387994fb5c6bbe
[root@server2 docker]# docker run -it --name vm2 --rm --network mynet1 --ip 172.20.0.200 busyboxplus
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
5: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:14:00:c8 brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.200/24 brd 172.20.0.255 scope global eth0
       valid_lft forever preferred_lft forever

两个容器就可以通信了:
在这里插入图片描述
busybox工作在同一macvlan下测试相互通信。为容器指定macvlan运行时需要手动指定ip:
在这里插入图片描述

在这里插入图片描述

  • 需要注意的是,macvlan会独占主机网卡,但可以使用vlan子接口(即在一个网卡上创建多个ip)实现多macvlan网络。
  • vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id 取值为1~4094。
    eg:
[root@server1 ~]# docker network create -d macvlan --subnet 172.21.0.0/24 --gateway 172.21.0.1 -o parent=eth1.1 myneta
301c217c6857ebf1f5be948ae5c2758f083964b040fa45c5bb1f3e2032597b3a
[root@server2 ~]# docker network create -d macvlan --subnet 172.21.0.0/24 --gateway 172.21.0.1 -o parent=eth1.2 mynetb
e1f9231ea8c7a2860afa9fe2387f5e08875f187633ebff255e2e262ca0c817f1

在这里插入图片描述

四、企业级仓库Harbor搭建

1、将docker-compose二进制文件放入/usr/local/bin目录下

mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose #对二进制文件赋可执行权限

2、解压

tar zxf harbor-offline-installer-v1.10.1.tgz
cd harbor/
docker-compose --version #测试下docker-compose是否安装成功

3、生成密钥认证

mkdir /data
cp -r /root/certs/ /data/

4、改配置

cd /root/harbor
vim /root/harbor/harbor.yml
./install.sh #安装
docker-compose down #关闭

在这里插入图片描述
在这里插入图片描述

5、地址解析

vim /etc/hosts
///
172.25.51.1 server1 reg.westos.org
\\\

6、测试登陆

docker login reg.westos.org #登陆
docker tag nginx:latest reg.westos.org/library/nginx:latest
docker push reg.westos.org/library/nginx:latest

firefox访问,在访问端需配置本地解析(真机)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 11:14:16  更:2021-07-23 11:14:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:02:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计