docker 볼륨으로 작업 할 수있는 현재 API가 없으니 안타깝습니다. 현재 도커 볼륨에 데이터를 복사해야하는 경우 (NB : 도커가 아닌 컨테이너) 먼저 컨테이너가 볼륨에 액세스 할 수 있는지 확인한 다음 docker cp
을 실행해야합니다. 그러나 이러한 종류의 작업을 수행하려면 볼륨이 마운트 된 도커 컨테이너가 없을 수도 있습니다. 이것은 멱등수가 아닙니다. 이렇게하면 일반적으로 유용한 API의 대부분을 사용할 수 없습니다. 이것은 많은 추가 단계를 추가하여 프로세스를 복잡하게 만듭니다. 이것은 가능한 방법이 아닙니다. 우리가 관심있는 각 볼륨에 대한 마운트 포인트를 간단히 찾을 수 있다면 호스트의 파일 시스템에 직접 대화 할 수 있다면 어떨까요?도커 볼륨 목록에 대한 볼륨 탑재 지점 찾기
그래서 우리가 사용할 일부 도커 볼륨의 이름 목록이 있다고 가정 해 봅시다. 목록의 각 항목에 대해 docker 데몬을 사용하여 검사 한 다음 해당 위치에 대한 사실을 설정하기 위해 사용할 수 있습니다.
- name: Get docker volume information
command: "docker volume inspect {{ item }}"
register: output
with_items: "{{ volumes }}"
NB가 :
[
{
"Name": "docker_sites-enabled",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/docker_sites-enabled/_data",
"Labels": null,
"Scope": "local"
}
]
플레이 북 계속 :
- name: Set volume facts
set_fact:
"{{ item.stdout|from_json|json_query('Name') }}": "{{ item.stdout|from_json|json_query('Mountpoint') }}"
with_items: "{{ output.results }}"
- name: The following facts are now set
debug:
var: "{{ item }}"
with_items:
- "{{ volumes }}"
그러나,이 내가 예상 한대로 작동하지 않는 명령이 뭔가를 반환 이것은 내가 지금까지 무엇을 가지고 그것은 가능한 한 오류보고로 "The variable name '' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores.
아마 내가 사용하고있는 JSON 쿼리 필터의 구문 때문에,하지만 난 해야하는 방법에 대한 모든 문서를 찾을 수 없습니다이 (가) 사용 중입니다.
"* 이와 비슷한 *"대신 "출력"변수에 정확히 ** 표시 할 수 있습니까? 당신은'debug' 모듈을 사용하는 법을 알고 있습니다 ... – techraf
또한'volumes'의 값은 무엇입니까? 그리고 어떤 과제가 실패합니까? 당신은'다음의 사실들이 지금 설정되었습니다'를 포함 시켰습니다 - 그것이 오류를내는 것이라고 가정해야합니까? 이전 질문이 실패하면 질문에 마지막 질문을 포함시키는 목적은 무엇입니까? – techraf