kot*_*msk 5 linux daemon docker
我是 Docker 的新手,在提出问题之前,我试图在 google 中找到解决方案 - 没有结果。
我决定通过实际用例学习 docker -PostgreSQL在我的 VM 实例中创建容器以用于开发环境。我一直在度假,几天没有检查我的服务器。后来我尝试连接到我的数据库,但不能 - 我的所有活动容器都以代码退出128。我试图用 DB 重新启动容器 -docker start django-postgres并收到错误消息 -Error response from daemon: OCI runtime create failed: container with id exists: 5c11e724bf52dd1cb6fd10ebda40710385e412981eb269c30071ecc8aac9e805: unknown
Error: failed to start containers: django-postgres
我怀疑我的系统 docker 中的某个地方保留了我的容器的一些元数据,这些元数据在容器因代码关闭后没有被删除128,但我对 unix 的了解不足以确定它在哪里。另外,我害怕丢失与容器连接的数据库数据。
一些技术信息
docker version::
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:10:01 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
docker info
Containers: 9
Running: 2
Paused: 0
Stopped: 7
Images: 5
Server Version: 18.03.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfd04396dc68220d1cecbe686a6cc3aa5ce3667c
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.4.0-116-generic
Operating System: Ubuntu 16.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 488.3MiB
ID: NDUH:OH24:4M4L:TR5O:TOIH:ARV4:LNRP:6QNE:WEYW:TMXR:7KNK:ZPDD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): 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
Run Code Online (Sandbox Code Playgroud)
有没有人可以帮助我了解我的问题以及如何在不丢失数据的情况下修复它?
N.B.使用代码退出的第二个容器128是 OpenVPN。我也无法重新启动它,但错误有所不同 -cgroups: cannot found cgroup mount destination: unknown
我在这里找到了解决方案(github):
Temp fix is
sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
Run Code Online (Sandbox Code Playgroud)
此修复对 Postgres 容器没有帮助。
可以使用 列出所有正在运行和已停止的容器docker ps -a。-a or --all显示所有容器(默认显示刚刚运行)。
docker inspect <container-id>您可以使用(也许通过管道连接到 less 并搜索卷)找到附加到旧 postgres 容器的卷
如果您想恢复数据,可以将其附加到新的 postgres 容器并恢复。(如果是根卷,请将目标更改为/)
docker run --name new-postgres \
--mount source=myoldvol,target=/var/lib/postgresql/data -d postgres
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 删除旧的docker rm <container-id>。
欲了解更多信息,请参阅,
docker ps、 docker 卷、 docker rm
| 归档时间: |
|
| 查看次数: |
7598 次 |
| 最近记录: |