본문 바로가기

프로그래밍/Docker

Docker Cli 명렁어 정리

컨테이너 확인

Docker 컨테이너를 조회합니다.

docker ps [옵션]

-a 옵션

중지된 컨테이너까지 포함한 모든 컨테이너를 출력합니다.

컨테이너 실행

docker run [옵션] 이미지[:TAG] [command] ...

-d 옵션

detached mode(백그라운드에서 실행)

docker run -it -d openjdk:15 bash
999894c8a85bd306e08b5f15508694821b2638607e8414ef4130003d9b110231
docker ps
CONTAINER ID   IMAGE        COMMAND   CREATED         STATUS        PORTS     NAMES
999894c8a85b   openjdk:15   "bash"    2 seconds ago   Up 1 second             condescending_haslett

-it 옵션

-i와 -t를 같이 사용하는것으로 터미널 입력을 위한 옵션

docker run -it openjdk:15 bash
bash-4.4#

-p 옵션

호스트의 포트(5432)와 컨테이너의 포트(5432)를 맵핑
호스트:컨테이너

docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass  postgres
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
...

-v 옵션

호스트와 컨테이너간 볼륨설정으로 호스트의 특정경로를 컨테이너의 파일시스템의 특정경로로 마운트 합니다.

echo test > test.txt
docker run -v ~/:/home/test openjdk:15 cat /home/test/test.txt
test

-name 옵션

컨테이너의 이름을 부여합니다.

docker run -it -d openjdk:15 bash
a91446f7651589d16bbb90999604f5012c69784ef173c39f18d3b4ace02b5f04
docker ps
CONTAINER ID   IMAGE        COMMAND   CREATED         STATUS         PORTS     NAMES
a91446f76515   openjdk:15   "bash"    4 seconds ago   Up 2 seconds             funny_banach
docker kill a91446f76515
a91446f76515
docker run -it -d --name my-jdk openjdk:15 bash
6a770f779a7175e301d8ea5ce2e326129f2e97ab2d14b0dbf6a3f656c416df56
docker ps
CONTAINER ID   IMAGE        COMMAND   CREATED         STATUS         PORTS     NAMES
6a770f779a71   openjdk:15   "bash"    4 seconds ago   Up 3 seconds             my-jdk
docker kill my-jdk
my-jdk
docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                        PORTS     NAMES
6a770f779a71   openjdk:15            "bash"                   47 seconds ago       Exited (137) 6 seconds ago              my-jdk

-e 옵션

환경변수를 설정. -e옵션을 사용하면 Dockerfile의 ENV 설정도 덮어쓰기 됩니다.

docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=yang -e POSTGRES_DB=mydb -d postgres
1df5dcabdd3e78a94bffc8781f0a6913f1ad6a7348b3b2d10a484db7483ff379

--rm 옵션

프로세스 종료시 컨테이너 삭제합니다.

 docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                      PORTS     NAMES
bb590b2aec5e   postgres              "docker-entrypoint.s…"   7 months ago    Exited (0) 7 months ago               postgres_boot
dd305e0bbb61   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   19 months ago   Exited (143) 4 months ago             quizzical_dirac
docker run -it --rm openjdk:15 bash
bash-4.4# exit
exit
docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                      PORTS     NAMES
bb590b2aec5e   postgres              "docker-entrypoint.s…"   7 months ago    Exited (0) 7 months ago               postgres_boot
dd305e0bbb61   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   19 months ago   Exited (143) 4 months ago             quizzical_dirac

컨테이너 중지

컨테이너 id나 이름을 사용하여 실행중인 컨테이너를 중지합니다.

docker stop [옵션] 컨테이너
docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                      PORTS     NAMES
1ae589f17602   openjdk:15            "bash"                   5 seconds ago   Up 4 seconds                          naughty_bose
docker stop 1ae589f17602
1ae589f17602

컨테이너 시작

중지된 컨테이너를 시작합니다.

docker start [옵션] 컨테이너
docker start 1ae589f17602
1ae589f17602
docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                      PORTS     NAMES
1ae589f17602   openjdk:15            "bash"                   5 minutes ago   Up 12 seconds                         naughty_bose
bb590b2aec5e   postgres              "docker-entrypoint.s…"   7 months ago    Exited (0) 7 months ago               postgres_boot
dd305e0bbb61   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   19 months ago   Exited (143) 4 months ago             quizzical_dirac

컨테이너 명령어 전달

실행 중인 컨테이너에 명령어를 전달합니다.

docker exec [옵션] 컨테이너 전달할명령어
docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS                      PORTS     NAMES
1ae589f17602   openjdk:15            "bash"                   11 minutes ago   Up 6 minutes                          naughty_bose
docker exec 1ae589f17602 ls -al
total 56
drwxr-xr-x   1 root root 4096 Mar 19 03:15 .
drwxr-xr-x   1 root root 4096 Mar 19 03:15 ..
-rwxr-xr-x   1 root root    0 Mar 19 03:15 .dockerenv
lrwxrwxrwx   1 root root    7 Aug  1  2020 bin -> usr/bin
dr-xr-xr-x   2 root root 4096 Aug  1  2020 boot
...

컨테이너 로그

컨테이너의 로그를 확인합니다.

docker logs [옵션] 컨테이너

-f 옵션

로그를 실시간으로 확인할 수 있습니다.

컨테이너 삭제

컨테이너를 삭제합니다

docker rm [옵션] 컨테이너

-f 옵션

실행중인 컨테이너의 경우 정지후 삭제합니다.

docker rm 1ae589f17602
Error response from daemon: You cannot remove a running container 1ae589f1760261035c487b9cf5b29d06da9d9847a2107f4d798d31fd7fbfd0d8. Stop the container before attempting removal or force remove
docker rm -f 1ae589f17602
1ae589f17602

Docker 이미지

이미지 목록 확인

docker images [옵션]

이미지 다운로드

docker pull [옵션] 이름

이미지 삭제

docker rmi [옵션] 이미지

이외에도 더 많은 커맨드에 대해서는 래퍼런스를 참고하자.

참고문서

docker docs