Tech Blog
[MLOps] 3. Docker의 기본적인 명령어 정리 본문
2023. 02. 22 패스트캠퍼스 강의 정리
1️⃣ Docker의 기본 명령어
들어가기에 앞서 명령어에 대한 설명을 보고싶을 땐 [명령어 --help] 와 같이 작성하여 도움말을 확인할 수 있습니다.
1) docker pull
docker image repository로부터 Docker image를 가져오는 커맨드입니다.
docker pull ubuntu:18.04
예를 들어, 태그가 18.04인 우분투 이미지를 다운받고 싶을 때 사용하는 명령어입니다. Public하게 공유되어있는 도커허브라는 곳에서 우분투 이미지를 받게 됩니다. 더 자세히 말하자면 docker.io/library 라는 이름의 repository에서 ubuntu:18.04라는 image를 다운로드받는 것입니다. 이렇게 public한 레포지토리에서 받아오는 경우도 있지만, 추후에는 특정 private한 레포지토리에서 docker 이미지를 가져오게 될 것입니다. 그 때는 docker login 을 통해 특정 레포지토리를 바라보도록 한 뒤, docker pull을 수행하는 형태로 사용하면 됩니다.
2) docker images
로컬에 존재하는 docker image 리스트를 출력하는 커맨드입니다.
docker images
전 실습에서 docker run 으로 pull 받은 hello-world와, 위에서 pull 받은 ubuntu:18.04가 출력되는 것을 볼 수 있습니다.
3) docker ps
현재 실행중인 도커 컨테이너 리스트를 출력하는 커맨드입니다.
docker ps
docker ps -a
docker ps에 -a 를 붙이면 전에 실행되었던 프로세스까지 출력이 됩니다.
4) docker run
도커 컨테이너를 실행시키는 커맨드입니다.
docker run -it --name demo1 ubuntu:18.04 /bin/bash
▪️ -it : -i 옵션 + -t 옵션 (container 를 실행시킴과 동시에 interactive 한 terminal 로 접속시켜주는 옵션입니다.)
▪️ --name : 컨테이너 id 대신, 구분하기 쉽도록 지정해주는 이름입니다.
▪️ /bin/bash : 컨테이너를 실행시킴과 동시에 실행할 커맨드로, /bin/bash 는 bash 터미널을 사용하는 것을 의미합니다.
이렇게 도커 컨테이너가 실행되면 bash 터미널 창으로 바로 들어가게 됩니다.
5) docker exec
docker 컨테이너 내부에서 명령을 내리거나, 내부로 접속하는 커맨드입니다.
docker run -it -d --name demo2 ubuntu:18.04
docker ps
▪️ -d : 컨테이너를 백그라운드에서 실행시켜서 컨테이너 접속 종료를 하더라도, 계속 실행 중인 상태가 되도록 하는 옵션입니다.
백그라운드에서 실행이 되고 있기 때문에, 터미널 창으로 들어가지 않지만 docker ps를 확인해봤을 때 demo2 프로세스가 돌아가고 있는 것을 확인할 수 있습니다.
docker exec -it demo2 /bin/bash
이제 exec 를 사용하여 demo2 도커 컨테이너 내부에 접속합니다.
6) docker logs
도커 컨테이너의 log를 확인하는 커맨드입니다.
docker run --name demo3 -d busybox sh -c "while true; do $(echo date); sleep 1; done"
demo3 라는 이름의 busybox 이미지를 백그라운드에서 도커 컨테이너로 실행하여, 1초에 한 번씩 현재 시간을 출력하는 커맨드입니다.
현재 busybox 라는 이미지가 없기 때문에 pull 받아와지고, 백그라운드에서 1초에 한번씩 현재 시간을 출력하게됩니다. 이것을 docker log 명령어를 사용하여 확인해볼 수 있습니다.
docker logs demo3
docker logs demo3 -f
로그를 출력해보면, 이렇게 출력값을 확인할 수 있습니다. 이 때 -f 옵션을 사용하면 출력되는 log를 계속 확인할 수 있습니다.
7) docker stop
실행중인 도커 컨테이너를 중단시키는 커맨드입니다.
docker stop demo1
docker stop demo2
docker stop demo3
이렇게 명령어를 사용하면, docker ps 명령어 사용 시 모든 프로세스가 중단되어 나오지 않게됩니다.
8) docker rm
도커 컨테이너를 삭제하는 커맨드입니다.
docker rm demo3
docker rm demo2
docker rm demo1
rm 명령어를 사용하면, 도커 컨테이너가 완전히 삭제되므로, docker ps -a 명령어 사용 시에도 출력되지 않습니다.
9) docker rmi
도커 이미지를 삭제하는 키워드입니다.
# busybox, ubuntu가 존재한다.
docker images
현재 docker의 이미지들을 출력해보면 위와 같이 나오는데, ubuntu와 busybox가 그대로 남아있습니다. 이 이미지들을 완전히 삭제시킬 수 있는 명령어가 docker rmi 입니다.
docker rmi ubuntu:18.04
docker images
rmi를 사용하여 docker image를 삭제하고, 다시 docker images를 출력해보니 ubuntu 가 잘 삭제된 것을 확인할 수 있습니다.
이번 글에서 기본적인 docker 명령어들을 다루었는데, 아직 도커에 익숙하지 않아서 큰 개념들을 잘 정리해두어야 할 것 같습니다. 간단하게 구조를 정리해보자면, 도커 이미지 > 도커 컨테이너 의 형태이며, 도커 이미지를 먼저 pull 받아온 다음(생성한 다음), 특정 도커 이미지를 사용해서 도커 컨테이너를 실행시키는 방식입니다. 이 개념을 정확히 해두고 앞으로의 실습을 진행하면 좋을 것 같습니다.
* 본 포스트는 패스트캠퍼스의 강의를 정리한 글 입니다.
'MLOps > 개념 정리' 카테고리의 다른 글
[MLOps] 6. VM에서 minikube 사용하기 (0) | 2023.02.25 |
---|---|
[MLOps] 5. 쿠버네티스의 기본 개념과 YAML (0) | 2023.02.25 |
[MLOps] 4. Docker Image와 Dockerfile (0) | 2023.02.23 |
[MLOps] 2. Docker 실습 환경 셋팅 (VirtualBox, Ubuntu) (0) | 2023.02.21 |
[MLOps] 1. MLOps와 컨테이너의 개념 (feat, 도커/쿠버네티스) (0) | 2023.02.20 |