Docker 명령어 정리

devdo·2021년 12월 18일
0

Docker

목록 보기
3/9
post-thumbnail

https://docs.docker.com/engine/reference/commandline/docker/

를 바탕으로 정리하는 도커 명령어입니다.

도커에서는 도커 이미지를 이용하여 컨테이너를 생성할 수 있는데,

도커 이미지를 이용하면 이미지에 설정해둔 대로 컨테이너의 구성환경을 적용할 수 있다.

Dockerfile이든 docker-compose.yml 파일이든 명령어를 작성하는 경로는 그 파일이 있는 위치에서다. 그렇지 않으면 명령어가 적용이 안되니 주의하자.


Docker 최초상태로 회귀하는 명령어(아주 유용)

# -a : 모든 container 출력, -q : ID만 출력
docker ps -aq 

# 컨테이너 삭제
# -f : force
docker rm -f $(docker ps -aq) 

# 이미지 삭제
docker rmi -f $(docker images -aq)

# 안쓰는 네트워크 삭제
docker network prune -f

# 안쓰는 볼륨 삭제
docker volume prune -f

# 도커 프로젝트 삭제
sudo rm -rf /docker/projects
sudo rm -rf /docker/_projects

고급

# exited 된 컨테이너 삭제
docker rm $(docker ps --filter status=exited -q)

# none 처리된 이미지들만 삭제 -> tag 없는 이미지
docker rmi $(docker images -f "dangling=true" -q)

logs

## docker 프로그램 에러 확인
$ sudo docker -f logs [container ID]
  • f: 프로그램 로그가 끝까지 출력

Image

Images 목록 보기

$ sudo docker images

Images 검색

$ sudo docker search [이미지 이름]

Images build

# Dockerfile 있어야됨
$ sudo docker build -t [dockerID]/[이미지 이름]:[버전] [경로]

Images push/pull

# Dockerhub registry에 등록
$ sudo docker push [dockerID]/[이미지 이름]:[버전]
# Dockerhub registry에서 image 가져옴
$ sudo docker pull [dockerID]/[이미지 이름]:[버전]
  • 버전:latest 를 쓰면 최신 버전으로 받을수 있다. 안써도 암묵적으로 latest이다.

Images 삭제

$ sudo docker rmi -f [이미지 id]
  • -f: 이미지 강제 삭제

Prune

사용하지 않는 컨테이너, 이미지 삭제
container에서 중지 또는 삭제를 해야 image도 삭제가 된다.

# 중지된 지 1시간 이상 지난 이미지만 삭제
sudo docker container prune --filter until=1h
# 사용하지 않는(dangling) image 삭제 
sudo docker image prune -a

💥Docker error : no space left on device
: 컨테이너들 용량이 도커의 용량을 초과해서 생기는 오류

# 안쓰는 파일들(실행중이 아닌 것들)을 삭제
sudo docker system prune
# 위 prune 명령어를 써도 space가 부족하면 안쓰는 images들도 삭제하자!
sudo docker rmi -f [이미지 id]

Container

다양한 프로그램(nginx, database, WAS 등)을 컨테이너 라는 격리된 환경을 이용하여 실행시킬수 있다.

Container 시작

$ sudo docker start [컨테이너 id 또는 name]
  • 재시작
$ sudo docker restart [컨테이너 id 또는 name]
  • Bash Shell에서 exit 또는 Ctrl + D를 입력하면 컨테이너가 정지된다.

  • Ctrl + P, Ctrl + Q를 차례대로 입력하여 컨테이너를 정지하지 않고, 컨테이너에서 빠져나온다.

Container 목록 보기

$ sudo docker ps [OPTION]

옵션

  • -a : 모든 컨테이너 목록 출력

Container 실행

# docker run [이미지 이름]
$ sudo docker run [options] image[:TAG|@DIGEST] [COMMAND] [ARG...]

예) ex) $ sudo docker run -p [외부port]:[도커port] -it --name server ubuntu:latest /bin/bash

✅run은 자동으로 pull도 해준다.

run 할시 다양항 옵션들 예시

# mysql 환경 설정 -e
sudo docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -d -p 9876:3306 mysql:8.0.22 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# jenkins 실행 -v
sudo docker run -d -p 9090:8080 -p 50000:50000 --name=jenkinscicd -v /jenkinsDir:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock mooh2jj/myjenkins

Container 접속

$ sudo docker exec -it [컨테이너 id 또는 name] /bin/bash
or 
$ sudo docker exec -it [컨테이너 id 또는 name] bash

: 외부에서 컨테이너 진입할 때 사용한다.

$ sudo docker attach [컨테이너 id 또는 name]

: container 실행시 사용한다.


$ sudo docker inspect [컨테이너 id 또는 name]

: 보통 container ip주소를 확인할 때 많이 사용한다.


Container 정지

$ sudo docker stop [컨테이너 id 또는 name]

Container 삭제

$ sudo docker rm -f [컨테이너 id 또는 name]
# 아예 실행되는 것을 가져올 수 있음
$ sudo docker rm -f $(sudo docker ps -aq)

docker-Compose

docker-compose ps
# build + run
docker-compose up -d
# Dockerfile 이미지까지 build + run
docker-compose up -d --build
# build한 image + container 삭제
docker-compose down
# build + run 했던 list
docker-compose ls (x)
docker compose ls (o)
docker-compose images
docker-compose -f logs 


참고

profile
배운 것을 기록합니다.

0개의 댓글