最近在使用Apline linux虚拟机中安装docker, 在开启远程管理端口时,发现Alpine的服务管理方式与Centos或者其他的不同, 其中希望使用systemd中的service设置开启2375端口需要使用init.d中的docker初始化启动配置文件,而不是sysem/docker.service文件。
首先开启Docker的远程访问方法有两种
1. 命令启动参数方法 在dockerd 的启动命令后 增加参数
dockd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
2 在linux 的启动服务脚本中 增加类似以上的参数, 根据不同操作系统找到docker.service文件,修改文件中的ExecStart参数
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
3. 本文说的时 Alpine Linux 的配置方法与以上两种不一样, Alpine管理服务是用RC的组件,如果要达到以上功能需要修改
/etc/init.d/docker
修改这个文件中的: command_args 在参数后 增加: -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock, 完整的配置文件类似
#!/sbin/openrc-run
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
command="${DOCKERD_BINARY:-/usr/bin/dockerd}"
pidfile="${DOCKER_PIDFILE:-/run/${RC_SVCNAME}.pid}"
command_args="-p \"${pidfile}\" ${DOCKER_OPTS} -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"
DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME}.log}"
DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE}}"
DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE}}"
start_stop_daemon_args="--background \
--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
}
start_pre() {
checkpath -f -m 0644 -o root:docker "$DOCKER_LOGFILE"
}
reload() {
ebegin "Reloading ${RC_SVCNAME}"
start-stop-daemon --signal HUP --pidfile "${pidfile}"
eend $? "Failed to stop ${RC_SVCNAME}"
}
修改后用重启 docker daemon 就可以了