도커 이미지
도커 이미지 상태보기
$ 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
## container 나오기
$ Ctrl + P,Q
컨테이너 삭제
$ docker rm container_name(혹은 uuid)
reference