일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dockerfile
- AWS
- Service
- POD
- ansible
- intervals
- K8S
- elasticsearch
- terraform
- Deployment
- WSGI
- EKS
- EC2
- DevOps
- FastAPI
- event loop
- github
- ebs
- Django
- asyncio
- IAC
- Kubernetes
- 쿠버네티스
- Python
- leetcode
- YAML
- docker
- IAM
- asgi
- 자바스크립트
- Today
- Total
궁금한게 많은 개발자 노트
[ Docker ] docker cli 주요 명령어 및 옵션 본문
docker image 명령어:docker image들을 조회 및 관리하기 위한 명령어로 다양한 옵션을 제공
https://docs.docker.com/engine/reference/commandline/images/
docker 이미지들을 조회하기 위해서는 docker images 명령어를 사용할 수 있으며, 존재하는 image들 중 어떤 기준에 의해 filtering한 결과를 보고싶은 경우는 -f 옵션을 사용할 수 있습니다.
주로 테스트 시에 무분별하게 생성된 image들이나 컨테이너에서 사용되고 종료될 때 삭제되지 않은 image들을 정리할 때 아래 명령어를 통해 사용되지 않는 이미지들을 깔끔하게 정리할 수 있습니다.
docker rmi $(docker images -f "dangling=true" -q)
위 명령어는 dangling=true 옵션을 사용하여 dangling 이미지 (즉, 다른 이미지가 이 이미지를 기반으로 만들어졌지만 더 이상 사용되지 않는 이미지)를 필터링합니다.
추가로, 만약 이름이 없는 이미지를 모두 삭제하고 싶다면, 다음 명령어를 사용할 수 있습니다.
docker image prune -f
이름이 있지만, 컨테이너에 사용되고 난 후 status가 exited인 image들을 정리하고 싶은 경우는 다음 명령어를 사용합니다.
docker rm $(docker ps --filter status=exited -q)
다음은 docker run 명령어입니다.
docker run은 이미지로 부터 컨테이너를 생성하거나 실행시키는 명령어입니다.
https://docs.docker.com/engine/reference/commandline/run/
docker run [옵션] [이미지] [명령어] [인자]
ex) docker run --rm ubuntu ls -l
기본적인 사용법은 위와 같으며 --rm옵션은 컨테이너 실행 완료와 함께 컨테이너를 삭제하는 옵션입니다.
자주 사용하는 옵션으로는 아래와 같습니다.
옵션 | 설명 |
-i --interactive | 표준 입력을 활성화하며, 컨테이너와 연결되어 있지 않더라도 표준 입력을 유지 (bash 명령 사용) |
-t --tty | TTY 모드를 사용합니다. bash를 사용하려면 이 옵션을 사용해야 합니다. |
--name | 컨테이너 이름을 설정합니다. |
-d, --detach | detached 모드로 데몬 모드라고 불립니다. 컨테이너가 백그라운드로 실행됩니다. |
-p, --publish | 호스트와 컨테이너의 포트를 연결합니다. <host port>:<container port> |
--priviledged | 컨테이너 내부에서 호스트의 리눅스 커널 기능을 모두 사용합니다. 호스트 주요 자원 접근 가능 |
--rm | 프로세스 종료 시 컨테이너 자동 제거 |
--restart | 컨테이너 종료 시, 재 시작 정책을 설정합니다. ex) --restart="always" |
-e, --env | 컨테이너 내에서 사용할 환경 변수를 설정합니다. |
--link | 컨테이너끼리 연결합니다. |
--expose | 지정한 범위의 포트 번호를 할당 |
-h, --hostname | 컨테이너의 호스트 이름을 설정합니다. |
-w, --workdir | 컨테이너 안의 프로세스가 실행될 디렉터리를 설정합니다. |
-a, --attach | 컨테이너에 표준 입력, 표준 출력, 표준 에러를 연결합니다. |
--net, --network | 컨테이너가 사용할 네트워크를 지정합니다. ex) --net=[bridge | none | host ... ] |
docker network
docker container는 격리된 환경에서 동작하기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능합니다. 하지만 여러 개의 컨테이너를 하나의 docker network에 연결시키면 서로 통신이 가능해집니다.
https://docs.docker.com/network/
Docker 네트워크의 기본은 내 컴퓨터에서 어떤 네트워크가 생성되어 있는지를 아는 것입니다. docker network ls 커맨드를 사용하면 현재 생성되어 있는 Docker 네트워크 목록을 조회할 수 있습니다.
주로 위에서 설명했듯 컨테이너간 통신을 위해 사용되며 create/rm 옵션을 통해 추가하거나 제거할 수 있습니다. 컨테이너 실행 시에 --net, --network옵션으로 연결할 네트워크를 지정하여 원하는 컨테이너 그룹끼리 통신이 가능하게 해줍니다.
--net옵션 뿐만 아니라 docker network connet/disconnect 네트워크이름 컨테이너이름 으로 네트워크에 컨테이너를 추가할 수도 있습니다.
[ 네트워크 종류 ]
bridge 네트워크는 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 수 있도록 해줍니다.
host 네트워크는 컨터이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 돌리기 위해서 사용됩니다.
overlay 네트워크는 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용됩니다.
나머지는 위 docs 참고하시면 다양한 네트워크에 대해 참고하실 수 있습니다.
'DevOps' 카테고리의 다른 글
[ k8s ] Kubernetes Persistent Volume 적용하기 (0) | 2023.04.18 |
---|---|
[ k8s ] Volume, PV, PVC란? (0) | 2023.04.11 |
[ github ] submodule이란? (0) | 2023.02.22 |
[ k8s ] 쿠버네티스 Role, RoleBinding (2) | 2023.02.16 |
[ k8s ] kubernetes 개념 (node, control plane) (0) | 2023.02.13 |