1. Docker 이미지 가져오기
# docker pull
$ docker pull [이미지이름]:[이미지태그]
# example
$ docker pull ubuntu:lunar-20221216
2. Docker Run
# Docker run
$ docker container run [옵션1] [옵션2] ... [옵션N]
# example
$ docker container run -it -d -p 55520:8888 --name sjhUbuntu d5447fc01ae6 /bin/bash
Docker run 의 경우 옵션에서 여러가지 설정을 할 수 있는데 아래 설명과 링크를 참고하라.
- -i, --interactive
- 표준 입력(stdin)을 활성화하며, 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지합니다.
- 보통 이 옵션을 사용하여 Bash 에 명령을 입력합니다.
- -t, --tty
- TTY 모드(pseudo-TTY)를 사용합니다.
- Bash를 사용하려면 이 옵션을 설정해야 합니다.
- 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만, 셸이 표시되지 않습니다.
- --name
- 컨테이너 이름을 설정합니다.
- -d, --detach
- Detached 모드입니다.
- 보통 데몬 모드라고 부르며, 컨테이너가 백그라운드로 실행됩니다.
- -p, --publish
- 호스트와 컨테이너의 포트를 연결합니다. (포트포워딩)
- <호스트 포트>:<컨테이너 포트>
- -p 80:80
- --privileged
- 컨테이너 안에서 호스트의 리눅스 커널 기능(Capability)을 모두 사용합니다.
- 호스트의 주요 자원에 접근할 수 있습니다.
- --rm
- 프로세스 종료시 컨테이너 자동 제거
- --restart
- 컨테이너 종료 시, 재시작 정책을 설정합니다.
- --restart="always"
- 컨테이너 종료 시, 재시작 정책을 설정합니다.
- -v, --volume
- 데이터 볼륨을 설정입니다.
- 호스트와 컨테이너의 디렉토리를 연결하여, 파일을 컨테이너에 저장하지 않고 호스트에 바로 저장합니다. (마운트)
- -u, --user
- 컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID를 설정합니다.
- --user root
- 컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID를 설정합니다.
- -e, --env
- 컨테이너 내에서 사용할 환경 변수를 설정합니다.
- 보통 설정 값이나 비밀번호를 전달할 때 사용합니다.
- -e GRANT_SUDO=yes
- --link
- 컨테이너끼리 연결합니다.
- [컨테이너명 : 별칭]
- --link="db:db"
- -h, --hostname
- 컨테이너의 호스트 이름을 설정합니다.
- -w, --workdir
- 컨테이너 안의 프로세스가 실행될 디렉터리를 설정합니다.
- -a, --attach
- 컨테이너에 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 를 연결합니다.
- -c, --cpu-shares
- CPU 자원 분배 설정입니다.
- 기본 값은 1024이며, 각 값은 상대적으로 적용됩니다.
- -m, --memory
- 메모리 한계를 설정합니다.
- <숫자><단위> 형식이며 단위는 b, k, m, g 를 사용할 수 있습니다
- --memory=”100000b”
- --gpus
- 컨테이너에서 호스트의 NVIDIA GPU 를 사용할 수 있도록 설정합니다.
- 호스트는 NVIDIA GPU 가 장착 된 Linux 서버여야하며,
- NVIDIA driver 가 설치되어 있어야하고,
- docker 19.03.5 버전 이상이어야합니다.
- GPU 모두 사용하기
- --gpus all
- GPU 지정해서 사용하기
- --gpus ‘”device=0,1”’
- 컨테이너에서 호스트의 NVIDIA GPU 를 사용할 수 있도록 설정합니다.
- --security-opt
- SELinux, AppArmor 옵션을 설정합니다.
- --security-opt=”label:level:TopSecret”
- SELinux, AppArmor 옵션을 설정합니다.
참고
- https://wooono.tistory.com/348
- https://khj93.tistory.com/entry/Docker-Docker-option-명령어-목록
- http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter20/28
3. Docker 실행 / 종료 된 컨테이너 조회
# 실행중인 container 조회
$ docker ps
# 실행중, 종료된 container 같이 조회
$ docker ps -a
4. Docker 세션 연결(exec)
Docker 를 서버에서 사용할 경우 백그라운드로 실행하는 경우가 많다. 이럴경우 백그라운드로 넘어간 도커에 무언가 설치를 하거나 작업을 해야할 때 docker terminal 에 접근해야 하는 경우가 있다. 이럴 때 exec 명령어를 사용한다.
$ docker exec <옵션> <컨테이너ID> <명령어>
# docker terminal 내 단일 명령 실행
$ docker exec <컨테이너ID or 컨테이너NAME> 명령어
$ docker exec ubuntuJH pwd
# docker terminal 진입
$ docker exec -it <컨테이너ID or 컨테이너NAME> <터미널 선택>
$ docker exec -it ubuntuJH /bin/bash
5. Docker Stop
도커 컨테이너를 중지하고 싶을 때 사용
# Container 종료
$ docker stop <container ID>
6. Docker rm
도커 컨테이너를 지울 때 사용. $ docker stop 같은 경우 컨테이너만 종료되고 그 데이터나 설정값들은 모두 남아 있다. 일반적인 컴퓨터에서 전원만 내린 거라고 생각하면 편하다. 도커를 완전히 날리고 싶다면 rm 명령어를 사용한다.
# Docker rm
$ docker rm [containerID]
$ docker rm ubuntuLiaLi
7. 기타 명령어들
여기서 정리하지 못한 다른 명령어들은 아래 링크를 참조하기를 바란다.
https://captcha.tistory.com/49
'프로그램 설치 및 환경설정 > Docker' 카테고리의 다른 글
[Docker] Ubuntu Server Docker Container - 외부 pc vscode 연결 (0) | 2024.02.15 |
---|---|
[Docker] 딥러닝을 위한 Docker 컨테이너 생성(conda, jupyterlab 포함) (0) | 2023.01.11 |
[Docker] Ubuntu(20.04) Docker 설치 (1) | 2023.01.10 |