도커 엔진 기본 단위
1. 이미지
: 바이너리 파일로 존재, 컨테이너 안에서 읽기 전용으로 사용됨
이름 지정 → 저장소 이름/이미지 이름/태그 형식
종류 → 운영체제, 빅데이터 분석 도구, 데이터 베이스, 어플리케이션 등 다양하게 존재
2. 컨테이너
: 이미지 읽기 전용으로 사용되는 이미지로부터 변경된 사항만 컨테이너에 저장
컨테이너에서 진행하는 작업은 원본 데이터인 이미지에 영향을 주지 않음
컨테이너가 여러 개 존재한다면,
※ 각 컨테이너는 서로 독립된 공간으로 각 컨테이너에서 어떤 작업을 수행해도
다른 컨테이너에 영향을 미치지 않음
아래서 기본적으로 진행되는 명령어는 리눅스 기반이다.
만약 나처럼 윈도우 커맨드를 통해 도커 컨테이너 명령어롤 수행하는 경우
중간 중간에 윈도우에서는 동작하지 않는 리눅스 전용 명령어들이 있는데
이는 git bash 또는 별도의 tool 을 이용해서 사용해야 한다
나는 git bash를 사용하였다.
[도커 컨테이너 생성]
#1 도커 설치 및 버전 확인
docker -v

#2 명령어를 통한 컨테이너 생성과 실행
docker run -i -t ubuntu:14.04
// -i -t : 컨테이너와 상호 입출력

우분투 이미지는 로컬에 존재하지 않기 때문에 도커 이미지 허브에서 다운로드 된다.
(실수로 -t 옵션을 빼먹고 실행시켰다.)
#3 다운로드 후 컨테이너 확인
docker run -i -t ubuntu:14.04
(위에서 -t 옵션을 빼먹고)
우분투 이미지 설치가 완료되면 다시 한 번 같은 명령어를 실행하여 컨테이너 내부로 들어가자

root : 사용자 , @ 뒤에 숫자 : 호스트 이름 (무작위 값)
ls

#4 도커 컨테이너 정지
exit
// 또는 윈도우 cmd 에서 crtl + d 누르기
// 위 방법을 통해 도커 컨테이너 정지하면서 빠져 나올 수 있다.

빠져나오되 도커 컨테이너를 정지시키지 않고 싶다면
ctrl + P, Q 를 입력하면 된다
이번에는 다른 리눅스 버전으로
다운로드 후 리눅스 컨테이너를 바로 실행하는 것이 아니라
리눅트 이미만 허브로부터 다운 받는 후
다운되어 있는 이미지들을 확인한 후
도커 컨테이너를 생성할 것이다.
#1 도커 이미지 다운
doker pull centos:7

도커 이미지 다운이 완료되었으면
현재 로컬에 존재하는 이미지들은 조회해보자!
#2 로컬 도커 이미지 조회
docker images

위에서 설치했던 os 이미지들이 로컬에 존재한는 것을 확인할 수 있다.
#3 도커 컨테이너 생성하기
docker run
VS
docker create
이전에 사용했었던 "docker run" 명령어는 컨테이너 생성 후 컨테이너 내부로 바로 진입하는 명령어
"docker create"는 일종의 alias를 붙여 생성만 하고 컨테이너로 실행과 진입은 하지 않는 명령어
docker create -i -t --name testcentos centos:7
alias를 "testcentos" 로 지정하고 컨테이너 생성

출력된 16자리 값은 컨테이너 고유 값(ID) 이다.
#4 생성되어 있는 컨테이너 alias로 컨테이너 내부로 들어갔다 나오기
docker start testcentos // alias 가 testcentos인 컨테이너로 시작
docker attach testcentos // alias 가 testcentos인 컨테이너로 진입

crtl + p, q
// 맨 처음에 잘못 이해해서 컨트롤 + p 또는 컨트롤 + q 인줄 알고
// 어 왜 컨테이너에서 안 나오지 했는데
// 컨트롤 + p 를 누른 상태에서 추가로 Q도 눌러주는 행위였다

[짚고 넘어가자 docker run vs docker create]
docker run
: docker pull > docker create > docker start > docekr attach (-i -t 옵션 있을 때만)
docker create
: docker pull > docker creat
위에서 docker pull 은 모두 이미지가 없을 떄만 실행되고
로컬에 이미지가 이미 존재한다면 생략된다.
// docker start [alias] 대신
docker start [컨테이너 고유 id] 를 사용해도 좋다
// 고유 id가 16자리로 너무 길 때는
// 일부만 입력해주어도 된다.
#5 도커 컨테이너 리스트 조회 (컨테이너 조회)
docker ps

#6 정지된 컨테이너 포함해서 컨테이너 리스트 조회
docker ps -a

#7 docker 컨테이너 id 조회하기
docker inspect testcentos | grep Id
이렇게 쳤더니
Error : no such object |
Error : no such object grep
Error : no such object id
확인해봤더니 해당 명령어가 윈도우 cmd 에서는 불가능한 명령어라 그런 거였다
그래서 git bash 를 이용하였다.
git bash는 윈도우 환경에서 리눅스 명령어를 사용할 수 있도록 지원한다!

이후 해당 컨테이널르 "exit"로 종료하였다.
[도커 컨테이너 실행될 때 문자열 출력되는 옵션]
// docker run -i -t ubuntu:14.04 [출력하고 싶은 문구]
docker run -i -t ubuntu:14.04 test ubuntu start!
이렇게 도커 컨테이너를 생성하면서 실행시켜 주면

보니깐 실행되자 마자 종료되어 있다.
자세한 이유는 따로 조사해야 겠다.
[도커 컨테이너 이름 수정하기]

보통 --name 으로 이름을 따로 지정하지 않은 도커 컨테이너는
자동으로 생성되는 이름을 가지고 있게 된다.
// docker rename [변경 전 이름] [변경 후 이름]
docker rename nifty_lewin modified_nifty_lewin
위 명령어로 nifty_lewin 컨테이너 이름을
modified_nifty_lewin으로 변경해보자

컨테이너 이름 변경 성공
[도커 컨테이너 삭제 방법]
docker rm [이름]
docker rm [컨테이너]
// 만약 정지가 안 된 컨테이너 라면
docker stop [이름]
docker stop [컨테이너 id]
// 로 컨테이너를 정지한 후
doccker rm [컨테이너]
// 로 컨테이너를 삭제하거나
docker rm -f [컨테이너]
// 로 정지와 동시에 삭제할 수 있다.
명령어로 modified_nifty_lewin 컨테이너를 삭제하자!

[도커 컨테이너 id만 출력시키는 옵션 : -q]

위에서 제시한 방법들을 통해 도커 모든 컨테이너를 일괄적으로 삭제하려면
docker container prune
// 또는
docker stop $(docker ps -a -q) // 모든 컨테이너 정지
docker rm $(docker ps -a -q) // 모든 컨테이너 삭제
위의 $() 방식을 사용하려고 하였고 이는 리눅스 전용 명령어므로
이번에도 역시 git bash 를 사용하였다

이후 다시 윈도우 커맨드로 돌아와
테스트 컨테이너를 2개 정도 생성해 docker container prune으로
모든 컨테이너가 삭제 되는지 확인해볼것이다.

오늘 학습 포스팅은 여기까지만 진행!
'docker(도커)' 카테고리의 다른 글
도커 #2 - 가상 머신 + 리눅스 + 도커 엔진 설치 (윈도우, 리눅스) (4) | 2024.10.09 |
---|---|
도커 #1 - 도커와 마이크로 서비스? (0) | 2024.10.03 |