반응형

일반 명령어

버전 확인

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

+ Recent posts