docker-事件
添加私有仓库的ssl证书
方法一: 配置https可信地址
方法二: 将证书复制到os路径
方法三: dockerd配置证书
即 /etc/docker/certs.d/仓库地址
# 提取域名的证书
# 创建镜像仓库证书目录,xxx.com.cn需替换为镜像仓库域名,如端口非443则需要追加:port
mkdir -p /etc/docker/certs.d/xxx.com.cn
# 使用openssl获取镜像仓库的X.509证书,写入刚创建目录下文件中,如端口非443则需替换
echo -n | openssl s_client -connect xxx.com.cn:443 2>/dev/null | openssl x509 > /etc/docker/certs.d/xxx.com.cn/ca.crt
mkdir -p /etc/docker/certs.d/域名:端口
tree /etc/docker/certs.d
/etc/docker/certs.d
└── harbor.xxxx.com
├── ca.crt
├── server.cert
└── server.key文件描述符限制
-
方法一: /etc/securiy/limits.conf 针对当前登陆用户有效; 但是对于 docker 程序, 似乎是没有效果的
-
方法二: docker 程序启动参数 --ulimit 有效果, 可以有效限制容器的文件描述符数量
-
方法三: systemd 文件 /lib/systemd/system/containerd.service /etc/systemd/system/containerd.service LimitNOFILE=infinity LimitNOFILE=1048576
对部分 docker 程序是有限制的, 但是容器内 ulimit 看到的还是无限, 所以不一定是有效的
时区问题
默认是 UTC 时间,时区也是 0
注意容器输出日志时, 是宿主的 dockerd 处理的日志, 时区还是 0, 这个是变不了的
方法
-
方法1: 容器环境变量设置 - 推荐 "TZ=Asia/Shanghai"
-
方法2: 拷贝宿主机的文件覆盖容器内的 /etc/localtime
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime- 方法3: 挂载宿主机的 /etc/localtime 文件
-v /etc/localtime:/etc/localtime:roalpine 更改时区环境变量
apk add -no-cach tzdata
apk add -U tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apk del tzdata
echo "Asia/Shanghai" > /etc/timezone镜像站
镜像站可用性检测站点
https://tools.opsnote.top/registry-mirrors/
推荐地址
使用方式
方法1-dockerd.json:
前面的优先级最高, 下载失败后, 会到后面进行下载, 直到第一个成功响应的镜像站, 全部失败后会回退到默认的 Docker Hub (registry-1.docker.io)
{ "registry-mirrors": ["https://func.ink","https://proxy.1panel.live"] }
方法2:
docker pull docker.1ms.run/library/golang:1.23-bullseye
docker pull func.ink/library/nginx:1.25.0
docker pull proxy.1panel.live/library/nginx:1.25.0知名hub仓库
# Docker Hub 官方镜像仓库
docker pull nginx:latest
# GitHub Container Registry
ghcr.io/username/image:tag
# Google Container Registry
gcr.io/username/image:tag
# Google Kubernetes
k8s.gcr.io/username/image:tag
registry.k8s.io/username/image:tag
# Quay.io
quay.io/username/image:tag
# Microsoft Artifact Registry
mcr.microsoft.com/azure-cognitive-services/diagnostic:latest多平台构建镜像
构建指定平台
docker build -t xxxx --platform=linux/amd64 .
docker build -t xxxx --platform=linux/arm64 .构建时识别平台
# 构建时的环境变量会发生变化
TARGETPLATFORM: 解析值为 linux/amd64
TARGETOS: 解析值为 linux
TARGETARCH: 解析值为 amd64示例
FROM docker.cnb.cool/xxx/images/alpine:3.21
ARG TARGETOS
ARG TARGETARCH
ARG TARGETPLATFORM
RUN echo "Target OS: ${TARGETOS}"
RUN echo "Target Arch: ${TARGETARCH}"
RUN echo "Target Platform: ${TARGETPLATFORM}"远程管理
默认情况下,只监听本地 /var/run/docker.sock 文件, 即只与本地 root 用户 或 socket 文件属组的用户通信;
方法1:开启 daemon 进程的TCP监听(注意网络的安全性)
docker -d -H tcp://0.0.0.0:8988
docker -d -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &厂商发行版修改
# /etc/sysconfig/docker
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
# /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix://
ExecStart=/usr/bin/docker daemon $DOCKER_OPTS -H tcp://0.0.0.0:1234方法2: https 接口, 需要配置 tls 证书
客户端连接管理
# 方法一
export DOCKER_HOST="tcp://0.0.0.0:8988"
# 方法二 指定 -H 选项
docker -H localhost:1234 info
# 方法三 ssh 访问
export DOCKER_HOST=ssh://root@192.168.100.100