Docker
排查构建镜像时 IO 慢问题
· ☕ 6 分钟
1. 遇到的问题 项目介绍: 文件大小 5.6 GB 文件数量 529352 Dockerfile 1 2 3 FROM golang:1.13 COPY ./ /go/src/code 构建命令及输入如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 time DOCKER_BUILDKIT=1 docker build --no-cache -t test:v3 -f Dockerfile . --progress=plain #1 [internal] load build definition from Dockerfile #1 sha256:2a154d4ad813d1ef3355d055345ad0e7c5e14923755cea703d980ecc1c576ce7 #1 transferring dockerfile: 37B done #1 DONE 0.1s #2 [internal] load .dockerignore #2 sha256:9598c0ddacf682f2cac2be6caedf6786888ec68f009c197523f8b1c2b5257b34 #2 transferring context: 2B

Dockerfile 中 Run mv 比 cp 慢
· ☕ 4 分钟
不同于 CentOS、Ubuntu,我们感受到 mv 比 cp 快;在使用 Dockerfile 构建镜像时,使用 Run cp 会比 Run mv 更快。本篇将给出相关的一些测试、验证的数据结果。 1. 测试准备 机器环境 Ubuntu 20.04.1 LTS 32C 125Gi 由于是生产机器,上面会有些负载,因此测试会有偏差。我会多次测试,等结果稳定

如何设置端口仅对指定 IP 开放访问
· ☕ 1 分钟
1. 主机服务端口 1 2 iptables -I INPUT -p tcp --dport 80 -j DROP iptables -I INPUT -p tcp -s 1.2.3.4 --dport 80 -j ACCEPT 这里仅允许 1.2.3.4 访问本地主机的 80 端口。 2. Docker 服务端口 对于类似 docker run -d -p 80:80 shaowenchen/demo-whoami 运行的服务,上面的方法无效,需要在 DOCKER-USER 链中添加规则。 Docker 会将 iptables 规则添加到 DOCKER 链中,如果需要在 Docker 之前添加规则需要添加到 DOCKER-USER 链中

迁移 Docker 存储到新的硬盘
· ☕ 1 分钟
1. 硬盘格式化 查看新磁盘 1 fdisk -l 通常,第二块硬盘的名字会是 /dev/sdb 。 磁盘分区 1 fdisk /dev/sdb 会有提示输入参数: command (m for help):n Partition number(1-4):1 First cylinder (1-22800,default 1):Enter command (m for help):w 格式化磁盘为 ext4 1 mkfs.ext4 /dev/sdb 将磁盘挂载到指定目录 1 2 mkdir /data mount -t ext4 /dev/sdb /data 开机自动挂载目录 先找到设备的 UUID。 1 2 3 blkid |grep /dev/sdb /dev/sdb: UUID="328a9d32-abb6-492a-aabe-b6a63583674d" TYPE="ext4" 编辑 /etc/fstab 新

拉取 Dockerhub 镜像,无法连接 Cloudflare
· ☕ 1 分钟
1. 错误提示 在拉取镜像时,偶尔会碰到如下错误: 1 2 3 4 5 6 7 8 docker pull node:10.16-alpine 10.16-alpine: Pulling from library/node e7c96db7181b: Already exists 50958466d97a: Pulling fs layer 56174ae7ed1d: Pulling fs layer 284842a36c0d: Pulling fs layer error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2 /docker/registry/v2/blobs/sha256/b9/b95baba1cfdbfa8b789137179d8e fff08b9768f1906725a8758cf0c431b59621/data? verify=1636603895-lbb1QIruPZBdfgfhBZ95ArGK0wU%3D: dial tcp 104.18.124.25:443: i/o timeout 2. 主要解决办法 2.1 修改 DNS 地址 如果是 CentOS ,直接修改 /etc/resolv.conf 文件,新增一行 nameserver 8.8.8.8 即可。 如果是 Ubuntu ,需要修改 /etc/syste