Fix Docker API compatibility with network alias (#17167)

* Add BaseHostsFile to container configuration
* Do not copy /etc/hosts file from host when creating a container using Docker API

Signed-off-by: Gavin Lam <gavin.oss@tutamail.com>
This commit is contained in:
Gavin Lam
2023-12-11 23:25:51 -05:00
parent 077b000996
commit db68764d8b
13 changed files with 93 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
etc hosts
===========
This test mounts a /etc/hosts file in the host containing an entry `foobar`, then create a container with an alias of the same hostname.
Validation
------------
* No /etc/hosts entries are copied from the host. There should be only one entry of the hostname, which is IP address of the alias.
* The hostname is resolved to IP address of the alias.

View File

@@ -0,0 +1,19 @@
version: '3.3'
services:
test:
image: alpine
command: ["top"]
hostname: foobar
networks:
net1:
aliases:
- foobar
networks:
net1:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.123.0.0/24

View File

@@ -0,0 +1,2 @@
127.0.0.1 localhost
127.0.0.1 foobar

View File

@@ -0,0 +1,5 @@
if ! is_rootless; then
mount --bind $TEST_ROOTDIR/etc_hosts/hosts /etc/hosts
else
$PODMAN_BIN unshare mount --bind $TEST_ROOTDIR/etc_hosts/hosts /etc/hosts
fi

View File

@@ -0,0 +1,5 @@
if ! is_rootless; then
umount /etc/hosts
else
$PODMAN_BIN unshare umount /etc/hosts
fi

View File

@@ -0,0 +1,12 @@
# -*- bash -*-
ctr_name="etc_hosts_test_1"
if [ "$TEST_FLAVOR" = "compose_v2" ]; then
ctr_name="etc_hosts-test-1"
fi
podman exec "$ctr_name" sh -c 'grep "foobar" /etc/hosts'
like "$output" "10\.123\.0\." "$testname : no entries are copied from the host"
podman exec "$ctr_name" sh -c 'getent hosts foobar | awk "{print \$1}"'
like "$output" "10\.123\.0\." "$testname : hostname is resolved to IP address of the alias"

View File

@@ -207,7 +207,7 @@ function start_service() {
$PODMAN_BIN \
--log-level debug \
--storage-driver=vfs \
--storage-driver=vfs \
--root $WORKDIR/root \
--runroot $WORKDIR/runroot \
--cgroup-manager=systemd \