diff --git a/content/post/docker.md b/content/post/docker.md index 5985aa6..9067cd2 100644 --- a/content/post/docker.md +++ b/content/post/docker.md @@ -40,7 +40,8 @@ categories: ["container"] systemctl start docker ``` -### 常用的 linux with systemd 安装 docker +### Linux with systemd 安装 docker +- 下面是在运行 Rocky linux 8.4 的 X86 服务器上的操作过程 - 下载 docker 二进制文件 ```bsah curl -LO https://download.docker.com/linux/static/stable/x86_64/docker-20.10.10.tgz @@ -193,6 +194,125 @@ categories: ["container"] systemctl start docker ``` +### Linux with openrc 安装 docker +- 下面是在运行 Alpine Linux 3.14.2 的树莓派 4B 上的操作过程 +- 下载 docker 二进制文件 + ```bsah + curl -LO https://download.docker.com/linux/static/stable/aarch64/docker-20.10.10.tgz + ``` + +- 安装 + ```bash + tar zxf docker-20.10.10.tgz + mv docker/* /usr/bin/ + rm -rf docker/ docker-20.10.10.tgz + groupadd -g 10110 docker + ``` + +- 创建 containerd 启动脚本 /etc/init.d/containerd + ```bash + #!/sbin/openrc-run + supervisor=supervise-daemon + + name="Container Daemon" + description="Standalone containerd (usually started by Docker)" + + extra_started_commands="reload" + description_reload="Reload configuration without exiting" + + command="${containerd_command:-/usr/bin/containerd}" + command_args="${containerd_opts}" + rc_ulimit="${ulimit_opts:--c unlimited -n 1048576 -u unlimited}" + retry="${signal_retry:-TERM/60/KILL/10}" + + log_file="${log_file:-/var/log/${RC_SVCNAME}.log}" + err_file="${err_file:-${log_file}}" + log_mode="${log_mode:-0644}" + log_owner="${log_owner:-root:root}" + + supervise_daemon_args="${supervise_daemon_opts:---stderr \"${err_file}\" --stdout \"${log_file}\"}" + + depend() { + need sysfs cgroups + } + + start_pre() { + checkpath -f -m "$log_mode" -o "$log_owner" "$log_file" "$err_file" + } + + reload() { + ebegin "Reloading configuration" + $supervisor $RC_SVCNAME --signal HUP + eend $? + } + ``` + +- 创建 docker 启动脚本 /etc/init.d/docker + ```bash + #!/sbin/openrc-run + supervisor=supervise-daemon + + name="Docker Daemon" + description="Persistent process that manages docker containers" + description_reload="Reload configuration without exiting" + + command="${DOCKERD_BINARY:-/usr/bin/dockerd}" + command_args="${DOCKER_OPTS}" + DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME}.log}" + DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE}}" + DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE}}" + supervise_daemon_args="--stderr \"${DOCKER_ERRFILE}\" --stdout \"${DOCKER_OUTFILE}\"" + + extra_started_commands="reload" + + rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited}" + + retry="${DOCKER_RETRY:-TERM/60/KILL/10}" + + depend() { + need sysfs cgroups + after iptables ip6tables + } + + start_pre() { + checkpath -f -m 0644 -o root:docker "$DOCKER_ERRFILE" "$DOCKER_OUTFILE" + } + + reload() { + ebegin "Reloading configuration" + $supervisor $RC_SVCNAME --signal HUP + eend $? + } + ``` + +- 启动脚本增加可执行权限 + ```bash + chmod 0755 /etc/init.d/{containerd,docker} + ``` + +- 修改 docker 配置文件,建议选择一个与本地网络不冲突的网段 + ```bash + mkdir -p /etc/docker + cat > /etc/docker/daemon.json <<-EOF + { + "insecure-registries": ["harbor.colben.cn"], + "default-address-pools" : [{"base":"10.110.0.0/16", "size": 24}], + "log-driver": "json-file", + "log-opts": {"max-size":"100m", "max-file":"4"} + } + EOF + ``` + +- 启动 docker + ```bash + service docker start + ``` + +- 设置 docker 开机自动启动 + ```bash + rc-update add docker + ``` + ## 安装 docker-compose - 下载 docker-compose ```bash