To confirm that this isn't shiftfs related and that we were just causing
the issue to be hidden, I've run the same test on OpenSuse tumbleweed.

I chose that distro because it's apparmor-enabled, has snapd and a 5.4
kernel.

```
localhost:~ # snap install docker
docker 18.09.9 from Canonical* installed
localhost:~ # auth_folder=/var/snap/docker/common/auth
localhost:~ # mkdir -p $auth_folder
localhost:~ # docker run --entrypoint htpasswd registry:2 -Bbn user passwd > 
$auth_folder/htpasswd
Unable to find image 'registry:2' locally
2: Pulling from library/registry
486039affc0a: Pulling fs layer
ba51a3b098e6: Pulling fs layer
8bb4c43d6c8e: Pulling fs layer
6f5f453e5f2d: Pulling fs layer
42bc10b72f42: Pulling fs layer
6f5f453e5f2d: Waiting
42bc10b72f42: Waiting
ba51a3b098e6: Download complete
486039affc0a: Verifying Checksum
486039affc0a: Download complete
8bb4c43d6c8e: Verifying Checksum
8bb4c43d6c8e: Download complete
6f5f453e5f2d: Verifying Checksum
6f5f453e5f2d: Download complete
42bc10b72f42: Verifying Checksum
42bc10b72f42: Download complete
486039affc0a: Pull complete
ba51a3b098e6: Pull complete
8bb4c43d6c8e: Pull complete
6f5f453e5f2d: Pull complete
42bc10b72f42: Pull complete
Digest: sha256:7d081088e4bfd632a88e3f3bcd9e007ef44a796fddfe3261407a3f9f04abe1e7
Status: Downloaded newer image for registry:2
localhost:~ # docker run -d -p 5000:5000 --restart=always --name registry \
>   -v $auth_folder:/auth \
>   -e "REGISTRY_AUTH=htpasswd" \
>   -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
>   -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
>    registry:2
cba1ec94734a8a198fa0c474d9873233958fad6cdafe93d2ccf4d701ecab55ff
localhost:~ # docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED        
     STATUS                                  PORTS               NAMES
cba1ec94734a        registry:2          "/entrypoint.sh /etc…"   5 seconds ago  
     Restarting (2) Less than a second ago                       registry
localhost:~ # uname -a
Linux localhost 5.4.10-1-default #1 SMP Thu Jan 9 15:45:45 UTC 2020 (556a6fe) 
x86_64 x86_64 x86_64 GNU/Linux
localhost:~ # 
```

As you can see, the exact same thing happen there. So this is an
apparmor kernel bug or some issue  with the snapd or docker snap, this
isn't a shiftfs bug and reverting the change would just expose a
different bug rather than actually fix things.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1879690

Title:
  Docker registry doesn't stay up and keeps restarting

Status in linux package in Ubuntu:
  Incomplete
Status in linux source package in Eoan:
  Fix Committed
Status in linux source package in Focal:
  Fix Committed

Bug description:
  [Impact]
  The change applied for bug 1857257 and its followup fix bug 1876645, which 
were released on focal and eoan -updates, introduced a regression on overlayfs, 
breaking docker snap.

  [Test case]
  See original bug report.

  [Fix]
  While we don't have a final fix the solution for now is to revert the 
following commits:

  UBUNTU: SAUCE: overlayfs: fix shitfs special-casing
  UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay

  [Regression potential]
  Low. Reverting these two commits will introduce back the issue reported on 
bug 1857257, but will fix the other use cases which was broken by the latest 
release.

  
  Original bug report.
  -----------------------------------
  Tested kernels:
  Focal 5.4.0-31.35
  Eoan 5.3.0-53.47

  To reproduce:
  1) Spin up a cloud image
  2) snap install docker
  3) auth_folder=/var/snap/docker/common/auth
  4) mkdir -p $auth_folder
  5) docker run --entrypoint htpasswd registry:2 -Bbn user passwd > 
$auth_folder/htpasswd
  6) docker run -d -p 5000:5000 --restart=always --name registry \
    -v $auth_folder:/auth \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
     registry:2

  On a good kernel 'docker ps' shows something like:
  # docker ps
  CONTAINER ID        IMAGE               COMMAND                  CREATED      
       STATUS              PORTS                    NAMES
  a346b65b4509        registry:2          "/entrypoint.sh /etc…"   14 seconds 
ago      Up 12 seconds       0.0.0.0:5000->5000/tcp   registry

  On a bad kernel:
   docker ps
  CONTAINER ID        IMAGE               COMMAND                  CREATED      
       STATUS                        PORTS               NAMES
  0322374f1b1d        registry:2          "/entrypoint.sh /etc…"   5 seconds 
ago       Restarting (2) 1 second ago                       registry

  Note status 'Restarting' on the bad kernel.

  This seems to be introduce by any of the following commits:
  b3bdda24f1bc UBUNTU: SAUCE: overlayfs: fix shitfs special-casing
  6f18a8434050 UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as 
underlay
  629edd70891c UBUNTU: SAUCE: shiftfs: record correct creator credentials
  cfaa482afb97 UBUNTU: SAUCE: shiftfs: fix dentry revalidation

  Kernels that don't have these commits seem fine.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1879690/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to