Docker Daemon 配置 - 为 dockerd 打开端口

Docker Daemon 配置 - 为 dockerd 打开端口

我想向 docker 守护进程开放 TCP,以便 Jenkins 可以针对它构建容器。

我得到了很多关于如何做到这一点的信息。希望得到最好的方法。

dockerd的目标:

  • 通过 TCP 和本地 unix 套接字进行监听。
  • 通过重启保持持久性。
  • 主机特定授权以确保安全。仅允许从特定主机访问。(可以使用 iptables 完成)

这是一个 Ubuntu Xenial 主机。

当前 Dockerd 运行信息:

root@host:# ps -ef |grep dockerd
root      1171     1  0 17:51 ?        00:00:04 /usr/bin/dockerd -H fd://

Docker 配置片段(/etc/init/docker.conf):

post-start script
        DOCKER_OPTS=
        DOCKER_SOCKET=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi

        if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then
                DOCKER_SOCKET=/var/run/docker.sock
        else
                DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q)
        fi

        if [ -n "$DOCKER_SOCKET" ]; then
                while ! [ -e "$DOCKER_SOCKET" ]; do
                        initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
                        echo "Waiting for $DOCKER_SOCKET"
                        sleep 0.1
                done
                echo "$DOCKER_SOCKET is up"
        fi
end script

我该如何处理这个问题?

答案1

找到了一个适用且干净的答案这个博客

脚步:

编辑此文件:

sudo vi /lib/systemd/system/docker.service

查找现有的ExecStart行:

ExecStart=/usr/bin/docker daemon -H fd://

添加您想要的配置:

ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:3272

重新开始:

systemctl daemon-reload
sudo service docker restart

此后,我的守护进程正在监听 3272 并且准备运行!

答案2

我遇到了类似的挑战。当我开始考虑将一些系统从 Ubuntu 14.04 迁移到 Ubuntu 16.04 时。我的目标是使用一个带有 dockerd 标志 (DOCKER_OPTS) 的 dockerd 配置文件,用于 Ubuntu 16.04 (systemd) 和 Ubuntu 14.04 (Upstart),而不是 /etc/docker/daemon.json。我选择不使用 /etc/docker/daemon.json 进行 docker 守护进程配置,因为 json 不支持注释。

我希望 systemd 设计使用覆盖文件,该文件仅修改 dockerd 标志。它使用默认的 Docker systemd 配置文件 (/lib/systemd/system/docker.service) 进行其他 Docker 设置。另一个目标是在每次更改或启动后在每个系统上自定义 systemd。

它解决了我的难题。它也许能帮到你。

git clone https://github.com/BradleyA/docker-security-infrastructure
cd docker-security-infrastructure/dockerd-configuration-options
more README.md

相关内容