킹의 개발일지
도커 입문(4) - 컨테이너 run 본문
저번에는 이미지를 pull 하는 방법을 알아봤다.
지금부터 이미지를 실행시켜 컨테이너를 만드는 방법인 run을 알아보자!
지금은 윈도우를 사용하고 있기에 도커 데스크탑 프로그램을 사용해서 이미지를 pull 하거나 run 시켜 컨테이너를 간단히 생성 할 수도 있다.
하지만 gui가 없는 환경을 대비해 Docker CLI를 통해서 컨테이너를 실행시켜 보는 방법을 알아 볼 것이다.

도커 명령줄 인터페이스에서 사용하는 명령어들은 레퍼런스 사이트에 자세히 적혀있다!!
https://docs.docker.com/reference/
Reference documentation
docs.docker.com
우선 이전 시간에 받아둔 httpd 이미지를 run 시켜보자.
이미지를 run 하기 위해서는 아래와 같은 명령어가 필요하다.
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
옵션에는 다양한 선택사항들을 줄 수 있다. 예를들어 컨테이너의 이름을 지정해주고 싶다면 name 속성을 이용하면된다.
더 많은 옵션들은 레퍼런스에서 확인할 수 있다!
docker run --name ws1 httpd

해당 명령어를 입력하면 컨테이너가 만들어지고 그 컨테이너가 실행되고 있는 모습이 보인다!
그리고 우리가 만든 컨테이너를 보고싶다면, ps 라는 명령어를 입력해주면 된다!
docker ps

해당 명령어를 입력하면, 컨테이너 아이디, 언제 만들어졌는지 그리고 그것의 이름은 무엇인지 볼 수 있다.
컨테이너 역시 안에있는 프로세스가 동작하기 때문에 컴퓨터의 자원을 잡아먹는다! 때문에 무한정 실행시킬 순 없는 노릇임으로 컨테이너를 중지, 재시작, 삭제 할 수도 있다.
컨테이너가 실행되는걸 중지하고 싶다면
docker stop [OPTIONS] CONTAINER [CONTAINER...]
해당 명령어를 통해 컨테이너를 중지할 수 있다. (컨테이너 이름대신 컨테이너ID를 적어도 무관!)

중지 명령어를 적고 ps를 찍어보면 해당 컨테이너가 더이상 보이지 않게 된다.
그러나 컨테이너를 중지했다고 삭제된건 아니다.
docker ps -a
-a 옵션을 주고 ps 명령어를 실행시켜보면 중지시킨 ws1도 보이게된다.

이렇게 중지시킨 컨테이너를 다시 실행시키고 싶다면 아래 명령어를 입력하면된다.
docker start [OPTIONS] CONTAINER [CONTAINER...]
재시작된 컨테이너는 로그를 뱉어내지 않는데, 로그를 보고 싶다면 해당 명령어를 입력하면 된다.
docker logs [OPTIONS] CONTAINER

그러나 이렇게 찍은 로그는 run 했을 때 와 달리 실시간으로 로그를 보여주진 않는다. 때문에 실시간으로 확인하고자 한다면 -f 옵션을 주어서 실시간으로 로그를 화면에 출력할 수 있다.

컨테이너를 삭제하고 싶다면 아래 명령어를 입력하면 된다.
docker rm [OPTIONS] CONTAINER [CONTAINER...]
그러나 삭제해보면 삭제가 안되는걸 볼 수 있다.

이는 실행중인 컨테이너는 삭제할 수 없기 때문인데, 따라서 docker stop으로 컨테이너를 중지시킨 뒤 삭제해야한다.

docker ps -a 명령어로 확인해보면 컨테이너가 삭제됐음을 볼 수 있다.
아까 처럼 컨테이너를 중지시키지 않고 삭제하고 싶으면 -- force 옵션을 주면 된다
docker rm --force ...
그리고 컨테이너가 아닌 이미지를 삭제하고 싶다면
docker rmi [OPTIONS] IMAGE [IMAGE...]
해당 명령어를 주면된다. rmi는 딱봐도 remove image 일거라는 느낌이 온다.
이렇게 지금까지 도커 run 명령어와 컨테이너를 실행, 중지, 재실행, 삭제하는 방법들을 알아봤다.
참고자료
https://opentutorials.org/course/4781
생활코딩 Docker 입구 수업 - 생활코딩
수업소개 vmware, virtualbox와 같은 가상머신처럼 독립된 실행환경을 제공하면서도, 성능의 저하가 훨씬 적은 도커에 대해서 알려드립니다. 수업대상 일하는 조직에서 도커를 쓰고 있는 분 개발환
opentutorials.org
'docker' 카테고리의 다른 글
| 도커 입문(6) - 명령어 실행 (0) | 2022.07.18 |
|---|---|
| 도커 입문(5) - 네트워크 (0) | 2022.07.18 |
| 도커 입문(3) - 이미지 pull (0) | 2022.07.18 |
| 도커 입문(2) - 도커 설치 (0) | 2022.07.18 |
| 도커 입문(1) (0) | 2022.07.17 |