Study/seSAC 금천 4기

컨테이터 애플리케이션 개발_4일차_240923

지찬씌 2024. 9. 30. 09:10

Docker 데이터 관리

 

도커에서 데이터를 관리하는 방법 (bind mount / volume / tempf mount)

 

1. Volume ( -v 옵션)

 

- 볼륨에 저장한 데이터는 도커 데몬에서 관리한다. 

 

- 형식

  : -v 볼륨이름:마운트경로:옵션

   > 볼륨이름 : 이름이 있는 볼륨의 경우 볼륨 이름을, 이름이 없는 볼륨의 경우는 생략한다.

                        호스트에서 유일한 값을 가져야 한다. 

   > 마운트 경로 : 파일이나 디렉터리가 컨테이너에 마운트되는 경로이다.

   > 옵션 : ro (읽기 전용)과 같이 추가 명령어

 

- 사용 예시

  1) 볼륨 생성

 

 

 

  2) 생성한 볼륨을 사용하는 컨테이너를 실행

 

 

 

  3) 동일 볼륨을 사용하는 컨테이너를 추가로 실행

 

 

 

  4) 컨테이너 생성 시 -v 옵션에 볼륨 이름을 명시해서 새로운 볼륨을 생성

 

 

 

- 삭제 방법

 

 

 

 

2. bind mount (--mount 옵션) 사용하는 방법

 

- 데이터를 디렉터리에 저장하여 관리한다.

 

- 형식

  : --mount <key>=<value>,<key>=<value>,... 의 형식을 가지는데 순서는 중요하지 않고, 공백은 포함될 수 없다.

 

- <key> 자리에 올 수 있는 것

  1) type                                : 마운트 유형 (bind, volume, tmpfs 등)  

  2) source 또는 src              : 마운트 소스

  3) destination 또는 dst       : 파일이나 디렉터리가 컨테이너에 마운트되는 경로

  4) readonly                         : 읽기 전용

 

- 사용 예시

  1) MySQL 이미지를 이용해서 데이터베이스 컨테이너를 실행

 

 

 

  2) 워드프레스 이미지를 이용해서 웹 앱 컨테이너를 실행

 

 

 

  3) 호스트 볼륨 확인 (디렉터리 확인으로 파일 존재 확인. 아래 디렉터리의 파일들이 모두 공유되고 있다.)

 

 

 

  4) 컨테이너를 모두 삭제 후 호스트 볼륨 확인

컨테이너가 삭제되더라도 호스트의 파일시스템에 저장하기 때문에 컨테이너가 삭제되더라도 디렉터리에 유지된다.

 

 

 

  5) 디렉터리가 아닌 파일단위 공유 가능, -v 옵션을 여러 개 사용하는 것도 가능

 

 

 

 

3. 볼륨과 관련된 속성

 

  1) read-only 볼륨 (ro 옵션)

ro 속성(read-only)이 설정되면 읽기만 가능하고 쓰기가 불가능해진다.

 

 

 

  2) anonymous 볼륨

   : 볼륨 이름을 부여하지 않으면 해시 형태의 이름이 자동으로 생성 및 부여되는 기능

 

 

 

 

 

 

Docker Network

bridge : 도커 컨테이너가 기본적으로 연결되는 네트워크

host : bridge 네트워크가 기본적으로 공유하는 네트워크

none : 

 

 

 

2. 컨테이너가 사용하고 있는 네트워크를 확인

 

 

 

3. 네트워크 생성 및 연결

  1) 네트워크 생성

 

 

 

  2) 컨테이너를 네트워크에 연결

docker network connect web-network my-todo-app

 

 

  3) web-network 상세 정보를 확인

 

 

 

  4) web-network 삭제

 

 

 

 

4. 컨테이너를 시작할 때 네트워크를 생성, 지정

 

 

 

 

 

 

5. centos 이미지를 이용해 mycentos 이름의 컨테이너를 실행하고

    my-todo-app, my-todo-app2, mycentos 컨테이너가 사용하고 있는 네트워크를 확인

 

 

- 요약

container IP Network Name
my-todo-app 172.17.0.3/16 bridge
my-todo-app2 172.18.0.2/16 mybridgenetwork
mycentos 172.17.0.4/16 bridge

 

 

 

6. mycentos 컨테이너에서 my-todo-app & my-todo-app2 컨테이너로의 접속 여부 확인

 

 

 

 

7. mycentos 컨테이너를 my-todo-app2 컨테이너가 연결되어 있는 mybrigemetwork 네트워크로 연결 후 확인

 

 

 

 

8. 컨테이너 이름으로 네트워크에 접근

생성한 네트워크(mybridgenetwork)를 이용하면 IP 주소와 컨테이너 이름 둘 중 어느 방법으로도 접속이 가능하다.

 

 

 

 

9. 기본 bridge 네트워크를 사용하는 네트워크를 생성하고 조회

 

 

 

 

10. mycentos-2 컨테이너에서 mycentos 컨테이너로 연결을 확인

 

 

 

 

11. --link 옵션을 사용해서 기본 bridge 네트워크를 사용하는 컨테이너를 실행

- 여기서 mycentos-1은 별명(alias)

 

 

 

 

12. mycentos-3 컨테이너에서 mycentos 컨테이너로 연결 확인

 

 

 

 

13. mycentos의 hosts 파일 확인

  1) mycentos-3

 

 

  2) mycentos-2

 

 

  3) mycentos

 

 

 

 

 

 

 

 

 

 


워드프레스?

 

 

 

 

--link 명령어

: 같은 호스트 상에서 다른 컨테이너를 참조하고자 할 때 사용한다.