Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.
This repository was archived by the owner on Nov 27, 2023. It is now read-only.

Changing the address for a port mapping doesn't cause the container to be re-created. #1701

@mgax

Description

@mgax

Description
It looks like changing the interface where a port is mapped does not count as a difference in the container configuration, so the old container is kept in place.

Steps to reproduce the issue:
Create a docker-compose configuration with a port mapped to all interfaces, then modify the configuration to map the port only on 127.0.0.1.

mgax@one:demo$ cat docker-compose.yml 
version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 8000:80
mgax@one:demo$ docker compose up -d
[+] Building 7.3s (5/5) FINISHED                                                                           
 => [internal] load build definition from Dockerfile                                                  0.0s
 => => transferring dockerfile: 47B                                                                   0.0s
 => [internal] load .dockerignore                                                                     0.0s
 => => transferring context: 2B                                                                       0.0s
 => [internal] load metadata for docker.io/library/nginx:latest                                       1.7s
 => [1/1] FROM docker.io/library/nginx@sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dc  5.5s
 => => resolve docker.io/library/nginx@sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dc  0.0s
 => => sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dcea50f4f1f2 1.86kB / 1.86kB        0.0s
 => => sha256:eba373a0620f68ffdc3f217041ad25ef084475b8feb35b992574cd83698e9e3c 1.57kB / 1.57kB        0.0s
 => => sha256:f0b8a9a541369db503ff3b9d4fa6de561b300f7363920c2bff4577c6c24c5cf6 7.74kB / 7.74kB        0.0s
 => => sha256:69692152171afee1fd341febc390747cfca2ff302f2881d8b394e786af605696 27.15MB / 27.15MB      0.7s
 => => sha256:49f7d34d62c18a321b727d5c05120130f72d1e6b8cd0f1cec9a4cca3eee0815c 26.58MB / 26.58MB      1.4s
 => => sha256:5f97dc5d71ab2675126dba76dbe161c839043fb3e3ccaaf58ba78b394cdd37b0 602B / 602B            0.5s
 => => sha256:cfcd0711b93a41eb07234fa93b0c2ce39be93a71a743dd76766e67a0133163e8 894B / 894B            0.8s
 => => sha256:be6172d7651be2625df008a2bb6cbaf2139cbf1e50ae16256791e54e8dde8449 666B / 666B            0.9s
 => => sha256:de981387034241b38875f3151654b3bd9ef4afe396eec23dce7cb73134d2867b 1.39kB / 1.39kB        1.4s
 => => extracting sha256:69692152171afee1fd341febc390747cfca2ff302f2881d8b394e786af605696             2.4s
 => => extracting sha256:49f7d34d62c18a321b727d5c05120130f72d1e6b8cd0f1cec9a4cca3eee0815c             1.5s
 => => extracting sha256:5f97dc5d71ab2675126dba76dbe161c839043fb3e3ccaaf58ba78b394cdd37b0             0.0s
 => => extracting sha256:cfcd0711b93a41eb07234fa93b0c2ce39be93a71a743dd76766e67a0133163e8             0.0s
 => => extracting sha256:be6172d7651be2625df008a2bb6cbaf2139cbf1e50ae16256791e54e8dde8449             0.0s
 => => extracting sha256:de981387034241b38875f3151654b3bd9ef4afe396eec23dce7cb73134d2867b             0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                               0.0s
 => => writing image sha256:df808f286858bf54e8beb836b4224c9820926485b706d40a7d8080e63fd3ebd3          0.0s
 => => naming to docker.io/library/nginx                                                              0.0s
[+] Running 2/2
 ⠿ Network demo_default    Created                                                                    0.1s
 ⠿ Container demo_nginx_1  Started                                                                    0.7s
mgax@one:demo$ docker compose ps
NAME                SERVICE             STATUS              PORTS
demo_nginx_1        nginx               running             0.0.0.0:8000->80/tcp, :::8000->80/tcp
mgax@one:demo$ vim docker-compose.yml 
mgax@one:demo$ cat docker-compose.yml 
version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 127.0.0.1:8000:80
mgax@one:demo$ docker compose up -d
[+] Running 1/0
 ⠿ Container demo_nginx_1  Running                                                                    0.0s
mgax@one:demo$ docker compose ps
NAME                SERVICE             STATUS              PORTS
demo_nginx_1        nginx               running             0.0.0.0:8000->80/tcp, :::8000->80/tcp
mgax@one:demo$ 

Describe the results you received:
The container is not recreated and the port stays mapped to the 0.0.0.0 address.

Describe the results you expected:
The container should be recreated with the new port mapping.

Additional information you deem important (e.g. issue happens only occasionally):
Running docker compose down and then docker-compose up -d re-maps the port correctly.

mgax@one:demo$ docker compose down
[+] Running 2/2
 ⠿ Container demo_nginx_1  Removed                                                                    0.2s
 ⠿ Network demo_default    Removed                                                                    0.1s
mgax@one:demo$ docker compose up -d
[+] Running 2/2
 ⠿ Network demo_default    Created                                                                    0.1s
 ⠿ Container demo_nginx_1  Started                                                                    0.6s
mgax@one:demo$ docker compose ps
NAME                SERVICE             STATUS              PORTS
demo_nginx_1        nginx               running             127.0.0.1:8000->80/tcp

Output of docker version:

mgax@one:demo$ docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.14
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:46:45 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:44:56 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Output of docker context show:
You can also run docker context inspect context-name to give us more details but don't forget to remove sensitive content.

mgax@one:demo$ docker context show
default

Output of docker info:

mgax@one:demo$ docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
  compose: Docker Compose (Docker Inc., 2.0.0-beta.1)

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 2
 Server Version: 20.10.6
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 4.19.0-16-amd64
 Operating System: Debian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.902GiB
 Name: one
 ID: K525:E74M:VLPG:JPTG:6FKD:JD3M:SJST:DBXB:N3EL:DT4I:OTUK:IFBM
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

Additional environment details (AWS ECS, Azure ACI, local, etc.):

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐞App is not working correctly.compatibilityCompatibility with docker-compose

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions