본문 바로가기

docker

Docker 사용법

도커 이미지

도커 이미지 상태보기

$ docker images

도커 이미지 pull 받기

## docker pull NAME[:TAG]
$ docker pull tensorflow/tensorflow:2.2.0-gpu

도커 이미지 만들기

# 도커 파일이 현재 폴더에 존재하는 경우
$ docker build -t image_name .
# 도커 파일을 지정하는 경우
$ docker build -t image_name:tag -f ./Dockerfile .

도커 이미지 삭제

# 기본 latest 태그 삭제
$ docker rmi image_name(혹은 uuid)
# 해당 태그 삭제
$ docker rmi image_name:tag

container

container 상태보기

$ docker ps
$ docker ps -a

container 옵션

  • container도 일반적인 리눅스 명령어들과 동일하고 foreground와 background 실행이 가능하다.

포어그라운드(fore-ground) 실행

  • t 옵션은 tty를 할당하고 i옵션은 표준 입출력을 사용한다. 예시로 ubuntu 16.04 버전의 컨테이너를 -i, -t 옵션을 주어 생성하고 해당 컨테이너의 기본 커맨드인 /bin/bash를 실행한다. 해당 커맨드는 입력해주지 않아도 같은 동작을 예상한다.
$ docker run -i -t ubuntu:16.04 bin/bash

데몬으로(detached) 실행

  • -d 옵션을 통해 데몬으로 실행한다. 일반적으로 웹서버 컨테이너 등을 해당 모드들로 실행한다. 예시로 nginx 컨테이너를 실행한다.
$ docker run -d -p 80:80 nginx

container 실행

  • docker run, docker exec를 통해 컨테이너의 명령어를 실행 할 수 있다.
    • run : 컨테이너를 동작 시킬때 사용함
    • exec : 동작하고 있는 (혹은 activate 상태인) 컨테이너에 실행 명령을 동작하도록 수행함.
  • docker run을 이용하기 보다는 [docker compose](Docker compose 사용법)를 이용하여 컨테이너를 실행하자.
## docker run [OPTION] IMAGE[:TAG] [COMMAND]
$ docker run -it \
        --rm \                                   # 컨테이너가 동작을 멈추면 삭제 되는 옵션
        --gpus all \                             # GPU 설정
        --gpus "device=0" \                      # GPU 숫자로 설정
        --name container_name \                  # container 이름 설정
        -w /root/project \                       # container 시작 working directory 설정
        -v /home/$USER/project:/root/project \   # container 외/내부 폴더 Volume mount 하기
        -p 11111:11111 \                         # 이미 사용하고 있는 port는 피하자 (docker ps -a)
        -p 22222:22222 \                         # port 수는 65536 이하로.
        -p 22-25:22-25 \                         # 여러개의 포트를 사용할 때 사용
        tensorflow/tensorflow:2.8.2-gpu \        # 이미지 이름
        /bin/bash                                # 시작하면서 동작할 명령을 설정할 수 있음.
## 기본 bash 쉘을 실행하게 하여 터미널에 집입함.
$ docker exec -it \
        container_name \        # 컨테이너 이름 혹은 컨테이너 아이디
        /bin/bash               # 동작할 명령

## 주피터를 동작하게 하거나
$ docker exec -it \
        container_name \        # 컨테이너 이름 혹은 컨테이너 아이디
        "jupiter notebook"      # 주피터를 동작함.

## 특정 shell을 실행하게도 할 수 있음
$ docker exec -it \
        container_name \        # 컨테이너 이름 혹은 컨테이너 아이디
        "bash run_script.sh"

container 서비스 시작, 중지

  • 리눅스의 데몬 처럼 서비스를 시작 및 중지 할 수가 있음.
  • container를 삭제 할때 중지를 해주지 않으면 삭제 되지 않음.
## container 시작 
$ docker start container_name
## container 중지
$ docker stop container_name

container attach, detach

  • container 도 tmux나 byobu 와 같이 attach detach가 가능하다.
  • attach
## container 들어가기 
$ docker attach container_name
  • detach
## container 나오기
$ Ctrl + P,Q

컨테이너 삭제

$ docker rm container_name(혹은 uuid)

reference

'docker' 카테고리의 다른 글

docker group 추가  (0) 2023.06.25
Dockerfile 사용법  (0) 2023.06.25