仓库registry
公共仓库
Docker Hub 这样的公共仓库
本地仓库
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装
还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具
安装步骤
1.安装docker并运行
docker --version
离线环境中安装Docker之前,我们需要先安装一些依赖项。
这些依赖项包括containerd.io、runc、docker-ce-cli和docker-ce
2.安装docker-compose并给执行权限
docker-compose --version
https://github.com/docker/compose/releases
3.下载harbor
https://github.com/goharbor/harbor/releases
4.解压并编辑配置文件
安装 docker-copose 权限
{"insecure-registries": ["your-registry-url"]}
insecure-registries": ["registry1的IP地址:端口号","registry2的IP地址:端口号"]
harbor的日志存放路径为:
/var/log/harbor
Failed to write PID file: Permission denied
kind的安装
先安装好 Kind 执行 kind create cluster 便可, Kind 会自动下载所需的 Docker 镜像,并启动集群
https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries
https://dl.k8s.io/release/v1.23.0/bin/linux/amd64/kubectl
https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
https://dl.k8s.io/release/v1.28.4/bin/linux/amd64/kubectl
docker pull kindest/node
docker pull kindest/base
docker network
Driver: birdge host none containe
docker中,网络的配置是以json格式存在的,下面我们就来看看每种类型网络配置信息
使用docker run 创建Docker容器,可以用–net或–network选项指定的网络模式
birdge: docker服务默认会创建一个docker0网桥,该桥接网络的名称是docker0,它是内核层连通了其他物理或虚拟网卡,
这就是将所有容器和本地主机都放到同一个物理的网络中。
docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通讯
默认选择bridge的情况下,容器启动后会通过DHCP获取一个地址
host :直接使用宿主机的ip地址与外界进行通信,不再需要额外进行NAT转换
Container
none-null
容器间通信和外部(宿主机外的网络)与容器的通信。
容器通信
Docker 提供了容器间通信的功能,可以通过容器名称或 IP 地址进行通信
容器间可以通过 IP 地址相互通信
外部环境和容器之间通信
通过宿主机的 IP 地址直接访问容器 host Port Mapping
自定义网络
排查
网络不可达,主要现象为 ping 不通,其可能原因为
端口不可达,主要现象为可以 ping 通,但 telnet 端口不通,其可能原因为
DNS 解析异常:主要现象为基础网络可以连通,访问域名报错无法解析,访问 IP 可以正常连通
大数据包丢包:主要现象为基础网络和端口均可以连通,小数据包收发无异常,大数据包丢包
网络不可达(ping 不通):
端口不可达(telnet 不通):
DNS 解析异常(域名不通)
大数据包丢失(大包不通)
###net.ipv4.ping_group_range 是 Linux 系统内核中的一个参数,它可以用来配置ping命令所使用的组 ID 范围。
该参数的默认值为 {0, 65535},即组 ID 的最小值为 0,最大值为 65535
删除日志方式-删除大的 log 文件
方式一:
cat /dev/null>$log
Linux执行sudo echo xxx >> 命令提示权限不够的问题
bash -c命令。该命令可以让bash运行整条字符串命令,前加sudo使得整条命令运行时具有root权限
sudo bash -c 'echo aa >> a.txt'
方法二:
使用tee命令。该命令可以将管道中内容写入文件,只需要对该命令赋予root权限就可以操作a.txt文件
echo aa |sudo tee -a a.txt >/dev/null
注意:tee命令的-a选项是追加的意思,如果不加此选项,输出文本将覆盖文件
docker network ls