DevOps/Docker

컨테이너 실행 단계, 도커 컨테이너와 도커 볼륨 생성하기, 도커 네트워크 이해하기

Ofglen 2023. 7. 14. 11:12

컨테이너 실행 단계

  1. 컨테이너 이미지 작성: 도커(Docker) 이미지가 가장 일반적으로 사용된다. 필요한 경우, Dockerfile을 작성해서 이미지를 빌드한다.
  2. 컨테이너 오케스트레이션 플랫폼(Kubernetes) 설정으로 컨테이너 자동 확장 및 배포 설정 Ex) GKE
  3. 컨테이너 클러스터 구성
  4. 컨테이너 배포: 이미지를 사용해서 애플리케이션 클러스터에 배포
  5. 모니터링: 컨테이너 실행되면 오케스트레이션 플랫폼으로 컨테이너 상태, 로그, 성능 등을 모니터리하고 관리한다.

 

 

 

도커 컨테이너와 도커 이미지

이미지: 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것이다.

여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.

도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백 MB에 이른다. 도커는 이런 문제를 해결하기 위해 이어를 사용하고 유니온 파일 시스템을 이용하여 여러 개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해 준다.

 

 

 

도커 컨테이너 생성하기

# 설치된 도커 엔진 버전 확인
docker -v 

docker run -it ubuntu:<version> # 도커 허브에서 이미지를 내려받는다

# 파일 시스템 확인
ls

exit

# 이미지 다운 확인
docker pull

# 도커 엔진 이미지 목록 출력
docker images

# 컨테이너 이름을 지정하여 생성
# docker -i -t: 컨테이너 내부로 진입하도록 attach 가능한 상태 및 표준 입출력이 활성화되어 상호작용이 가능한 셸 환경 설정
# docker -: Detached 모드(컨테이너를 백그라운드에서 동작)로 실행. 입출력이 없는 상태로 컨테이너를 실행
docker create -it --name <OS:version>

# 컨테이너 시작
docker start

# 컨테이너 내부로 들어감
docker attach


# 컨테이너에서 호스트로 되돌아와 생성한 컨테이너의 목록 확인
docker ps


docker rm <컨테이너 이름>

# 컨테이너가 삭제됐는지 확인
docker ps -a

# 실행 중인 컨테이너는 삭제할 수 없으므로 컨테이너를 정지한 뒤 삭제하거나 강제로 삭제한다.
# 컨테이너를 정지한 뒤 삭제
docker stop <컨테이너 이름>
docker rm <컨테이너 이름>

# 강제 삭제
docker rm -f <컨테이너 이름>


# 컨테이너 정지 시키고 컨테이너에서 빠져 나온다
exit


# 컨테이너 정지시키지 않고 컨테이너에서 빠져 나온다
ctrl + p, q 

# 정지되지 않은 컨테이너만 출력
docker ps

 

 

 

도커 볼륨

도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 된다. 그렇다면 컨테이너에서 작성한 변경 사항은 이미지 위에 컨테이너 레이어라는 곳에 기록된다. 그러나 컨테이너를 삭제하면 데이터도 함께 삭제되는 단점 때문에 컨테이너 볼륨이 등장했다.

  • 도커 컨테이너(R/W)
  • 도커 이미지(R/O)

 

 

https://championshuttler.github.io/docker-basicLearning/

 

 

# docker volume create --name myvolume
myvolumne

docker volume ls

 

 

 

그런 다음 컨테이너를 생성할 때 해당 볼륨과 연결시켜 주면 된다.

docker run -it --name myvolume_1 -v myvolume:/root/ ubuntu:18.04

[볼륨의 이름]:[컨테이너 공유디렉터리] 형식으로 해서 컨테이너를 만들어 줄 수 있다. 볼륨 컨테이너처럼 여러 개의 컨테이너에 공유되어 사용될 수 있다.

 

 

https://velog.io/@ckstn0777/도커-볼륨

 

 

 

 

 

 


도커 네트워크

시작하세요! 도커/쿠버네티스

 

도커는 내부 IP를 순차적으로 할당한다. 이 내부 IP는 도커가 설치된 호스트(내부망)에서만 쓸 수 있으므로 외부와 연결될 필요가 있다. 호스트에서 ifconfig 명령을 실행하면 veth라고 시작하는 네트워크 인터페이스가 있다.

도커 컨테이너의 eth0 인터페이스는 호스트의 vethXX와 연결된다. veth 인터페이스는 docker0이라는 브리지에 바인딩돼 외부와 통신할 수 있다.

 

 

 

 

참고자료

Docker - 도커란 무엇인가

초보를 위한 도커 안내서 - 도커란 무엇인가?

vi /vim 편집기 명령어 정리 (단축키 모음 / 목록)

리눅스 su, sudo 명령어 사용법 정리 (root 권한 획득 방법)

리눅스 컨테이너의 진화 : Docker의 기초