🪪 Docker의 기본 명령어
지금부터는 제일 자주쓰는 Docker 명령어에 대해서 설명하겠습니다. Dockerfile을 먼저 작성하면, 어려울 수 있으니 간단한 명령어부터 실행해보면서 어떻게 동작하는지 파악하면 좋을 것 같습니다.
1️⃣ 현재 설치된 이미지 파악하기
pxxguin@root:~$ docker images
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # IMAGE ID DISK USAGE CONTENT SIZE EXTRApxxguin@root:~$ # mongo:latest 6f55a078e025 1.24GB 318MBpxxguin@root:~$ # mysql:8 90544b377549 1.08GB 243MBpxxguin@root:~$ # postgres:16 f992505e18f1 663MB 165MB2️⃣ 저장소에 있는 이미지 찾기
pxxguin@root:~$ docker search ubuntu:latest
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # NAME DESCRIPTION STARS OFFICIALpxxguin@root:~$ # ubuntu Ubuntu is a Debian-based Linux operating sys… 17789 [OK]3️⃣ 저장소에 있는 이미지 다운받기
pxxguin@root:~$ docker pull ubuntu:latest
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # latest: Pulling from library/ubuntupxxguin@root:~$ # 66a4bbbfab88: Pull completepxxguin@root:~$ # 9c2a2ec78563: Download completepxxguin@root:~$ # Digest: sha256:d1e2e92c075e5ca139d51a140fff46f84315c0fdce203eab2807c7e495eff4f9pxxguin@root:~$ # Status: Downloaded newer image for ubuntu:latestpxxguin@root:~$ # docker.io/library/ubuntu:latest4️⃣ 다운받은 이미지 삭제하기
pxxguin@root:~$ docker rmi ubuntu:latest
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # Untagged: ubuntu:latestpxxguin@root:~$ # Deleted: sha256:cd1dba651b3080c3686ecf4e3c4220f026b521fb76978881737d24f200828b2b여기서 rm은 remove에 줄임말이고, i는 image의 줄임말입니다. 따라서 remove image로 보면 되죠!
5️⃣ 이미지를 컨테이너로 만들고, 접속하기
pxxguin@root:~$ docker run -it ubuntu:latestpxxguin@root:~$ # docker run -it --name ubuntu ubuntu:latestpxxguin@root:~$ # exit
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # root@548218f4a968:/# whoamipxxguin@root:~$ # root여기서 run 명령은 컨테이너를 실행시킨다는 뜻입니다. -it는 -i와 -t를 의미하는데, -i는 Interactive의 줄임말로 컨테이너의 표준 입출력을 열어두겠다는 뜻입니다. 이 옵션이 있어야 우리가 키보드로 입력하는 명령어가 컨테이너 내부로 전달됩니다. 만약 -i가 없다면, 우리는 명령어를 칠 수 없겠죠? 그렇다면 -t는 뭘까요? -t는 Teletypewriter(TTY)의 줄임말로 Pseudo-TTY를 할당하겠다는 뜻입니다. 그래서 결과를 보면 root@컨테이너id처럼 글자가 예쁘게 정렬되어있죠? 바로 -t의 역할이라고 보시면 됩니다.
WARNING아래 주석처리 되어있는 부분을 보면, —name이라는 옵션이 붙었죠? —name 옵션을 주면 해당 컨테이너에게 이름을 부여할 수 있습니다. —name ubuntu의 경우 이름을 ubuntu로 준 모습을 볼 수 있는데요! 만약, —name 옵션을 주지 않으면 랜덤으로 컨테이너 이름이 생성된다는 점 주의하세요! 그리고 -it 옵션을 붙이면 ubuntu 컨테이너에 접속이 되는데, 주석에 있는 exit 명령어를 쓰면 다시 터미널로 돌아갈 수 있습니다.
6️⃣ 현재 실행중인 컨테이너 확인하기
pxxguin@root:~$ docker ps -a
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESpxxguin@root:~$ # 83a08622008e ubuntu:latest "/bin/bash" 6 seconds ago Exited (0) 3 seconds ago ubuntups는 Process Status의 줄임말로 컨테이너의 실행 상태를 확인할 수 있습니다. 자세히 보시면 STATUS쪽이 Exited 되어있는 것을 볼 수 있죠? 이건, 앞에서 exit 명령어를 친 결과입니다.
7️⃣ 컨테이너 다시 시작/종료/재시작하기
pxxguin@root:~$ docker start ubuntu
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESpxxguin@root:~$ # 83a08622008e ubuntu:latest "/bin/bash" 5 minutes ago Up 6 seconds ubuntu
pxxguin@root:~$ docker stop ubuntu
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESpxxguin@root:~$ # 83a08622008e ubuntu:latest "/bin/bash" 7 minutes ago Exited (137) 4 seconds ago ubuntu
pxxguin@root:~$ docker restart ubuntu
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESpxxguin@root:~$ # 83a08622008e ubuntu:latest "/bin/bash" 7 minutes ago Up 3 seconds ubuntu8️⃣ 실행중인 컨테이너에 접속하기
pxxguin@root:~$ docker exec -it ubuntu /bin/bashpxxguin@root:~$ # docker exec -it ubuntu bash
pxxguin@root:~$ # 실행 결과pxxguin@root:~$ # -------------------------------------------------------------------------------- #pxxguin@root:~$ # root@83a08622008e:/# whoamipxxguin@root:~$ # rootexec 명령어는 Execute 명령어의 줄임말로 실행중인 컨테이너에 접속할 수 있습니다. -it의 경우 앞서 설명했던 내용과 똑같고, 다만 다른점은 마지막 부분에 /bin/bash 또는 bash를 적어주어야합니다. /bin/bash를 적어주는 이유는, 접속할 쉘(Shell)을 알려주기 위함이라고 생각하면 됩니다!
🥱 마무리
지금까지 Docker를 사용함에 있어서 기본이 되는 명령어에 대해서 살펴봤습니다. 이 정도 명령어만 알고 있어도 기본적인 Docker를 사용하는데는 아무런(?) 지장이 없을겁니다. 이후로 심화되는 내용을 배워보도록 하죠!