0부터 시작하는 Docker 공부 - 컨테이너와 Volume

Jaehong Lee·2022년 8월 18일
0
post-thumbnail

0. 들어가기 전에 - Docker run 옵션

  • 기존에 생성한 컨테이너를 모두 삭제하자

명령어 전달 명령어 - exec

  • docker container exec [컨테이너 이름] 명령어 : 컨테이너에 직접 들어가지 않고, 외부 ( Host ) 에서 명령을 전달하고, 결과값도 Host 에서 받음

docker run 옵션 - 컨테이너 실행을 위한 옵션

  • -i : 대화식으로 컨테이너에게 명령 전달 가능
  • -t : ssh 와 같은 연결 방법을 제공. 주로, i 와 같이 사용된다
  • -d : 컨테이너를 백그라운드에서 동작 시킨다
  • --restart : --restart=always 를 하면 데몬 실행과 함께 자동으로 컨테이너가 실행된다

    --restart=on-failure 를 사용하면, 처음 컨테이너 시작 또는 생성시 정상 실행이 되지 않거나, 정상 생성이 되지 않는 경우 계속해서 실행을 시도할 수 있다

  • -v : 볼륨 제공, 비슷한 옵션으로 --mount 도 사용 가능 하다. mount 는 과거에는 compose 에서만 사용이 가능했으나, 17 버전 이후 부터는 container run 에서도 사용이 가능하게 되었다
  • -h ( --hostname ) : 컨테이너 내에서 사용하는 호스트 명
  • --name : 관리를 위한 목적으로 컨테이너의 이름을 지정할 수 있다
  • -p : 호스트의 특정 Port 와 컨테이너의 특정 Port 를 매핑
  • -P : 호스트의 랜덤 Port 와 컨테이너의 특정 Port 를 매핑
  • --link : 두 개 이상의 컨테이너를 연결하는 방법으로, Ip 가 아닌 이름으로 연결할 수 있다. link 옵션은 compose 에서는 더 이상 사용하지 않는다

1. 컨테이너 생성 및 다루기

docker container run -it --name centos1 --hostname test centos:7 /bin/bash
  • docker 컨테이너를 생성하고, 실행하는데 명령을 대화형으로 전달하는 옵션을 사용하고, 실행시 /bin/bash 명령을 전달하였다
  • 실행하면 컨테이너 내부로 들어온다
  • ctrl p + ctrl q 로 컨테이너에서 외부로 나와서 컨테이너 정보를 확인하자
  • exec 를 통해 외부에서 명령을 전달하여, 결과를 전달 받을 수 있다
  • 생성한 컨테이너를 삭제하자

2. Volume 생성

  • 볼륨 리스트를 확인하고, 기존의 남아있는 볼륨을 삭제하자
  • testvol1 이라는 볼륨을 생성하자

3. Volume 연결

docker container run -it --name centos01 -v testvol1:/root centos:7 /bin/bash

  • 볼륨을 연결하여 컨테이너를 생성하였다
  • disk 정보를 확인하자. 위와 같이 호스트에 있는 여유 공간을 사용할 수 있다. 만약, 볼륨의 크기를 지정하여 사용하고 싶다면, 외부 플러그인을 활용해야 한다
  • root 디렉터리에 파일을 하나 생성하자
  • 컨테이너를 종료시키고 나오자
  • 컨테이너를 삭제하더라도, 볼륨은 여전히 남아있다

4. Volume 재연결

  • 기존 볼륨을 새로운 컨테이너인 centos2 를 생성해서 연결해보자
  • 확인해보면, 기존 컨테이너에서 생성했던 파일을 여전히 확인할 수 있다

5. 클라우드 환경에서의 Volume

  • Volume 의 경우 도커에서는 현재 로컬에 있는 볼륨을 사용하고 있다. 만약 현재 Host 에 문제가 생긴다면, 볼륨에 저장한 Data 를 사용할 수 없게 될 것 이다. 또한, 다수의 동일한 웹 서버를 배포했을 때, 웹 서버들이 각각의 로컬 볼륨과 연결된다면, 처음 접속한 웹 서버와 나중에 접속한 웹 서버가 다를때, 서로 볼륨이 다르므로, 저장된 사용자 Data 가 다를 것 이다. 혹은 하나의 웹 서버가 고장나서, 다른 웹 서버에 접속시 서로 로컬 볼륨을 사용하므로 사용자는 자신이 하나의 웹 서버에 저장한 Data 를 다른 웹 서버에서 찾을 수 없을 것 이다

    • 클라우드 환경에서는 외부에 있는 별도의 스토리지의 볼륨을 마운트하여 사용해야 영구적으로 볼륨을 사용할 수 있다. 이러한 볼륨을 Persistent Volume 이라 부른다
  • 개발자가 요청하는 볼륨을 IP 정보나 마운트 타입에 관계없이 조건만 부합한다면, 자동으로 마운트 될 수 있는 방법을 제공 해야 한다. 이를 쿠버네티스에서는 PVC ( Persistent Volume Claim ) 이라고 한다

    개발자 ( PVC ) -------------------> 스토리지 ( PV )

  • 필요할 때마다 그때 그때 불륨을 제공하는 방법은 Storage Class 라는 방법을 사용하면 편리하다

profile
멋진 엔지니어가 될 때까지

0개의 댓글