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#
# --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 来配置私有库
配置#
[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 # 查看监听端口
[root@SR ~]# vim /etc/docker/daemon.json # 配置仓库地址
{
"insecure-registries": [ "10.1.1.2:5000" ]
}
[root@SR ~]# systemctl restart docker
# 上传镜像
[root@SR ~]# docker push 10.1.1.3:5000/centos
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!