Docker

04. [Docker] 컨테이너 run

drizzle0925 2022. 2. 17. 12:26
728x90

도커의 이미지를 바탕으로 컨테이너를 run 하는 방법을 소개합니다.

 

이전 시간에는 docker hub에서 image를 가져오는 방법을 살펴보았는데요.

이번에는 image를 실행시켜서 container를 만드는 방법인 run에 대해서 해보겠습니다.

 

우선 docker desktop에서 하는 방법에 대해서 살펴보겠습니다.

httpd의 오른쪽을 보시면 RUN이라고 하는 버튼이 있습니다.

 

RUN 버튼을 클릭하면 저 image를 container로 만드는 대화 상자가 뜹니다.

 

이때 RUN 버튼만 눌러도 되는데, image를 container로 만들면 여러 개의 container가 생기는 데 이때, 이름을 잘 지정이 되어 있어서 관리하기가 편합니다.

 

우리는 web server라는 의미로 ws1이라는 이름을 지정해주고 Run 버튼을 클릭합니다.

 

자, 그럼 보시는 것처럼 왼쪽메뉴가 Images에서 Containers / Apps로 바뀌고요.

ws1이라는 containter가 생성이 됐고, 그 container가 실행되면서 container안에 있는 process가 현재 running 되고 있는 모습입니다.

 

저 container가 실행되고 있는 모습을 보고 싶다면 container항목을 클릭합니다.

그러면 이 container가 안에서 실행되면서 출력하는 로그를 확인할 수 있습니다.

 

INSPECT에서 이 container에 대한 자세한 정보

 

STATS에서 이 container에 대한 통계자료 등을 확인할 수 있습니다.

 

그리고 실행되고 container는 어쨋든간에 컴퓨터의 자원을 쓰고 있습니다.

여러분의 컴퓨터의 자원은 아끼기 위해서는 container를 끌 필요가 있습니다.

이때 사용하는 명령이 stop입니다.

stop버튼을 누르면 container가 꺼지고 다시 start 버튼을 누르면 다시 container가 켜집니다.

 

그리고 이 container가 필요없다면 Delete버튼을 클릭해서 container를 삭제할 수 있습니다.

 

자, 그럼 여태까지 했던 작업을 커맨드라인에서 해보겠습니다.

container를 실행하는 명령어는 docker run이고 명령어 뒤에 여러분이 실행시키고 싶은 image의 이름을 적습니다.

image 이름 앞에는 옵션을 적고, image 이름 뒤에는 container안에서 실행하고 싶은 명령이 있다면 이름 뒤에 입력하도록 되어 있습니다.

[](대괄호)로 된 부분은 생략가능하다는 뜻입니다.

 

windows에서는 명령프롬프트를 mac에서는 terminal을 실행시킵니다.

container를 만들때는 dorcker run이고 우리가 만들고 싶은 image는 httpd이니까 

docker run httpd

라고 입력하고 엔터를 치면 httpd 기반으로 container가 만들어지고 그 container가 실행되고 있는 모습이 이렇게 화면에 출력되고 있는 모습입니다.

 

우리가 만든 container를 보고싶을 때는 ps라는 명령어를 입력합니다.

docker ps

그러면 방금 생성한 container의 아이디가 CONTAINER ID값이고 언제 생성이 됐고 현재 실행 중이다. 그리고 그것의 이름은 NAMES의 값이라고 나옵니다.

 

자 그럼 우리가 지금 container를 만들었잖아요?

하나의 image는 여러개의 container를 만들 수 있습니다.

명령어로 container를 한 번 더 만들어 보겠습니다.

docker run httpd라고 하는데 image 이름 앞에는 옵션이 오는데요. 대표적인 옵션은 --name입니다. 

ws2라고 하고 엔터를 쳐보겠습니다.

docker run --name ws2 httpd

 

새로운 container가 만들어졌을 것이고 그 container를 보고 싶다면 ps를 통해 볼 수 있습니다.

 

 

실행 중인 container를 끄고 싶을 때는 docker stop conatiner을 적으면 됩니다.

 

저는 container의 이름을 적었는데 container의 ID를 적으셔도 됩니다.

docker stop ws2

 

ps명령어를 이용하여 확인하면 우리가 끈 ws2는 목록에 안 나옵니다.

그러면 삭제가 된 걸 까요? 그렇지 않습니다.

 

docker ps 뒤에 -a를 붙여서 all의 약자겠죠?

이렇게 명령어를 입력하고 엔터를 치면 우리가 stop 시킨 ws2가 화면에 나타나는 것을 볼 수 있습니다.

docker ps -a

 

즉, stop 했다고 container가 삭제된 것은 아니라는 뜻입니다.

다만, ps에서는 그냥 보이지 않고 -a 옵션을 통해서 볼 수 있다는 것입니다.

 

그러면 꺼진 container를 다시 켜고 싶다면 docker run이 아닌 start 명령어를 사용합니다.

docker start ws2

 

그러면 중지시켰던 container가 다시 켜집니다.

 

근데 이때는 아까와는 다르게 로그가 출력되지 않습니다.

그러면 어떻게 하면 로그를 볼 수 있다면 docker logs 명령어를 통해서 docker log를 확인할 수 있습니다.

 

docker logs ws2

이렇게 입력하면 로그를 확인할 수 있습니다.

 

근데, 한번 출력되고 딱 꺼져버립니다.

계속 실시간으로 로그를 확인하고 싶다면 ws2 앞에 -f를 붙이면 실시간으로 로그를 확인할 수 있습니다.

docker logs -f ws2

 

 

container를 삭제할 때는 docker rm이라는 명령어를 사용하시면 됩니다.

docker rm 뒤에 container의 이름을 적습니다.

 

ws2를 삭제해보겠습니다.

 

삭제 명령어를 입력합니다.

docker rm ws2

 

그러면 에러가 발생합니다.

 

왜 그러냐 하면 현재 실행 중인 container를 바로 삭제할 수 없기 때문입니다.

docker stop으로 ws2를 끄고

docker stop ws2

 

docker rm으로 ws2를 하면 저 container가 삭제되게 됩니다.

docker rm ws2

 

만약에 현재 실행 중인 container를 한방에 삭제하고 싶다!

이럴 때는 rm 뒤에 --force를 붙이면 stop을 하지 않고도 삭제할 수 있습니다.

docker rm --force dreamy_mendel


image 삭제하는 방법

 

docker desktop

... 클릭 > Remove를 선택하면 삭제가 됩니다.

 

커맨드 라인에서 삭제할 때는 docker rmi i는 이미지라는 뜻이겠죠?

이 명령어를 이용하시면 됩니다.

 

apache image를 커맨드라인에서 삭제하기

docker images
docker rmi httpd
docker images

 

container와 image를 사용하는 아주 기본적인 조작 방법입니다.

728x90