도커 구성요소
- 도커 클라이언트
- docker-cli라고도 부르며 터미널이라고 생각하면 편함. dockerd API를 활용해 build, pull, run과 같은 명령을 내리며 도커 데몬과 통신함
- 도커 데몬
- dockerd라고 부르며 백그라운드에서 실행되는 데몬 프로세스에 해당됨. 도커 api 요청을 수신하고 도커 이미지, 컨테이너 등과 같은 도커와 관련된 객체를 관리함
- containerd컨테이너의 실행만 담당하는 runc와 다른 역할을 하며 고수준 컨테이너 런타임에 해당함
- 컨테이너 실행과 관리에 필요한 기능을 수행하는 오픈소스 컨테이너 런타임, 컨테이너의 생명주기를 모두 관리함. (생명주기: 도커 이미지 전송, 컨테이너 실행, 스토리지, 네트워크 등)
- runccontainerd는 실행 이외에도 컨테이너 관리를 위한 다양한 역할을 하지만 runc는 실제 컨테이너 실행만 담당함
- 컨테이너 실행과 관련된 작업을 수행하는 저수준 컨테이너 런타임
- containerd-shim은 containerd와 runc 사이에서 작동하는 중간 프로세스에 해당하며 컨테이너 실행을 조정하는 역할을 함.
- containerd는 runc와 통산함으로써 컨테이너를 실행함. 이때 containerd와 runc 사이에서 중개자 역할을 수행함
도커 이미지 다운로드
docker image pull ubuntu
docker image pull python:3.11.6 처럼 이미지의 태그 지정 가능
docker container run
docker container run ubuntu
docker container run python:3.11.6
docker image list check
docer image ls
docker container list check
docker container ls -a
-a 가 없으면 실행중인 컨테이너 목록만 보여줌
컨테이너 status에 exited → 종료 / exitec(0) → 정상종료 뜻함 / 컨테이너를 실행했을 때 컨테이너 내부 프로세스가 모두 종료되면 해당 컨테이너도 종료됨
컨테이너 내부에 들어가기
docker container -it ubuntu
stop container
docker container stop [container id] → stop container 10 seconds later
docker container kill [container id] → stop container immediately
attach
docker container start [container id]로 컨테이너 실행하고
docker container attach [container id]로 컨테이너에 접속 가능
remove container
docker container rm [container id]
remove image
docker image rm [image id]
이미지를 지우려면 참조하고 있는 컨테이너를 먼저 삭제해야 지울 수 있다.
나만의 이미지 만들기
컨테이너를 생성한다.
또 다른 터미널에서 docker container ls로 container id를 따고 아래와 같이 명령어를 입력해준다.
docker container commit ba71abcf4625 my-ubuntu:0.1 (야무지게 태그까지 걸어줌)
(my-ubuntu:0.1에는 기본 우분투와 달리 net-tools를 설치해놨음)
my-ubuntu 보이쥬?
그 다음 my-ubuntu:0.1을 실행
도커 기본 우분투 이미지에는 설치되어 있지 않은 ifconfig가 기본으로 설치된 my-ubuntu:0.1
나만의 이미지 만들기
컨테이너를 생성한다.
또 다른 터미널에서 docker container ls로 container id를 따고 아래와 같이 명령어를 입력해준다.
docker container commit ba71abcf4625 my-ubuntu:0.1 (야무지게 태그까지 걸어줌)
(my-ubuntu:0.1에는 기본 우분투와 달리 net-tools를 설치해놨음)
my-ubuntu 보이쥬?
그 다음 my-ubuntu:0.1을 실행
도커 기본 우분투 이미지에는 설치되어 있지 않은 ifconfig가 기본으로 설치된 my-ubuntu:0.1
docker container exec VS attach
exec : 실행 중인 컨테이너 내부에서 명령어를 실행 → 새로운 프로세스를 시작해 컨테이너 내에서 작업을 수행
attach : 실행 중인 컨테이너의 표준 입력, 표준 출력, 표준 오류 스트림에 연결할 때 사용 → 기존에 실행 중인 프로세스에 연결
'IT' 카테고리의 다른 글
[쿠버네티스] 쿠버네티스의 구조 (0) | 2024.07.15 |
---|---|
[docker] docker storage(volume, bind, tmpfs) (0) | 2024.07.11 |
맥에서 패키지 관리자 설치하기 (0) | 2024.07.09 |
[AWS] CloudFront (0) | 2024.07.04 |
[AWS] Lambda (0) | 2024.07.02 |
댓글