Signed-off-by: Albin Kerouanton <albinker@gmail.com>
| ... | ... |
@@ -16,6 +16,7 @@ ARG BUILDX_VERSION=0.17.1 |
| 16 | 16 |
ARG COMPOSE_VERSION=v2.29.7 |
| 17 | 17 |
|
| 18 | 18 |
ARG SYSTEMD="false" |
| 19 |
+ARG FIREWALLD="false" |
|
| 19 | 20 |
ARG DOCKER_STATIC=1 |
| 20 | 21 |
|
| 21 | 22 |
# REGISTRY_VERSION specifies the version of the registry to download from |
| ... | ... |
@@ -502,7 +503,16 @@ RUN --mount=type=cache,sharing=locked,id=moby-dev-aptlib,target=/var/lib/apt \ |
| 502 | 502 |
systemd-sysv |
| 503 | 503 |
ENTRYPOINT ["hack/dind-systemd"] |
| 504 | 504 |
|
| 505 |
-FROM dev-systemd-${SYSTEMD} AS dev-base
|
|
| 505 |
+FROM dev-systemd-${SYSTEMD} AS dev-firewalld-false
|
|
| 506 |
+ |
|
| 507 |
+FROM dev-systemd-true AS dev-firewalld-true |
|
| 508 |
+RUN --mount=type=cache,sharing=locked,id=moby-dev-aptlib,target=/var/lib/apt \ |
|
| 509 |
+ --mount=type=cache,sharing=locked,id=moby-dev-aptcache,target=/var/cache/apt \ |
|
| 510 |
+ apt-get update && apt-get install -y --no-install-recommends \ |
|
| 511 |
+ firewalld |
|
| 512 |
+RUN sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/' /etc/firewalld/firewalld.conf |
|
| 513 |
+ |
|
| 514 |
+FROM dev-firewalld-${FIREWALLD} AS dev-base
|
|
| 506 | 515 |
RUN groupadd -r docker |
| 507 | 516 |
RUN useradd --create-home --gid docker unprivilegeduser \ |
| 508 | 517 |
&& mkdir -p /home/unprivilegeduser/.local/share/docker \ |
| ... | ... |
@@ -43,6 +43,7 @@ DOCKER_ENVS := \ |
| 43 | 43 |
-e DOCKERCLI_INTEGRATION_REPOSITORY \ |
| 44 | 44 |
-e DOCKER_DEBUG \ |
| 45 | 45 |
-e DOCKER_EXPERIMENTAL \ |
| 46 |
+ -e DOCKER_FIREWALLD \ |
|
| 46 | 47 |
-e DOCKER_GITCOMMIT \ |
| 47 | 48 |
-e DOCKER_GRAPHDRIVER \ |
| 48 | 49 |
-e DOCKER_LDFLAGS \ |
| ... | ... |
@@ -155,6 +156,9 @@ DOCKER_BUILD_ARGS += --build-arg=DOCKERCLI_INTEGRATION_REPOSITORY |
| 155 | 155 |
ifdef DOCKER_SYSTEMD |
| 156 | 156 |
DOCKER_BUILD_ARGS += --build-arg=SYSTEMD=true |
| 157 | 157 |
endif |
| 158 |
+ifdef DOCKER_FIREWALLD |
|
| 159 |
+DOCKER_BUILD_ARGS += --build-arg=FIREWALLD=true |
|
| 160 |
+endif |
|
| 158 | 161 |
|
| 159 | 162 |
BUILD_OPTS := ${DOCKER_BUILD_ARGS} ${DOCKER_BUILD_OPTS}
|
| 160 | 163 |
BUILD_CMD := $(BUILDX) build |
| ... | ... |
@@ -172,11 +172,16 @@ variable "SYSTEMD" {
|
| 172 | 172 |
default = "false" |
| 173 | 173 |
} |
| 174 | 174 |
|
| 175 |
+variable "FIREWALLD" {
|
|
| 176 |
+ default = "false" |
|
| 177 |
+} |
|
| 178 |
+ |
|
| 175 | 179 |
target "dev" {
|
| 176 | 180 |
inherits = ["_common"] |
| 177 | 181 |
target = "dev" |
| 178 | 182 |
args = {
|
| 179 | 183 |
SYSTEMD = SYSTEMD |
| 184 |
+ FIREWALLD = FIREWALLD |
|
| 180 | 185 |
} |
| 181 | 186 |
tags = ["docker-dev"] |
| 182 | 187 |
output = ["type=docker"] |
| ... | ... |
@@ -56,12 +56,27 @@ if [ -d /sys/kernel/security ] && ! mountpoint -q /sys/kernel/security; then |
| 56 | 56 |
} |
| 57 | 57 |
fi |
| 58 | 58 |
|
| 59 |
+# Allow connections coming from the host (through eth0). This is needed to |
|
| 60 |
+# access the daemon port (independently of which port is used), or run a |
|
| 61 |
+# 'remote' Delve session, etc... |
|
| 62 |
+if [ ${DOCKER_FIREWALLD:-} = "true" ]; then
|
|
| 63 |
+ cat > /etc/firewalld/zones/trusted.xml << EOF |
|
| 64 |
+<?xml version="1.0" encoding="utf-8"?> |
|
| 65 |
+<zone target="ACCEPT"> |
|
| 66 |
+ <short>Trusted</short> |
|
| 67 |
+ <description>All network connections are accepted.</description> |
|
| 68 |
+ <interface name="eth0"/> |
|
| 69 |
+ <forward/> |
|
| 70 |
+</zone> |
|
| 71 |
+EOF |
|
| 72 |
+fi |
|
| 73 |
+ |
|
| 59 | 74 |
env > /etc/docker-entrypoint-env |
| 60 | 75 |
|
| 61 | 76 |
cat > /etc/systemd/system/docker-entrypoint.target << EOF |
| 62 | 77 |
[Unit] |
| 63 | 78 |
Description=the target for docker-entrypoint.service |
| 64 |
-Requires=docker-entrypoint.service systemd-logind.service systemd-user-sessions.service |
|
| 79 |
+Requires=docker-entrypoint.service systemd-logind.service systemd-user-sessions.service $([ ${DOCKER_FIREWALLD:-} = "true" ] && echo firewalld.service)
|
|
| 65 | 80 |
EOF |
| 66 | 81 |
|
| 67 | 82 |
quoted_args="$(printf " %q" "${@}")"
|