'2020/03/30'에 해당되는 글 2건

  1. 2020.03.30 [Docker] Docker Compose 에서 volume 사용 하기
  2. 2020.03.30 [Docker] Image 다운로드 및 로컬 설치 하기

[Docker] Docker Compose 에서 volume 사용 하기

Cloud&Container 2020. 3. 30. 14:40

기본 문서는 아래 링크 참고 하시면 됩니다.

 

Reference)

https://docs.docker.com/compose/compose-file/#volumes
https://docs.docker.com/compose/compose-file/#volume-configuration-reference

 

두 가지의 syntax 를 제공 하고 있습니다.

  1. Short Syntax
  2. Long Syntax

1. Short Syntax 

https://docs.docker.com/compose/compose-file/#short-syntax-3

valumes:
  - ${SOURCE-PATH}:${DESTINATION-PATH}:${MODE}

${SOURCE-PATH} 에는 Host의 Path 또는 Volume Name 을 사용 할 수 있습니다.

 

Case 1) bind mount 형식으로 volume 생성이 됩니다.

services:
...중략...
  volumes:
    - /mount/data:/usr/share/elasticsearch/mnt:rw
    
    
$ docker inspect ${SERVICE-NAME}
...중략...
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mount/data",
                "Destination": "/usr/share/elasticsearch/mnt",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]
...중략...

 

Case 2) volume 형식으로 volume 생성이 됩니다.

- volume 사용 시 주의 사항은 Container 내부에 이미 생성 되어 있는 File System 을 사용

services:
...중략...
  volumes:
    - mount01:/usr/share/elasticsearch/data:rw
...중략...

volumes:
  mount01:
    driver: local      

$ docker volume ls --format "{{.Name}} : {{.Mountpoint}}"
megatoi-monitor-elasticsearch_mount01 : /var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data

$ docker inspect ${SERVICE-NAME}
...중략...
        "Mounts": [
            {
                "Type": "volume",
                "Name": "megatoi-monitor-elasticsearch_mount01",
                "Source": "/var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data",
                "Destination": "/usr/share/elasticsearch/data",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            }
        ],
...중략...

 

2. Long Syntax

https://docs.docker.com/compose/compose-file/#long-syntax-3

기본 옵션만 살펴 보겠습니다.

자세한건 위 문서를 참고하세요.

  • type
    • volume
      • Volume 선언 시 Source 는 volumes: syntax 에서 named volume 선언이 되어 있어야 합니다.
    • bind
      • Source File System 이 만들어져 있어야 합니다.
  • source
    • Host File System  을 작성 합니다. 
    • Short Syntax 에서 처럼 Host 의 Path 또는 Volume Name 을 사용 할 수 있습니다.
  • target
    • Container File System 을 작성 합니다.

Case 1) bind mount 형식으로 volume 생성이 됩니다.

services:
...중략...
    volumes:
        - type: bind
          source: /mount/data
          target: /usr/share/elasticsearch/mnt
...중략...


$ docker inspect ${SERVICE-NAME}
...중략...
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mount/data",
                "Destination": "/usr/share/elasticsearch/mnt",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
...중략...

 

Case 2) volume 형식으로 volume 생성이 됩니다.

- volume 사용 시 주의 사항은 Container 내부에 이미 생성 되어 있는 File System 을 사용

services:
...중략...
    volumes:
        - type: volume
          source: mount01
          target: /usr/share/elasticsearch/data
...중략...
volumes:
  mount01:
    driver: local
...중략...


$ docker inspect ${SERVICE-NAME}
...중략...
        "Mounts": [
            {
                "Type": "volume",
                "Name": "megatoi-monitor-elasticsearch_mount01",
                "Source": "/var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data",
                "Destination": "/usr/share/elasticsearch/data",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
...중략...

hort Syntax 의 Case 2) 와 같이 사용도 가능 합니다.

:

[Docker] Image 다운로드 및 로컬 설치 하기

Cloud&Container/IaC 2020. 3. 30. 08:41

인터넷이 안되는 환경에서 설치를 해야 할 경우가 있을 수도 있어서 이미지를 다운로드 받아 설치 하는 명령어를 작성해 보았습니다.

찾아 보면 다 나와 있는 거라서 그냥 기억력을 돕는 차원에서 간단하게 작성 합니다.

 

- root 로 안할 경우 누락 되는 파일이 있을 수 있음.
- save : load
- export : import

 

로컬로 다운로드 받기)

$ sudo docker save [옵션] <파일명> [이미지명]
$ sudo docker save -o elasticsearch.tar docker.elastic.co/elasticsearch/elasticsearch:7.6.1

# docker-compose.yml 파일 안에 
# image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1


이미지 올리기)

$ sudo docker load -i tar파일명
$ sudo docker load -i elasticsearch.tar


컨테이너 자체를 파일로 내리기)

$ sudo docker export <컨테이너명 or 컨테이너ID> > xxx.tar


컨테이너 올리기)

$ sudo docker import <파일 or URL> - [image name[:tag name]]

 

: