본 설치는 docker docs를 따라갑니다.
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.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-compose-plugin
sudo usermod -a -G docker $USER
sudo service docker restart
docker --help
docker 커맨드 --help
: 커맨드에 대한 도움말을 출력합니다.docker search
docker search [OPTIONS] TERM
docker search nginx
docker pull
docker pull [OPTIONS] NAME:TAG
docker pull ubuntu:20.04
Public한 repository(ex. docker hub) 대신 private 한 repository에서 이미지를 가져오는 경우.
- docker login을 통해서 특정 repository를 바라보도록 한 뒤, docker pull을 수행하는 형태로 사용합니다.
docker images
docker images [OPTIONS] [REPOSITORY[:TAG]]
docker images
docker ps
docker ps [OPTIONS]
-a
: 실행 중이지 않은 컨테이너를 포함하여 전체 목록을 출력--no-trunc
: 컨테이너 ID 전체를 보여줌docker ps -a
docker create
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
run
과 비슷합니다.docker run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
create
& start
).--name ubuntu-test
: 컨테이너 이름(id가 아님)-d
: 데몬(백그라운드)모드-it
: -i
+ -t
옵션. 컨테이너를 실행함과 동시에 interactive한 terminal로 접속시켜주는 옵션-p 8888:8888
: 포트 지정:
)컨테이너 포트 형태로, 로컬 포트 8888으로 접근 시 컨테이너 포트 8888으로 연결되도록 설정-e MYSQL_ROOT_PASSWORD=1234
: 환경변수 설정--env-file=파일
로 특정 환경변수 파일을 호출해서 설정도 가능--rm
: 컨테이너가 종료되면 자동으로 제거-w / --workdir
: 컨테이너의 작업 디렉토리를 설정 -> 명령어를 실행할 곳(-w에 선언한 공간이 최우선적으로 기본 작업 공간이 됨)--restart
: 재시작 관련 옵션을 설정합니다.--restart no
: 재시작하지 않음--restart on-failure
: STATUS가 Exited(0)이 아닐 경우 재시작--restart always
: 항상 재시작--gpus all
: 컨테이너에서 최대로 사용 가능한 gpu의 수 지정(모두 사용)--cpus 0.5
: 컨테이너에서 최대로 사용 가능한 cpu의 수 지정(50%만 사용)-m / --memory
: 메모리 사용량 제한docker run -it --name test1 ubuntu:20.04 /bin/bash
(/bin/bash
는 컨테이너를 실행시킴과 동시에 실행할 커맨드(bash 터미널 켬))docker attach
docker attach [OPTIONS] CONTAINER
-it
)이 백그라운드(-d
) 모드로 돌아가고 있는 곳에 붙는다는 의미입니다.Ctrl+P
, Ctrl+Q
를 순차적으로 눌러 실행 상태를 유지한 채로 빠져나올 수도 있습니다.)docker exec
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker run -it -d --name test2 ubuntu:20.04
-d
옵션으로 실행시키고 ps
로 확인하면, 아래와 같이 잘 돌아가고 있음을 알 수 있습니다.docker exec -it test2 /bin/bash
docker logs
docker logs [OPTIONS] CONTAINER
-f
: 계속 지켜보며 log를 출력-tail n
: 마지막 n줄 만큼의 로그를 출력docker stop
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop test2
docker ps -a
docker pause / docker unpause
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
docker stop
은 실행 중인 모든 프로세스를 KILL하지만, pause
는 실행 중인 프로세스를 일시중지 합니다.pause
는 컨테이너가 일시 중지된 동안 메모리를 계속 유지합니다. docker start
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker rm
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f
로 실행중인 컨테이너도 삭제할 수 있습니다.docker rm test1
docker rm test2
docker ps -a
prune
docker container prune
: 종료된 컨테이너를 모두 삭제합니다.docker image prune
: (default)dangling된 이미지들을 모두 삭제합니다.docker image prune -a
명령어를 사용하면, 컨테이너에서 사용하고 있지 않는 이미지를 모두 제거합니다.docker volume prune
: 컨테이너와 연결되어 있지 않는 모든 볼륨을 삭제합니다. docker network prune
: 컨테이너에서 사용하지 않는 네트워크를 삭제합니다.docker system prune
: 도커 오브젝트에서 사용하지 않는 것들을 삭제합니다.docker rmi
docker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi hello-world
docker stats
docker stats [OPTIONS] [CONTAINER...]
docker cp
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
# 복사할 대상(host) : /home/whattsup/Documents/cp-test
# 복사받을 대상(container 'test_container') : /home/testuser/Documents
docker cp /home/whattsup/Documents/cp-test test_container:/home/testuser/Documents
docker inspect
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker inspect <container-id>
docker volume inspect <volume-name>
docker network inspect <network-name>