
본 설치는 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 nginxdocker pulldocker pull [OPTIONS] NAME:TAG
docker pull ubuntu:20.04
Public한 repository(ex. docker hub) 대신 private 한 repository에서 이미지를 가져오는 경우.
- docker login을 통해서 특정 repository를 바라보도록 한 뒤, docker pull을 수행하는 형태로 사용합니다.
docker imagesdocker images [OPTIONS] [REPOSITORY[:TAG]]
docker images
docker psdocker ps [OPTIONS]
-a : 실행 중이지 않은 컨테이너를 포함하여 전체 목록을 출력--no-trunc : 컨테이너 ID 전체를 보여줌docker ps -a
docker createdocker create [OPTIONS] IMAGE [COMMAND] [ARG...]
run과 비슷합니다.docker rundocker 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 execdocker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker run -it -d --name test2 ubuntu:20.04-d옵션으로 실행시키고 ps로 확인하면, 아래와 같이 잘 돌아가고 있음을 알 수 있습니다.
docker exec -it test2 /bin/bash
docker logsdocker logs [OPTIONS] CONTAINER
-f: 계속 지켜보며 log를 출력-tail n: 마지막 n줄 만큼의 로그를 출력docker stopdocker stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop test2 docker ps -a
docker pause / docker unpausedocker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
docker stop은 실행 중인 모든 프로세스를 KILL하지만, pause는 실행 중인 프로세스를 일시중지 합니다.pause는 컨테이너가 일시 중지된 동안 메모리를 계속 유지합니다. docker startdocker start [OPTIONS] CONTAINER [CONTAINER...]
docker rmdocker rm [OPTIONS] CONTAINER [CONTAINER...]
-f로 실행중인 컨테이너도 삭제할 수 있습니다.docker rm test1 docker rm test2 docker ps -a
prunedocker container prune : 종료된 컨테이너를 모두 삭제합니다.docker image prune: (default)dangling된 이미지들을 모두 삭제합니다.docker image prune -a 명령어를 사용하면, 컨테이너에서 사용하고 있지 않는 이미지를 모두 제거합니다.docker volume prune : 컨테이너와 연결되어 있지 않는 모든 볼륨을 삭제합니다. docker network prune : 컨테이너에서 사용하지 않는 네트워크를 삭제합니다.docker system prune : 도커 오브젝트에서 사용하지 않는 것들을 삭제합니다.docker rmidocker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi hello-world
docker statsdocker stats [OPTIONS] [CONTAINER...]
docker cpdocker 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 inspectdocker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker inspect <container-id>docker volume inspect <volume-name>docker network inspect <network-name>