2015-04-20 8 views
6

В настоящее время я пытаюсь развернуть реестр докеров для 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

На данный момент я убежден, что, скорее всего, глупая ошибка в том, как объемы должны быть использованы. (Скорее всего, моя ошибка ...)

Может кто-нибудь сказать мне, где я поступил не так?

+0

Вы уверены, что на ощупь работал? Вы можете увидеть файл внутри контейнера? –

+0

@AdrianMouat файл был создан в контейнере. Я зашел в контейнер, используя '' 'docker exec -t -i docker-registry bash''' и использовал' 'ls'', чтобы посмотреть. –

+0

Похож на ошибку. У многих людей есть проблемы с devicemapper - попробуйте aufs или overlay, если сможете. –

ответ

0

Поскольку вы сказали, что он работал, переместив папку нарастают, я хотел бы проверить несколько вещей:

  • Убедитесь, что каталог, который вы устанавливаете на самом деле существует на хост-машине.

  • Убедитесь, что любой пользователь, с которым вы работаете в своей загрузочной книжке, имеет правильные разрешения для доступа к папке, которую вы пытаетесь установить.

Смежные вопросы