В настоящее время я пытаюсь развернуть реестр докеров для Amazon ec2 с помощью ansible. Задача из моей кулинарной книги выглядит следующим образом:Докеры: объем докеры не устанавливается правильно на Amazon Linux
- name: run docker registry container
docker:
image: registry
name: docker-registry
state: reloaded
env:
SETTINGS_FLAVOR: local
STORAGE_PATH: /opt/docker-registry
SEARCH_BACKEND: sqlalchemy
volumes:
- "/data/docker-registry-server/opt/docker-registry:/opt/docker-registry"
ports:
- "5000:5000"
Как вы можете видеть в реестре развертываются как контейнер внутри грузчик. Это работает в некоторой степени. Контейнер запускается правильно, но громкость не устанавливается правильно. Я проверил это, выполнив:
docker exec -t -i docker-registry touch /opt/docker-registry/touch.me
Это создает новый файл в контейнере в папке, где должен быть установлен том. Поэтому этот файл должен появиться на хосте в /data/docker-registry-server/opt/docker-registry
, но это не так.
При запуске docker inspect docker-registry
я получаю этот результат:
[{
"AppArmorProfile": "",
"Args": [],
"Config": {
"AttachStderr": false,
"AttachStdin": false,
"AttachStdout": false,
"Cmd": [
"docker-registry"
],
"CpuShares": 0,
"Cpuset": "",
"Domainname": "",
"Entrypoint": null,
"Env": [
"SETTINGS_FLAVOR=local",
"SEARCH_BACKEND=sqlalchemy",
"STORAGE_PATH=/opt/docker-registry",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"DOCKER_REGISTRY_CONFIG=/docker-registry/config/config_sample.yml"
],
"ExposedPorts": {
"5000/tcp": {}
},
"Hostname": "7d4bb2448234",
"Image": "registry",
"MacAddress": "",
"Memory": 0,
"MemorySwap": 0,
"NetworkDisabled": false,
"OnBuild": null,
"OpenStdin": false,
"PortSpecs": null,
"StdinOnce": false,
"Tty": false,
"User": "",
"Volumes": {
"/opt/docker-registry": {}
},
"WorkingDir": ""
},
"Created": "2015-04-20T14:00:44.547620575Z",
"Driver": "devicemapper",
"ExecDriver": "native-0.2",
"ExecIDs": [
"5ea0f2a69b5010ee769963ea030dbf5016bef15f50515c120c3e1d27edb64e03",
"4d7cdbc371bc7bd7eddc73f531fe4e538186556b59b20da74ffa705ab31306c0"
],
"HostConfig": {
"Binds": [
"/data/docker-registry-server/opt/docker-registry:/opt/docker-registry:rw"
],
"CapAdd": null,
"CapDrop": null,
"ContainerIDFile": "",
"Devices": null,
"Dns": null,
"DnsSearch": null,
"ExtraHosts": null,
"IpcMode": "",
"Links": null,
"LxcConf": null,
"NetworkMode": "",
"PidMode": "",
"PortBindings": {
"5000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5000"
}
]
},
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"RestartPolicy": {
"MaximumRetryCount": 0,
"Name": ""
},
"SecurityOpt": null,
"VolumesFrom": null
},
"HostnamePath": "/var/lib/docker/containers/7d4bb2448234962ba8f9da87d3650b38e608a1e405130ba6b35200f52e07ce5b/hostname",
"HostsPath": "/var/lib/docker/containers/7d4bb2448234962ba8f9da87d3650b38e608a1e405130ba6b35200f52e07ce5b/hosts",
"Id": "7d4bb2448234962ba8f9da87d3650b38e608a1e405130ba6b35200f52e07ce5b",
"Image": "59b1f7d49dc843631b9be86f581f9c8a726f7cea8a5c37e648c822e40e440633",
"MountLabel": "",
"Name": "/docker-registry",
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.62",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "fe80::42:acff:fe11:3e",
"LinkLocalIPv6PrefixLen": 64,
"MacAddress": "02:42:ac:11:00:3e",
"PortMapping": null,
"Ports": {
"5000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5000"
}
]
}
},
"Path": "docker-registry",
"ProcessLabel": "",
"ResolvConfPath": "/var/lib/docker/containers/7d4bb2448234962ba8f9da87d3650b38e608a1e405130ba6b35200f52e07ce5b/resolv.conf",
"RestartCount": 0,
"State": {
"Error": "",
"ExitCode": 0,
"FinishedAt": "0001-01-01T00:00:00Z",
"OOMKilled": false,
"Paused": false,
"Pid": 21595,
"Restarting": false,
"Running": true,
"StartedAt": "2015-04-20T14:00:44.791121849Z"
},
"Volumes": {
"/opt/docker-registry": "/data/docker-registry-server/opt/docker-registry"
},
"VolumesRW": {
"/opt/docker-registry": true
}
}
]
Это смотрит на меня как контейнер сам знает, что он должен использовать объем. В записи Volumes
указан правильный путь. Таким образом, это, скорее всего, докер, а не проблема.
Я использую докер 1.5.0, построить a8a31ed/1.5.0
На данный момент я убежден, что, скорее всего, глупая ошибка в том, как объемы должны быть использованы. (Скорее всего, моя ошибка ...)
Может кто-нибудь сказать мне, где я поступил не так?
Вы уверены, что на ощупь работал? Вы можете увидеть файл внутри контейнера? –
@AdrianMouat файл был создан в контейнере. Я зашел в контейнер, используя '' 'docker exec -t -i docker-registry bash''' и использовал' 'ls'', чтобы посмотреть. –
Похож на ошибку. У многих людей есть проблемы с devicemapper - попробуйте aufs или overlay, если сможете. –