목차


  • 도커 이미지 명령어
    • [[#도커 이미지 명령어#도커 이미지 검색|도커 이미지 검색]]
    • [[#도커 이미지 명령어#도커 이미지 다운로드|도커 이미지 다운로드]]
    • [[#도커 이미지 명령어#다운받은 이미지 확인|다운받은 이미지 확인]]
    • [[#도커 이미지 명령어#id로 이미지 세부 정보 확인|id로 이미지 세부 정보 확인]]
    • [[#도커 이미지 명령어#이미지 삭제|이미지 삭제]]
  • 도커 컨테이너 명령어
    • [[#도커 컨테이너 명령어#도커 컨테이너 실행|도커 컨테이너 실행]]
      • [[#도커 컨테이너 실행#docker run 옵션|docker run 옵션]]
    • [[#도커 컨테이너 명령어#도커 컨테이너 목록 확인|도커 컨테이너 목록 확인]]
    • [[#도커 컨테이너 명령어#도커 컨테이너 상세 보기|도커 컨테이너 상세 보기]]
    • [[#도커 컨테이너 명령어#도커 컨테이너 실행, 중지|도커 컨테이너 실행, 중지]]
    • [[#도커 컨테이너 명령어#도커 컨테이너 삭제|도커 컨테이너 삭제]]
    • [[#도커 컨테이너 명령어#호스트와 컨테이너 사이 파일 복사|호스트와 컨테이너 사이 파일 복사]]
  • 기타 명령어
    • [[#기타 명령어#도커 컨테이너 접속|도커 컨테이너 접속]]
    • [[#기타 명령어#도커 컨테이너 root 권한으로 접속|도커 컨테이너 root 권한으로 접속]]
    • [[#기타 명령어#도커 컨테이너 log 확인 방법|도커 컨테이너 log 확인 방법]]
    • [[#기타 명령어#도커 용량 확인|도커 용량 확인]]
    • [[#기타 명령어#도커 미사용 컨테이너, 이미지, 캐시 삭제|도커 미사용 컨테이너, 이미지, 캐시 삭제]]
  • Dockerfile
    • [[#Dockerfile#Dockerfile 포맷|Dockerfile 포맷]]
    • [[#Dockerfile#Dockerfile 명령어|Dockerfile 명령어]]
    • [[#Dockerfile#도커 빌드|도커 빌드]]

개요


도커 명령어를 모아둔것임.

내용


도커 이미지 명령어

도커 이미지 검색

docker search 이미지

도커 이미지 다운로드

docker pull 이미지

다운받은 이미지 확인

docker images

id로 이미지 세부 정보 확인

docker image inspect 이미지id

이미지 삭제

docker rmi 이미지

도커 컨테이너 명령어

도커 컨테이너 실행

docker run -p 8080:80 nginx

docker run 옵션

명령어설명
-i, —interactive표준 입력을 활성화하며, 컨테이너와 연결되어 있지 않더라도 표준 입력을 유지
보통 이 옵션을 사용하여 Bash에 명령을 입력
-t, —ttyTTY모드 사용
Bash를 사용하려면 이 옵션을 설정해야 함
이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만, 셀이 표시되지 않음
—name컨테이너 이름 설정
-d, —detachDetached 모드
보통 데몬 모드라고 부르며, 컨테이너를 백그라운드로 실행
-p, —publish호스트와 컨테이너의 포트를 연결 (포트포워딩)
<호스트 포트>:<컨테이너 포트> (ex. -p 8080:8080)
—rm프로세스 종료 시 컨테이너 자동 제거
—restart컨테이너 종료 시 재시작 정책 설정 (ex. —restart=”always”)
-v, —volume데이터 볼륨을 설정
호스트와 컨테이너의 디렉토리를 연결하여, 파일을 컨테이너에 저장하지 않고
호스트에 바로 저장 (마운트)
-u, —user컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID를 설정 (ex. —user root)
-e, —env컨테이너 내에서 사용할 환경 변수를 설정
보통 설정 값이나 비밀번호를 전달할 때 사용 (ex. -e GRANT_SUDO=yes)
-it-i 옵션과 -t 옵션을 같이 쓰는 경우
docker 컨테이너에 표준 입력(stdin)을 열어두고(-i), 가상 터미널을 열어(-t)
키보드의 입력을 표준 입력으로 전달할 수 있도록 하는 옵션

도커 컨테이너 목록 확인

  • 실행 중인 컨테이너 목록 확인

    docker ps
    
  • 모든 컨테이너 목록 확인

    docker ps -a
    

도커 컨테이너 상세 보기

docker inspect <컨테이너명>

도커 컨테이너 실행, 중지

docker start <컨테이너명>
docker stop <컨테이너명>

도커 컨테이너 삭제

docker rm -f <컨테이너명>
/*
-f 옵션은 컨테이너를 강제 종료하는 옵션이기 때문에
컨테이너 삭제 전 docker stop을 통한 도커 컨테이너 중지 후 
-f 옵션을 뺀 삭제 명령어를 사용하는 것을 권장함
*/

호스트와 컨테이너 사이 파일 복사

  • 호스트 → 컨테이너

    docker cp [host 파일경로] [container name]:[container 내부 경로]
    
  • 컨테이너 → 호스트

    docker cp [container name]:[container 내부 경로] [host 파일경로]
    

기타 명령어

도커 컨테이너 접속

docker exec -it <컨테이너> bin/bash

도커 컨테이너 root 권한으로 접속

docker exec -u 0 -it <컨테이너> bin/bash

도커 컨테이너 log 확인 방법

# log 확인
docker logs <컨테이너>
# 마지막 10줄 출력 후 실시간 출력
docker logs --tail 10 -f <컨테이너>

도커 용량 확인

  • 전체 도커 용량 확인 (요약)

    docker system df
    
  • 컨테이너별 용량 확인

    docker ps --size --format "table {{.ID}}\t{{.Image}}\t{{.Size}}"
    
  • 도커 상세 용량 확인

    docker system df --verbose
    

도커 미사용 컨테이너, 이미지, 캐시 삭제

  • 미사용 컨테이너 삭제

    docker container prune
    
  • 미사용 이미지 삭제

    docker image prune
    
  • 미사용 볼륨 삭제

    docker volume prune
    
  • 미사용 오브젝트 전체 삭제 (로그 제외)

    docker system prune -a
    

Dockerfile

Dockerfile 포맷

# Comment
INSTRUCTION arguments 

INSTRUCTION(명령어)은 대문자, 소문자 상과없이 사용이 가능하다.
하지만 대문자로 쓰는 것이 관례이며, 그렇게 함으로써 arguments(인자) 와 구별을 준다

docker build 명령어는 Dockerfile 의 적힌 명령어들을 위에서 아래로 순차 실행한다.
그리고 반드시 첫 명령어는 FROM 이어야 한다. (예외적으로 ARG는 가능)

FROM 명령어는 새로 생성하려는 이미지의 기반이 되는 **부모 이미지(**Parent image)를 지정하는 것이다.

마지막으로 Dockerfile 도 bash script 처럼 # 를 주석으로 사용할 수 있다.

Dockerfile 명령어

키워드기능
FROMBase image 지정
RUNDockerfile로부터 도커 이미지를 빌드하는 순간 실행되는 명령어

라이브러리 설치 하는 부분에서 주로 사용됨
CMD이미지로부터 컨테이너를 생성하여 최초로 실행할 때 수행된다.

docker run 명령어 마지막에 명령어를 작성하면 덮어쓰기가 가능하다.
LABEL생성할 image의 메타정보를 등록한다.
EXPOSE컨테이너 실행 시 열어둘 포트와 TCP/UDP를 지정한다. (기본은 TCP)

필수는 아니지만 다른 사용자에게 port에 대한 힌트를 줄 수 있다.
ENV컨테이너 실행 시 사용할 환경변수를 지정

이미지가 생성되면 내부에 환경변수는 저장된다.
ARG이미지 생성 시에만 사용하는 변수

컨테이너 실행 후에는 사용 불가
ENTRYPOINTCMD와 비슷하지만 약간 다른 것

컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어를 지정
WORKDIR컨테이너 시작 시 사용될 working directory 경로
COPY호스트의 파일을 컨테이너로 복사할 때 사용

호스트의 파일은 Dockerfile과 같은 곳에 위치해야 한다.

ex. COPY nginx.conf /etc/nginx/nginx.conf

CMD와 ENTRYPOINT의 차이점

  • ENTRYPOINT는 컨테이너가 최초에 꼭 실행해야만 하는 명령어가 있을 때 사용
    CMD는 컨테이너 실행 시 시작되는 명령어이지만 변경될 수 있을 때 사용

주요 명령어만 작성 이외의 명령어들은 아래 링크에서 확인

https://docs.docker.com/engine/reference/builder/

도커 빌드

docker build -t 이미지명:태그 /path/to/a/Dockerfile .

Dockerfile 작성 및 도커 빌드의 예시는 아래 링크 확인

Docker - Wildfly Docker - Nginx

참고문헌