도커 기본 명령어 > 도커 & 쿠버네티스

본문 바로가기

[이론] 도커 기본 명령어

필기자
2023-09-06 12:11 1,829 0

본문

목 차
  • 도커 명령어
  • 컨테이너 생성, 실행, 종료, 삭제
  • 컨테이너 통신
  • 이미지 삭제

도커 명령어

도커 명령어란?
  • 컨테이너를 다루는 명령어는 ‘docker’ 명령어로 시작   docker ~ 

도커 명령어의 기본적인 형태
  • docker 커맨드(상위/하위) (옵션) 대상(이미지) (명령어) (인자)

커맨드(상위/하위)
  • ‘무엇을‘, ‘어떻게’ 에 해당하는 부분
  • 커맨드는 상위 커맨드(’무엇을’)와 하위 커맨드(‘어떻게‘)로 구성
  • 상위 커맨드는 12종류(대상의 종류)
  • docker container start penguin
옵션
  • 옵션은 커맨드에 세세한 설정을 지정하는 용도
  • 커맨드의 실행 방법 또는 커맨드에 전달할 값을 지정
  • -d, --name penguin, -dit

대상(이미지)
  • 커맨드와 달리 구체적인 이름을 지정
  • docker container start [옵션] penguin

명령어 인자
  • 대상에 전달할 명령어와 인자 값을 지정
  • 문자 코드 또는 포트 번호 등을 전달 가능
  • docker run -d python:3.8-alpine python -m http.server

컨테이너 생성, 실행, 종료, 삭제

컨테이너 생성 및 실행
  • 컨테이너를 생성하고 실행하는 커맨드 : docker run(docker container run)
    • docker image pull, docker container create, docker container start 기능을 하나로 합친 것과 같음
    • docerk run (옵션) 이미지 (인자) 
  • 주요 옵션
옵션 형식 내용
--name 컨테이너_이름 컨테이너 이름을 지정
-p 호스트_포트번호 : 컨테이너_포트번호 포트 번호를 지정
-v 호스트_디스크 : 컨테이너_디렉터리 볼륨을 마운트
--net=네트워크_이름 컨테이너를 네트워크에 연결
-e 환경변수_이름=값 환경변수를 설정
-d 백그라운드로 실행
-i 컨테이너에 터미널(키보드)을 연결
-it 컨테이너와 상호 작용하는 대화형 모드로 컨테이너 내부의 터미널 접속, 내부에서 명령어를 실행하고 터미널 세션을 유지
-help 사용 방법 안내 메시지를 출력
  • 서버(데몬)이 아닌 OS형태의 컨테이너의 경우 run 실행시 바로 종료
  • docker run을 실행하되 백그라운드에서 실행하고(-d), 프로세스가 종료되지 않게 유지하고(-it)

컨테이너 정지 및 삭제 
  • 컨테이너를 정지하는 커맨드 : docker stop(docker container stop)
    • 컨테이너를 삭제하려면 컨테이너를 정지시켜야 함
    • docker stop 컨테이너_이름
 
  • 컨테이너를 삭제하는 커맨드 : docker rm(docker container rm)
    • 정지 상태가 아닌 컨테이너를 대상으로 실행하면 오류 발생 후 컨테이너가 삭제 되지 않음
    • docker rm 컨테이너_이름

컨테이너 목록
  • 컨테이너의 목록을 출력하는 커맨드 : docker ps(docker container ls)
    • 현재 실행 중인 컨테이너의 목록을 출력
    • docker ps -a 옵션을 추가하면 현재 존재하는 컨테이너의 목록 출력
20230906144833_9adc1450f76646e099e11ca3f3d0a0db_rlus.png
 
  • 컨테이너 목록의 주요 항목
항목 내용
CONTAINER ID 컨테이너 식별자, 무작위 문자열 할당. 본래 64글자 앞에서 12글자만 출력
IMAGE 컨테이너를 만들 때 사용한 이미지의 이름
COMMAND 컨테이너 실행 시에 실행하도록 설정된 프로그램의 이름
CREATED 컨테이너 생성 후 경과된 시간
STATUS 컨테이너의 현재 상태. 실행 중이라면 ‘UP’, 종료된 상태라면 ‘Exited’ 출력
PORTS 컨테이너에 할당된 포트 번호. ‘ 호스트 포트 번호 -> 컨테이너 포트 번호‘ 형식으로 출력. 포트 번호가 동일할 경우-> 의 뒷부분은 출력되지 않음
NAMES 컨테이너 이름

