Docker网络及私有仓库配置

Docker网络配置#

网络模式#

Docker 使用了 Linux 的 Namespaces 技术来进行资源隔离,如 PID Namespace 隔离进程,Mount Namespace 隔离文件系统,Network Namespace 隔离网络等。一个 Network Namespace 提供了一份独立的网络环境,包括网卡、路由、Iptable 规则等都与其他的 Network Namespace 隔离。一个 Docker 容器一般会分配一个独立的 Network Namespace

host#

如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的IP 和端口。

container#

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信

none#

这个模式和前两个不同。在这种模式下,Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。

bridge#

bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上

使用pipework配置静态IP#

下载地址

Copy
# --net=none [root@SR ~]# unzip pipework-master.zip # 解压 [root@SR ~]# cp /root/pipework-master/pipework /usr/local/bin/ # 添加命令环境变量 [root@SR ~]# docker run -itd --net=none --privileged=true centos /bin/bash ''' privileged=true:是否让容器拥有root权限 ''' [root@SR ~]# docker run -it centos:latest bash # 没有开启root权限 [root@fe0a5863aba5 /]# ls /dev '''console core fd full mqueue null ptmx pts random shm stderr stdin stdout tty urandom zero 查看文件内容较少 ''' [root@SR ~]# docker run -it --privileged centos:latest bash # 启用root进行运行 [root@8b711bcca77c /]# mount /dev/sda1 /opt/ # 能挂载成功 [root@SR ~]# pipework br0 cdfb47497dfe 10.1.1.111/24 # 配置静态IP IP+掩码@网关

Docker私有化仓库#

有时候使用 Docker Hub 这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,这里使用官方提供的工具 docker-registry 来配置私有库

配置#

Copy
[root@SR ~]# docker pull registry # 拉取仓库镜像 # 使用5000端口该目录做映射 [root@SR ]# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry:latest [root@SR]# netstat -antup | grep 5000 # 查看监听端口

Copy
[root@SR ~]# vim /etc/docker/daemon.json # 配置仓库地址 { "insecure-registries": [ "10.1.1.2:5000" ] } [root@SR ~]# systemctl restart docker

Copy
# 上传镜像 [root@SR ~]# docker push 10.1.1.3:5000/centos
posted @   SR丶  阅读(668)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS