오늘은 다른 블로그에도 많이 있지만, Docker의 기본적인 명령어 위주로 다루어 볼 예정입니다. 대다수의 명령어는 --help를 통해 arguments에 대해 공부하시는 것이 좋고, 저는 예시 위주로 작성 예정입니다.
1) pull : docker hub의 image repo로부터 docker image를 가져오는 커맨드입니다.
예시) docker.io/library 라는 이름의 repo에서 ubuntu:18.04라는 image를 제 로컬에 다운로드를 하게 됩니다.
$ docker pull ubuntu:18.04
2) images : 로컬에 존재하는 docker image 리스트를 출력합니다.
$ docker images
3) ps : 현재 실행중인 도커 컨테이너 리스트를 전부 출력하는 커맨드입니다.
$ docker ps
$ docker ps -a
-a 를 붙이면 실행되었던 컨테이너까지 확인을 할 수 있습니다.
4) run : 새로운 컨테이너를 실행시키는 커맨드입니다. 옵션이 상당히 많기 때문에 docker run --help를 통해 확인하시면 됩니다.
예시)
$ docker run -it --name demo1 ubuntu:18.04 /bin/bash
- -it : -i 옵션 + -t 옵션
- container를 실행시킴과 동시에 interactive 한 terminal로 접속시켜주는 옵션입니다.
- 즉 컨테이너 내부로 접속한다고 생각하시면 됩니다.
- --name : name
- 컨테이너 ID를 명시적으로 알기에는 어렵기 때문에 id 대신, 구분하기 쉽도록 지정해주는 이름입니다. 자주 사용하는 컨테이너는 이름을 지정하는 게 좋습니다.
- 컨테이너 외부로 나와서 docker ps -a 확인하실 수 있습니다.
- /bin/bash
- 컨테이너를 실행시킴과 동시에 실행할 커맨드로, /bin/bash 는 bash 터미널을 사용(ON)하는 것을 의미합니다.
5) exec : 도커 컨테이너 내부에서 명령을 내리거나, 내부로 접속하는 커맨드 입니다.
$ docker run -it -d --name demo2 ubuntu:18.04
$ docker ps
-d 옵션을 부여하면, background에서 실행시켜서 컨테이너에 접속 종료를 하더라도, 계속 실행 중이 되도록 하는 커맨드입니다. 여기서 ps를 수행하면 실행 중인 것을 알 수 있습니다.
$ docker exec -it demo2 /bin/bash
동일하게 container 내부에 접속할 수 있는 것을 확인이 가능합니다.
6) logs : 도커 컨테이너의 log를 확인하는 커맨드 입니다.
예시 : demo3라는 이름으로 busybox 이미지를 백그라운드에서 도커 컨테이너로 실행하여, 초마다 현재 시간을 출력하는 명령어입니다.
$ docker run --name demo3 -d busybox sh -c "while true; do $(echo date); sleep 1; done"
아래를 수행하면 다음과 같습니다. f 옵션은 계속 watch 하면서 출력하는 것 입니다.
$ docker logs demo3
$ docker logs demo3 -f
7) stop : 실행 중인 도커 컨테이너를 중단시키는 커맨드입니다.
위에서 실행했던 docker들을 전부 stop 시키겠습니다.
$ docker stop demo1
$ docker stop demo2
$ docker stop demo3
8) rm : 도커 컨테이너를 삭제하는 커맨드입니다.
$ docker rm demo1
$ docker rm demo2
$ docker rm demo3
9) rmi : 도커 이미지를 삭제하는 커맨드 입니다. docker images를 실행해 어떤 것이 있는지 확인합니다. 저는 위에서 생성했던 ubuntu 이미지를 삭제하겠습니다. (tags까지 붙여야 지워지네요.)
$ docker rmi ubuntu:18.04
이제 기본적인 명령어를 다 수행해보았습니다. 이제 image를 다루는 것을 다음 글에서 다루어보겠습니다!
* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'AI > MLOps' 카테고리의 다른 글
[패스트캠퍼스 챌린지 8일차] Kubernetes 개념 (0) | 2022.01.31 |
---|---|
[패스트캠퍼스 챌린지 7일차] Docker Image (0) | 2022.01.30 |
[패스트캠퍼스 챌린지 5일차] Docker 환경 구성 및 설치 (0) | 2022.01.28 |
[패스트캠퍼스 챌린지 4일차] Container Orchestration (0) | 2022.01.27 |
[패스트캠퍼스 챌린지 3일차] MLOps의 구성요소 (0) | 2022.01.26 |