송민준의 개발노트

도커 기본 명령어 본문

인프라/도커

도커 기본 명령어

송민준 2021. 11. 10. 00:39

- 도커 Linux 설치

기본구조

docker run [OPTIONS] IMAGE:[:TAG|@DIGEST] [COMMAND][ARG...]

-d : detached mode(백그라운드 모드)
-p : 호스트와 컨테이너의포트를 연결(포워딩)
-v : 호스트와 컨테이너의 디렉토리를 연결(마운트)
-e : 컨테이너 내에서 사용할 환경변수 설정
--name : 컨테이너 이름 설정
--rm : 프로세스 종료시 컨테이너 자동 제거
-lt : -l와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--link : 컨테이너 연결
--network : 네트워크 사용

 

- 도커 실행

// 생명 주기 : 생성 -> 시작 -> 실행
docker run 이름

- 도커 이미지 내부 파일 구조

docker run 이름 ls

- 도커 컨테이너 나열

docker ps

- 도커 컨테이너 원하는 항목만

docker ps --format 'table{{.Names}} \t table {{.Image}} \t table{{.Command}}'

- 모든 컨테이너 나열

docker ps -a

- 이미지 생성

// 생명 주기 : 생성 -> 시작
docker create 이름

- 이미지 시작

// 생명 주기 : 시작 -> 실행
docker start 이름

 

- 중지

// 2가지 방법
// stop은 그동안 하던 작업을 완료하고 컨테이너 중지
docker stop

// kill은 안기다리고 바로 중지
docker kill

- 도커 컨테이너 삭제

docker rm 컨테이너아이디

- 도커 컨테이너 전체 삭제

docker rm -f $(docker ps -a -q)

- 도커 이미지 삭제

docker rmi 이미지아이디

- 도커 컨테이너, 이미지, 네트워크 전체 삭제(실행중인 컨테이너에는 영향 X)

docker system prune

 

- 실행 중인 컨테이너에 명령어를 전달

 ( run 은 새로 컨테이너를 만드는 것이고 exec은 이미 실행중인 컨테이너에 명렁어 전달)

docker exec 컨테이너아이디 명령어

 

- 상호작용을 위한 명렁어 전달

// i - interactive , t - terminal
// it가 없다면 실행만하고 나와버림
docker exec -it 컨테이너아이디 명령어

// 지속적으로 명령어를 작성하고 싶다면...
docker exec -it 컨테이너아이디 sh

sh 를 종료하고 싶다면 control + D

 

- 도커 이미지 만들기

docker build ./

- 도커 이미지 만들 때 이름을 주는 것

docker build -t 나의도커아이디/저장소or프로젝트이름:버전 ./

ex)
docker build -t dkaskgkdua/config-service:1.0 .

- 도커 이미지 업로드

docker push 도커아이디/프로젝트이름:버전

ex) docker push dkaskgkdua/user-service:1.0

 

- 도커 네트워크

* bridge 네트워크는 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 수 있도록 해준다.

* host 네트워크는 컨테이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너 돌리기 위해서 사용된다.

* overlay 네트워크는 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용된다.

# 네트워크 리스트
docker network ls

# 네트워크 생성
docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 com-network

# 네트워크 상세 정보
docker network inspect com-network

* 네트워크 연결 예제(rabbitmq)

docker run --name rabbitmq --network com-network --hostname=30e9638b016a --mac-address=02:42:ac:11:00:02 --env=PATH=/opt/rabbitmq/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=RABBITMQ_DATA_DIR=/var/lib/rabbitmq --env=RABBITMQ_VERSION=3.11.10 --env=RABBITMQ_PGP_KEY_ID=0x0A9AF2115F4687BD29803A206B73A36E6026DFCA --env=RABBITMQ_HOME=/opt/rabbitmq --env=HOME=/var/lib/rabbitmq --env=LANG=C.UTF-8 --env=LANGUAGE=C.UTF-8 --env=LC_ALL=C.UTF-8 --volume=/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 15671:15671 -p 5671:5671 -p 4369:4369 --label='org.opencontainers.image.ref.name=ubuntu' --label='org.opencontainers.image.version=20.04' --runtime=runc -d rabbitmq:3.11-management

 

Docker File

도커 이미지를 만들기 위한 설정 파일이다. 컨테이너가 실행해야 할 것에 대한 설정들이 정의되어 있다.

 

파일 만들기 순서(예시)

1. 베이스 이미지 명시(파일 스냅샷)

- <이미지 이름>:<태그> 형식으로 작성

- 태그를 안 붙이면 자동적으로 가장 최신것 다운

FROM baseImage

2. 추가적으로 필요한 파일을 다운 받기 위해 필요한 명령어를 명시함.(파일 스냅샷)

- 도커이미지가 생성되기 전에 수행할 쉘 명령어

RUN command

3. 컨테이너 시작시 실행될 명령어를 명시해줌(시작시 실행될 명령어)

- 해당 명령어는 DockerFile내 1회만 사용 가능

CMD [ "executable" ]

 

베이스 이미지란 무엇인가?

- 도커 이미지는 여러개의 레이어로 되어 있다. 그 중 베이스 이미지는 이 이미지의 기반이 되는 부분이다.(OS라고 생각하면 됨)

  레이어는 중간 단계의 이미지라고 생각하면 된다.

 

 

 

- 도커 로그 확인

docker logs 컨테이너ID|컨테이너명

 

 

docker compose

도커파일을 만들기 위한 일련의 스크립트 모음

docker-compose -f 도커_컴포즈파일.yml up -d

# -f 파일
# up 실행
# down 종료
# -d 데몬모드

'인프라 > 도커' 카테고리의 다른 글

도커란?  (0) 2021.11.06