New Install: docker: Failed to create the container ID file: open cids/app_bootstrap.cid: no such file or directory

I’m having issues deploying Discourse to a VM in my test environment. The VM is configured with 1 core and 1gb of ram. It is running on ubuntu 18.04, via docker’s basic install method. I am running these as root. I’ve removed sensitive data from the output below.

root@progcodedev-01:/var/discourse# ./discourse-setup
The configuration file containers/app.yml already exists!

. . . reconfiguring . . .


Saving old file as app.yml.2019-03-11-153340.bak
Stopping existing container in 5 seconds or Control-C to cancel.
app was not started !

Found 1GB of memory and 1 physical CPU cores
setting db_shared_buffers = 128MB
setting UNICORN_WORKERS = 2
containers/app.yml memory parameters updated.

ENTER to continue, 'n' to try again, Ctrl+C to exit:

Configuration file at  updated successfully!

Updates successful. Rebuilding in 5 seconds.
Building app
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
cd /pups && git pull && /pups/bin/pups --stdin
docker: Failed to create the container ID file: open cids/app_bootstrap.cid: no such file or directory.
See 'docker run --help'.
cat: cids/app_bootstrap.cid: No such file or directory
"docker rm" requires at least 1 argument.
See 'docker rm --help'.

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers
rm: cannot remove 'cids/app_bootstrap.cid': No such file or directory
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one
root@progcodedev-01:/var/discourse#

Any idea what could be going on?

Here are the current directory permissions:

root@progcodedev-01:/var/discourse# ls -la
total 128
drwxr-xr-x 11 root root  4096 Mar 11 14:34 .
drwxr-xr-x 14 root root  4096 Mar 11 14:34 ..
drwxr-xr-x  2 root root  4096 Mar 11 14:34 bin
drwxr-xr-x  2 root root  4096 Mar 11 15:27 cids
drwxr-xr-x  2 root root  4096 Mar 11 15:35 containers
-rwxr-xr-x  1 root root 11394 Mar 11 14:34 discourse-doctor
-rwxr-xr-x  1 root root 20820 Mar 11 14:34 discourse-setup
drwxr-xr-x  8 root root  4096 Mar 11 15:20 .git
-rw-r--r--  1 root root   309 Mar 11 14:34 .gitignore
drwxr-xr-x  8 root root  4096 Mar 11 14:34 image
-rwxr-xr-x  1 root root 22215 Mar 11 14:34 launcher
-rw-r--r--  1 root root  1099 Mar 11 14:34 LICENSE
-rw-r--r--  1 root root  8900 Mar 11 14:34 README.md
drwxr-xr-x  2 root root  4096 Mar 11 14:34 samples
drwxr-xr-x  2 root root  4096 Mar 11 14:34 scripts
drwxr-xr-x  2 root root  4096 Mar 11 14:34 shared
drwxr-xr-x  3 root root  4096 Mar 11 14:34 templates
-rw-r--r--  1 root root  1266 Mar 11 14:34 Vagrantfile

Can you try a bootstrap?

./launcher bootstrap app

I believe I got this working now. I noticed while looking at syslog that the docker container was having issues with it’s networking. When I originally installed Ubuntu, I opted to use the installer supplied version of docker. I re-rolled the instance and this time used the script on get.docker.com to install docker. This version of docker worked fine and discourse is now running without issues (as far as I can tell.)

혹시 다시 이 문제를 겪는 분이 있을까 봐 공유합니다.

저도 Ubuntu 20.04에서 snap으로 설치한 Docker에서 동일한 문제를 겪었습니다. Syslog에 docker0 인터페이스 오류가 가득했습니다.

Jan 30 14:28:17 mel kernel: [169365.081105] veth23ac856: renamed from eth0
Jan 30 14:28:17 mel networkd-dispatcher[782]: WARNING:Unknown index 103 seen, reloading interface list
Jan 30 14:28:17 mel systemd-udevd[103811]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
Jan 30 14:28:17 mel systemd-networkd[730]: veth7651758: Link DOWN
Jan 30 14:28:17 mel kernel: [169365.208636] docker0: port 1(veth7651758) entered disabled state
Jan 30 14:28:17 mel kernel: [169365.212027] device veth7651758 left promiscuous mode
Jan 30 14:28:17 mel kernel: [169365.212031] docker0: port 1(veth7651758) entered disabled state
Jan 30 14:28:17 mel systemd-udevd[103811]: veth23ac856: Failed to get link config: No such device

docker.com 저장소에서 최신 패키지를 설치하니 문제가 해결되었습니다.

이 문제는 Ubuntu가 docker를 자체 가상 파일 시스템을 갖춘 snap으로 설치하는 것과 관련이 있다고 생각합니다. 이 설정을 유지하는 것이 좋으므로, /var/discourse를 docker 데몬에서 볼 수 있도록 구성하는 작업을 진행하겠습니다.

네, 제 경우의 문제가 snap 격리였다는 것을 확인했습니다. (의심했던 --cidfile이 아니라 볼륨 마운트 때문일 수 있는데, --cidfile은 작동하며 사용되지도 않으므로.)

Ubuntu가 이 문제를 "아직 해결 중"이기 때문에(또는 파일시스템을 노출하는 방법을 찾을 수 없었기 때문에) --classic 옵션도 docker snap에서는 작동하지 않습니다:

snap remove docker && snap install --classic docker
Warning: flag --classic ignored for strictly confined snap docker

그래서 저는 “쉬운” 방법을 선택하여 /var/discourse 대신 /home/discourse를 기본 디렉터리로 사용했습니다. (이 사용자로 실행할 필요도 없습니다.)

업스트림 docker를 요구하는 이유를 이해할 수 있지만, 반대로 Ubuntu가 자체 버전을 지원하는 것도 이해할 수 있습니다. 그래서 사용자에게는 난감한 상황이 됩니다.