반응형
일반 명령어
버전 확인
docker version
도커 장비에 ssh 접속
docker-machine ssh
컨테이너 명령어
컨테이너 조회
# 동작중인 컨테이너만 조회
docker ps
docker container ls
# 모든 컨테이너 조회
docker ps -a
# 모든 컨테이너의 컨테이너 ID만 조회
docker ps -a -q
# 컨테이너 이름으로 조회
docker ps --filter "name=demo-nginx"
# 컨테이너 이미지로 조회
docker ps --filter "ancestor=nginx"
# 컨테이너 상태로 조회
docker ps --filter "status=running"
# 컨테이너 이미지 라벨로 조회
docker ps --filter "label=maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>"
컨테이너 삭제
# 하나 삭제
docker rm -f <컨테이너 ID or 이름>
# 복수개 삭제
docker rm -f <컨테이너 ID or 이름>, <컨테이너 ID or 이름>
# 모든 컨테이너 삭제
docker rm -f `docker ps -a -q`
컨테이너 종료
docker stop <컨테이너 ID or 이름>
컨테이너 로그 출력
docker logs <컨테이너 ID or 이름>
# tail
docker logs -f <컨테이너>
컨테이너 접속
docker exec -it <컨테이너 ID or 이름> bash
docker exec -it <컨테이너 ID or 이름> sh
컨테이너에 명령어 실행 요청
# container 실행
docker run -dit --name demo-alpine alpine
# 명령어 실행
docker exec demo-alpine ls -al
total 64
drwxr-xr-x 1 root root 4096 Jan 19 15:06 .
drwxr-xr-x 1 root root 4096 Jan 19 15:06 ..
-rwxr-xr-x 1 root root 0 Jan 19 15:06 .dockerenv
drwxr-xr-x 2 root root 4096 Jan 9 12:46 bin
drwxr-xr-x 5 root root 360 Jan 19 15:06 dev
...
컨테이너 이름 변경
docker rename <변경될 컨테이너 이름> <변경할 컨테이너 이름>
컨테이너 종료시 자동 삭제되도록 설정하여 실행(--rm)
docker run --rm -dit --name demo-alpine alpine
컨테이너 포트 바인딩하여 실행(-p, -P)
# -p {host_port}:{container_port} : 지정된 포트 바인딩
docker run --rm -dit -p 80:80 --name demo-nginx nginx
# -P : 랜덤 포트 바인딩
docker run --rm -dit -P --name demo-nginx nginx
이미지 명령어
설치 가능한 이미지 조회
docker search <이미지명>
설치된 이미지 목록 조회
docker images
docker image ls
이미지 설치
docker pull <이미지명
이미지 삭제
# 이미지 하나 삭제
docker rmi -f <이미지명>
# 이미지 전체 삭제
docker rmi -f `docker images`
이미지 실행
- -d : 데몬 실행
- -i, -t : 입출력 설정
- -p : 포트
- ex) -p 80:80
- -v : 볼륨 마운트
- ex) -v /home/ubuntu/apache:/usr/local/apache2/htdocs
- --name : 컨테이너명
- ex) –name apache
docker run <옵션> <이미지명>
기타 명령어
docker image, volume, network 등 데이터들 모두 정리
docker system prune -a
volumes
- 생성
ubuntu@ubuntu-server:~$ docker volume create mysql_data mysql_data
- 조회
ubuntu@ubuntu-server:~$ docker volume ls DRIVER VOLUME NAME local mysql_data
- 상세 조회
ubuntu@ubuntu-server:~$ docker volume inspect mysql_data [ { "CreatedAt": "2020-12-04T10:10:10+09:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/mysql_data/_data", "Name": "mysql_data", "Options": {}, "Scope": "local" } ]
- 삭제
ubuntu@ubuntu-server:~$ docker volume rm mysql_data mysql_data
- 전체 볼륨 삭제
ubuntu@ubuntu-server:~$ docker volume rm `docker volume ls -q` mysql_data
inspect
docker run --rm -dit -p 8080:80 --name demo-nginx nginx
ubuntu@ubuntu:~$ docker inspect demo-nginx
[
{
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
"Status": "running"
},
"Name": "/demo-nginx",
"NetworkSettings": {
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8080"
},
{
"HostIp": "::",
"HostPort": "8080"
}
]
}
}
}
]
format 예제
ubuntu@ubuntu:~$ docker inspect -f '{{.Name}} -> {{.State.Status}}' demo-nginx
/demo-nginx -> running
ubuntu@ubuntu:~$ docker inspect -f '{{.NetworkSettings.Ports}}' demo-nginx
map[80/tcp:[{0.0.0.0 8080} {:: 8080}]]
index 예제
- 해당 위치의 값을 출력
# .Args 리스트의 2번째 값 출력
ubuntu@ubuntu:~$ docker inspect -f '{{index .Args 2}}' demo-nginx
daemon off;
# .NetworkSettings.Ports 맵의 "80/tcp" 값 출력
ubuntu@ubuntu:~$ docker inspect -f '{{index .NetworkSettings.Ports "80/tcp"}}' demo-nginx
[map[HostIp:0.0.0.0 HostPort:8080] map[HostIp::: HostPort:8080]]
range/end 예제
ubuntu@ubuntu:~$ docker inspect -f '{{range $key, $value := .NetworkSettings.Ports}}{{$key}} ===> {{(index $value 0).HostPort}}{{end}}' demo-nginx
80/tcp ===> 8080
json 예제
- 값을 json 포맷으로 출력
ubuntu@ubuntu:~$ docker inspect -f '{{json .NetworkSettings.Ports}}' demo-nginx
{"80/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"},{"HostIp":"::","HostPort":"8080"}]}
반응형
'Development > Docker' 카테고리의 다른 글
[Docker] Docker Private Registry 사용하기 (0) | 2023.01.15 |
---|---|
[Docker] Dockerfile 예시 (0) | 2020.12.28 |
[Docker] 주요 컨테이너 실행 명령어 (0) | 2019.05.22 |
[Docker] Dockerfile로 이미지 설치하기 (0) | 2019.05.19 |
[Docker] 설치 (0) | 2019.05.19 |