2015-04-20 32 views
6

Tôi hiện đang cố gắng triển khai đăng ký docker cho Amazon ec2 bằng cách sử dụng ansible. Nhiệm vụ từ sách dạy nấu ăn của tôi trông giống như sau:Ổ đĩa Docker: Docker Volume không được gắn chính xác trên 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" 

Như bạn có thể thấy đăng ký được triển khai dưới dạng vùng chứa bên trong đế. Điều này hoạt động ở một mức độ nào đó. Vùng chứa được bắt đầu chính xác nhưng âm lượng không được gắn chính xác. Tôi đã kiểm tra điều này bằng cách chạy:

docker exec -t -i docker-registry touch /opt/docker-registry/touch.me 

Điều này tạo tệp mới trong thư mục chứa âm lượng. Vì vậy, tập tin này sẽ xuất hiện trên máy chủ trong /data/docker-registry-server/opt/docker-registry nhưng nó không xuất hiện.

Khi chạy docker inspect docker-registry tôi nhận được kết quả này:

[{ 
"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 
} 
} 
] 

này vẻ với tôi như chứa chính nó biết rằng nó nên sử dụng một khối lượng. Mục nhập Volumes liệt kê đường dẫn chính xác. Vì vậy, điều này rất có thể là một docker và không phải là một vấn đề ansible.

Tôi đang sử dụng Docker 1.5.0, xây dựng a8a31ed/1.5.0

Tại thời điểm này tôi tin chắc đó rất có thể là một sai lầm ngu ngốc trong cách khối lượng nên được sử dụng. (Rất có thể là lỗi của tôi ...)

Ai đó có thể cho tôi biết tôi đã đi sai ở đâu không?

+0

Bạn có chắc chắn rằng liên lạc đã hoạt động? Bạn có thể xem tệp bên trong trong vùng chứa sau đó không? –

+0

@AdrianMouat tệp đã được tạo trong vùng chứa. Tôi đã đăng nhập vào vùng chứa bằng cách sử dụng '' 'docker exec -t -i docker-registry bash''' và sử dụng' 'ls'' để xem xét. –

+0

Trông giống như một lỗi. Rất nhiều người có vấn đề với devicemapper - hãy thử aufs hoặc overlay nếu bạn có thể. –

Trả lời

0

Vì bạn nói rằng nó làm việc bằng cách di chuyển các thư mục mà bạn đang gắn kết, tôi sẽ kiểm tra một vài điều:

  • Hãy chắc chắn rằng thư mục bạn đang gắn thực sự tồn tại trên máy chủ.

  • Đảm bảo rằng bất kỳ người dùng nào bạn đang chạy playbook ansible của bạn đều có quyền truy cập thư mục bạn đang cố gắng gắn kết.

Các vấn đề liên quan