Tech Blog

[MLOps] 3. Docker의 기본적인 명령어 정리 본문

MLOps/개념 정리

[MLOps] 3. Docker의 기본적인 명령어 정리

agsu 2023. 2. 22. 21:06

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 받아온 다음(생성한 다음),  특정 도커 이미지를 사용해서 도커 컨테이너를 실행시키는 방식입니다. 이 개념을 정확히 해두고 앞으로의 실습을 진행하면 좋을 것 같습니다. 

 

 

 

 

 

* 본 포스트는 패스트캠퍼스의 강의를 정리한 글 입니다. 

Comments