컨테이너 생성, 실행, 종료, 삭제 실습
  • 컨테이너 생성

#아파치 이미지 사용해 컨테이너 생성 및 실행
docker run --name apa000ex1 -d httpd
  • 아파치 이미지로 ‘apa000ex1’이름을 가진 컨테이너를 백그라운드로 생성 및 실행
  • Unable to find image ‘httpd:latest’ locally : 지정한 이미지가 로컬 저장소에 존재하지 않을 때 나타나는 메세지
  • latest: Pulling from library/httpd : 가장 최신 버전의 이미지 다운로드
20230906150440_9adc1450f76646e099e11ca3f3d0a0db_ar0c.png

#컨테이너 정보 확인
docker inspect apa000ex1
...... 생략
        "NetworkSettings": {

            "Bridge": "",

            "SandboxID": "fb1b34f4f9022",

            "HairpinMode": false,

            "LinkLocalIPv6Address": "",

            "LinkLocalIPv6PrefixLen": 0,

            "Ports": {

                "80/tcp": null

            },

            "SandboxKey": "/var/run/docker/netns/fb1b34f4f902",

            "SecondaryIPAddresses": null,

            "SecondaryIPv6Addresses": null,

            "EndpointID": "b43eab8834dc5b",

            "Gateway": "172.17.0.1",

            "GlobalIPv6Address": "",

            "GlobalIPv6PrefixLen": 0,

            "IPAddress": "172.17.0.2",

  • 컨테이너 확인 및 종료

#실행중인 컨테이너 목록 확인
docker ps

20230906150559_9adc1450f76646e099e11ca3f3d0a0db_sqph.png


#컨테이너 종료 
docker stop apa000ex1

20230906150752_9adc1450f76646e099e11ca3f3d0a0db_ukzk.png

 
  • 컨테이너 종료 및 존재 여부 확인

#실행중인 컨테이너 목록 확인
docker ps

20230906151025_9adc1450f76646e099e11ca3f3d0a0db_zrwt.png


#존재하는 컨테이너 목록 확인
docker ps -a

20230906151456_9adc1450f76646e099e11ca3f3d0a0db_0au5.png

 
  • 컨테이너 삭제 및 삭제 확인

#컨테이너 삭제
docker rm apa000ex1

20230906151547_9adc1450f76646e099e11ca3f3d0a0db_or0b.png


#존재하는 컨테이너 목록 확인
docker ps -a

20230906151641_9adc1450f76646e099e11ca3f3d0a0db_6qeq.png


컨테이너 통신

컨테이너 통신 체크 포인트
 
  • 포트 : 컴퓨터 네트워크에서 통신을 위한 통로
  • 호스트 포트 번호와 컨테이너 포트 번호 포트 포워딩
  • 포트 포워딩 : 컨테이너 내부 포트와 호스트 포트를 매핑하는 기술
  • 매핑 : 두 개의 포트를 연결하는 작업
  • -p 호스트_포트_번호 : 컨테이너_포트_번호 (-p 8080 : 80)
  • 여러 개의 컨테이너를 생성하려면 호스트 포트 번호를 겹치지 않게 설정


20230906153205_9adc1450f76646e099e11ca3f3d0a0db_z3tu.png

아파치 이미지로 컨테이너를 생성 후 웹 브라우저를 통해 컨테이너에 접근해 웹 사이트 동작 확인 실습
  • 아파치 : 웹 서버 기능을 제공하는 소프트웨어

#아파치 컨테이너 생성
docker run --name apa000ex2 -d -p 8080:80 httpd

20230906154129_9adc1450f76646e099e11ca3f3d0a0db_gpz1.png


컨테이너 포트 포워딩 되었는지 확인


#실행중인 컨테이너 목록 확인
docker ps
  • ‘0.0.0.0:8080->80/tcp’ : 호스트의 모든 IP 주소(‘0.0.0.0’)에서 들어오는 요청을 컨테이너의 80번 포트로 전달, 프로토콜은 tcp
  • :::8080->80/tcp : 호스트의 모든 IPv6 주소(:::)에서 들어오는 요청을 컨테이너의 80번 포트로 전달, 프로토콜은 tcp
20230906154346_9adc1450f76646e099e11ca3f3d0a0db_dagf.png

웹 브라우저를 통해 아파치 컨테이너에 접근 및 컨테이너 종료
  • Firefox 웹 브라우저 접속 및 컨테이너 접근
    • http://localhost:8080/
    • ‘localhost’ : 현재 사용중인 컴퓨터라는 뜻, 뒤에 콜론 및 포트 번호 기재하면 컨테이너에서 제공하는 웹사이트 접근

Firefox 웹 브라우저
20230906155117_9adc1450f76646e099e11ca3f3d0a0db_m6b8.png

아파치 초기 화면 
20230906155632_9adc1450f76646e099e11ca3f3d0a0db_iteb.png


컨테이너 종료 및 삭제


#컨테이너 종료
docker stop apa000ex2



#컨테이너 삭제
docker rm apa000ex2


이미지 삭제

이미지 삭제 체크 포인트
  • 이미지를 삭제하는 이유 : 컨테이너를 삭제해도 이미지는 그대로 남아 스토리지 용량을 압박하게 됨
  • 이미지 삭제하는 방법 : 해당 이미지로 실행한 컨테이너가 남아 있으면 이미지를 삭제할 수 없으므로 컨테이너 삭제후 이미지 삭제 가능
  • docker image rm 커맨드 
    • 이미지를 삭제하는 명령어
    • 공백으로 구분해 여러 이미지를 지정 가능
    • docker image rm [이미지_이름] [이미지_이름] [이미지_이름]


이미지 삭제 실습


#이미지 목록 확인
docker image ls

20230906122231_072101e8921e96f1306eb9b24fca800e_2zan.png
 

  • 이미지 목록의 주요 항목
항목 내용
REPOSITORY 이미지 이름
TAG 버전 정보, 이미지를 내려받을 때 따로 지정하지 않으면 latest(최신 버전)를 내려 받음
IMAGE ID 이미지 식별자, 본래는 64글자 앞에서부터 12글자만 출력
CREATED 이미지 생성 후 경과된 시간
SIZE 이미지의 전체 용량
 
  • 이미지 버전을 지정하여 다운로드 : [이미지_이름]:[버전_넘버]

#버전 지정 도커 이미지 다운로드
docker pull httpd:2.2

20230906123220_072101e8921e96f1306eb9b24fca800e_x73p.png


추가 이미지 확인


#이미지 목록 확인
docker image ls

20230906161334_9adc1450f76646e099e11ca3f3d0a0db_q5no.png


버전 지정 이미지 삭제


#이미지 삭제
docker image rm httpd:2.2


지정한 버전의 이미지가 삭제됐는지 확인


#이미지 목록 확인
docker image ls

20230906161829_9adc1450f76646e099e11ca3f3d0a0db_4p6m.png


나머지 이미지 삭제


#이미지 삭제
docker image rm httpd
  • 해당 이미지가 컨테이너에서 사용 중이기 때문에 이미지를 삭제할 수 없다는 이미지를 삭제할 수 없다는 오류 메시지
  • 아파치 컨테이너 실습 중 컨테이너를 종료만 하고 삭제를 하지 않았기 때문에 삭제가 되지 않음
20230906162011_9adc1450f76646e099e11ca3f3d0a0db_jsna.png

해당 이미지를 사용중인 컨테이너 확인


#존재하는 컨테이너 목록 확인
docker ps -a 

20230906162252_9adc1450f76646e099e11ca3f3d0a0db_14w2.png


컨테이너 삭제 및  이미지 삭제


#컨테이너 삭제
docker rm apa000ex2



#이미지 삭제
docker image rm httpd

20230906162501_9adc1450f76646e099e11ca3f3d0a0db_jfm0.png

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색