삶 가운데 남긴 기록 AACII.TISTORY.COM
Docker 기본 본문
docker container
도커는 컨테이너를 이용해 application을 구동하는데, 보통 가상 머신과 비교를 많이 합니다.
가상머신은 호스트OS에서 게스트 OS를 설치하여 호스트로부터 완전히 분리된 가상화 환경을 구축할 수 있습니다.
도커 컨테이너는 호스트OS에서 사용중인 프로세스를 격리시키고 어플리케이션 실행에 필요한 바이너리를 묶어서 가상화합니다.
도커 컨테이너는 application과 이 application을 실행할 가상 컴퓨터가 같이 들어 있는 셈입니다.
즉, 컨테이너에는 도커가 관리하는 독립적인 가상의 리소스(메모리,디스크,IP,등)들을 가지게 되는 것입니다.
컨테이너 안에서는 컨테이너 바깥의 환경에 접근할 수 없도록 고립 시켜서 관리하기 쉽게합니다.
가상 머신은 각각 가상 OS상에서 application을 구동하므로 도커가 가상 머신과 비교하면 리소스 관리가 효율적임을 알 수 있습니다.
docker-compose
docker는 컨테이너 이미지를 만들고 실행하는 데 사용합니다.
컨테이너 이미지는 애플리케이션 실행에 필요한 모든 코드, 라이브러리 및 종속성을 포함합니다.
Docker를 사용하여 컨테이너 이미지를 만들고, 실행하고, 연결하고, 관리할 수 있습니다.
docker-compose는 여러개 docker 컨테이너로 이루어진 서비스 정의하고 관리를 간단하게 해주는 기능입니다.
YAML(.yml) 파일을 사용하여 컨테이너를 구성하고, 각 컨테이너 간의 관계를 정의하고, 컨테이너들의 서비스를 시작, 정지, 삭제 할 수 있습니다.
docker workflow
리눅스 사용자는 bash 쉘을, 윈도우 사용자는 파워 쉘을 통해 도커를 실행 할 수 있습니다.
컨테이너를 실행하려면 먼저 이미지가 있어야 합니다.
도커가 이미지를 내려 받는 것을 pull 이라고 합니다.
application을 빌드하고 컨테이너 이미지를 만들어 공유하고 사용자는 이 이미지를 받아서 application을 실행하게 되는 것입니다.
도커의 빌드-공유-실행
- application을 컨테이너에서 실행할 수 있도록 패키징
- 다른 사람이 패키지를 사용할 수 있도록 공유
- 패키지를 내려받은 사람이 컨테이너를 통해 application을 실행
docker network
도커를 설치하면 호스트 컴퓨터와 실제 네트워크 사이에 도커가 끼어들어서 네트워크 트래픽을 모두 가로채서 그중 필요한 트래픽을 컨테이너에게 전달 할 수 있습니다.
컨테이너는 기본적으로 외부 환경에 노출되지 않습니다.
각 컨테이너는 고유의 IP주소를 갖지만 이 IP는 도커가 관리하는 도커 내부 가상 네트워크의 주소입니다.
도커가 호스트의 포트를 주시하다가 해당 포트로 들어오는 트래픽을 컨테이너의 포트로 전달해주는 것입니다.
호스트 컴퓨터는 컨테이너와 네트워크 대역이 달라서 컨테이너의 IP에 접근 할 수 없는데, 컨테이너가 특정 포트를 공개(publish)해야만 트래픽을 전달 할 수 있게 되는 것입니다.
기본 명령어
상태와 관계없이 모든 컨테이너 목록 출력
docker container ls --all
컨테이너 실행
docker container run 옵션들 컨테이너이미지
- --detach : 이 옵션은 컨테이너를 백그라운드에서 실행시킵니다.
- --publish : 컨테이너의 포트를 호스트 컴퓨터에 공개합니다. 예를 들어 --publish 8088:80 이라고 옵션을 주면 호스트 의 8088 포트가 컨테이너의 80포트로 포워딩 해줍니다.
- --interactive : 이 옵션은 컨테이너에 접속한 상태가 됩니다.
- --tty : 터미널 세션을 통해 컨테이너를 조작합니다.
- --name : 컨테이너ID 대신 이름을 지정해 줄 수 있습니다.
컨테이너 상태
docker container stats 컨테이너아이디
컨테이너 삭제
docker container rm 컨테이너아이디
- --force : 실행중 컨테이너도 강제 삭제합니다.
모든 컨테이너 삭제
docker container rm --force $(docker container ls --all --quiet)
컨테이너 로그
docker container logs 컨테이너이름이나아이디
docker hub
도커 허브에 공유된 이미지를 pull 받아서 사용할 수 있습니다.
docker image pull 이미지이름
이미지를 제공하는 저장소를 레지스트리라고 합니다.
도커 허브는 무료로 제공되는 공개 레지스트리입니다.
도커 이미지는 물리적으로는 여러 개의 파일들로 구성되어 도커가 이 파일들을 조립해서 컨테이너 내부 파일 시스템을 만듭니다.
환경 변수
환경 변수(environment variable)은 운영체제가 제공하는 key-value 값인데, 도커 컨테이너도 별도의 화경 변수를 등록하고 사용할 수 있습니다.
이 환경변수는 호스트 운영체제의 값을 가져오는게 아니라 컨테이너에서만 사용하기 위해 도커가 부여하는 값입니다.
도커 이미지들에도 이 환경 변수 값들이 포함되어 있으므로 이 환경 변수를 바꾸면 application의 동작을 바꿀 수 있습니다.
예를들어
docker container run --env 환경변수key=환경변수value
이런식으로 --env 플래그 옵션을 사용해서 환경 변수를 사용할 수 있습니다.
'DEV&OPS > Linux & Cloud' 카테고리의 다른 글
Docker 설치 (0) | 2024.05.08 |
---|---|
Ubuntu 22.04.4 서버 설치 및 설정 (0) | 2024.05.08 |
grep 샘플 예제 (1) | 2024.01.16 |
CentOS 7 디스크 추가 /var 파티션 교체 (2) | 2024.01.15 |
/var/cache 디렉터리의 용량 부족 (1) | 2024.01.13 |