[docker]도커 명령어 모음

신동혁·2023년 2월 6일
5

도커

목록 보기
3/5

리눅스에서 도커 설치

  • 혹시나 있을 도커 옛버전 삭제
sudo apt-get remove docker docker-engine docker.io containerd runc
  • apt-get 업데이트 및 기타 설정
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | 
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  sudo apt-get update
  • 도커 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 설치되었는지 확인
docker --version
  • 도커 실행
sudo systemctl status docker
# 위에꺼 아니면 아래꺼
sudo /etc/init.d/docker start
  • 도커 이미지 빌드
docker image bulid -t 이미지명[:태그명] Dockerfile경로
  • 도커 이미지 pull
docker image pull 레파지토리명[:태그명]
  • docker ps
    : 실행중인 컨테이너 목록 확인

  • docker ps -a
    : 전체 컨테이너 목록 확인

  • docker container ls -a
    : 전체 컨테이너 목록 확인

  • docker start 컨테이너ID
    : 컨테이너 시작

  • docker attach 컨테이너ID
    : 컨테이너 접속

  • docker stop 컨테이너ID
    : 컨테이너 멈춤

  • docker run 컨테이너ID
    : 컨테이너 생성 및 시작

  • docker run -it 컨테이너ID
    : 컨테이너 생성 및 시작 및 접속

  • docker rm 컨테이너ID
    : 컨테이너 삭제

  • docker exec -it 컨테이너ID /bin/bash
    : 실행되고 있던 컨테이너 접속

  • exit
    : 컨테이너 빠져나오기

dockerfile이란?

dockerfile은 docker image를 만들기 위한 설정 파일을 의미한다.

구성요소

  • FROM
    : 빌드할 베이스 이미지를 지정. 이미지가 로컬에 없으면 도커 허브에서 해당 이미지를 검색해 다운. ex) FROM ubuntu:latest
  • RUN
    : 컨테이너에서 실행할 명령어를 지정. 보통 컨테이너에 필요한 라이브러리를 다운받는 명령어나 디렉토리를 만드는 명령어를 지정한다. ex) RUN apt-get update
  • ADD
    : 컨테이너에서 배치할 파일이나 디렉토리를 지정. ex) ADD ./message /message ===> 해당 명령어는 현재 디렉토리에 위치한 message라는 파일을 컨테이너의 루트 디렉토리에 message라는 이름으로 배치하라는 소리다.
  • CMD
    : 컨테이너가 시작할 때 실행할 명령어를 지정. RUN은 이미지를 빌드할 때 실행되고 CMD는 이미 빌드된 이미지(컨테이너)가 시작할 때 실행된다. 여러 CMD는 모두 실행되지 않고 맨 마지막 CMD만 실행된다.
  • ENTRYPOINT
    : CMD와 동일. 하지만 CMD에서는 param값을 대체할 수 있지만 ENTRYPOINT는 불가능하다. ENTRYPOINT와 CMD는 같이 쓰이면서 CMD는 default값을 가진 param을 갖는 명령어를 지정할 때 쓰이고 ENTRYPOINT는 그렇지 않을 때 쓰인다. 또한 CMD와 마찬가지로 여러 ENTRYPOINT는 모두 실행되지 않고 맨 마지막 ENTRYPOINT만 실행된다.
  • LABEL
    : key-value 형식의 메타데이터를 이미지에 추가.
  • ENV
    : LABEL과 동일하지만 메타데이터 대신 환경변수를 설정.
  • VOLUME
    : 컨테이너 내의 특정 디렉토리를 지정. 해당 디렉토리를 외부 경로에 마운트되어 컨테이너가 삭제되어도 해당 디렉토리의 정보는 보존될 수 있게 됨. 외부 경로란 HOST OS의 /var/lib/docker/volumes 경로를 의미한다.

dockerfile 생성

dockerfile은 기본적으로 하나의 디렉토리 안에 한 개씩 생성할 수 있다. 또한 dockerfile은 dockerfile 혹은 Dockerfile이라는 이름으로 생성되어야 인식되는 것 같다.

  1. 디렉토리 생성하고 해당 디렉토리로 이동. Mytest라는 이름으로 생성해 봄.

    mkdir Mytest
    cd Mytest
  2. Dockerfile생성

    touch Dockerfile
  3. 테스트를 위한 testfile1 파일을 생성해본다.

    touch testfile1
    vi testfile1
    # 원하는 내용 작성 후 저장	
  4. Dockerfile작성

    vi Dockerfile
  5. 작성 내용 예시

    FROM ubuntu:latest
    MAINTAINER myname
    RUN apt-get install -y
    ADD testfile1 /testfile2
    VOLUME /mountcheck

    내용을 해석하자면

    • FROM ubuntu:latest
      : 베이스 이미지로 사용할 ubuntu:latest 이미지를 로컬에서 먼저 찾아봄. 없으면 docker hub에서 해당 이미지 찾아서 다운 진행.
    • MAINTAINER myname
      : 관리자를 설정하는 부분. 주석이라고 생각해도 됨. myname이라는 사람이 관리자라는 뜻.
    • RUN apt-get install -y
      : 컨테이너를 생성 시 apt-get install 이 실행되도록 함.
    • ADD testfile1 /testfile2
      : 위에서 만들었던 testfile1 파일을 컨테이너를 생성할 때는 /testfile2라는 경로와 이름의 파일로 만들겠다는 뜻. 파일 자체의 내용은 똑같이 복사될 것임.
    • VOLUME /mountcheck
      : 컨테이너를 생성할 때 /mountcheck 디렉토리를 생성하고 이를 HOST OS에 마운트시키겠다는 뜻. 마운트 된 HOST OS 경로는 찾는 법이 있음.(나중에 설명)
  6. 이미지 빌드(위치한 경로에 존재하는 dockerfile을 원하는 태그명으로 빌드한다.)

    docker build --tag Myimage:1.0
  7. docker image ls
    REPOSITORY는 Myimage, TAG는 1.0으로 빌드된 이미지를 확인할 수 있을 것이다.

  8. docker run -it Myimage:1.0
    : 해당 이미지로 컨테이너 생성 및 실행, 그리고 바로 접속

  9. 확인
    ls 명령어를 통해 파일과 디렉토리를 확인하게 되면 위에서 설정했던대로 / 경로에 testfile2 파일과 mountcheck 디렉토리가 존재하는 것을 확인할 수 있다.

0개의 댓글