본문 바로가기
320x100
320x100

https://code-boki.tistory.com/128

 

(3) 도커 - 리눅스 우분투 이미지로 다양한 도커 명령어 테스트

Docker Desktop을 받으면 일단 기본적으로 docker, docker-compose, docker machine이 설치가 된다 그래서 docker 명령어를 쓸 수 있다 도커 desktop을 실행 후 터미널을 열어서 docker를 입력해보자 이제 도커(2)번 글

code-boki.tistory.com

이전 글에서는 docker CLI를 주로 다뤘었다

 

이번에는 Docker Desktop(GUI - Graphic User Interface) 으로 도커 몇몇 명령어를 대신 처리해본다

Docker Desktop을 실행하자 맥을 사용중이라면 메뉴 도구를 한번 확인해보자

Dashboard 클릭

그리고 Images 탭을 누르면 도커로 받은 이미지들이 나온다

도커 이미지 검색

CLI로 했을 때는

docker search name

Docker Desktop으로 할때는 상단의 돋보기버튼을 눌러서 이미지를 검색할 수 있다

MacOS의 경우: Cmd + K

한번 nginx를 검색해보자

nginx의 이미지, 컨테이너, 볼륨, 확장프로그램, 문서 등을 검색하고 다운받을 수 있다

이미지에 Tag를 UI로 골라서 다운받을 수 있다

stable-alpineX.XX-slim으로 이미지를 Pull해보자

nginx이미지가 다운받아졌다

도커 컨테이너 띄우기(feat. --port)

이미지 옆에 재생버튼을 클릭해서 컨테이너로 띄울 수 있다

Optional settings 드롭다운 메뉴를 클릭해서 옵션을 넣어줄 수도 있다

Container name에는 nginx-test라고 입력을 하고

Host port에 7777을 입력하고 Run을 해보자

컨테이너 내부로 진입된 Logs 화면이 나온다

<를 클릭해서 컨테이너 외부로 나가보자

nginx-test라는 이름으로 nginx가 실행중이다

옆에 Port(s)를 보면 7777:80이라고 쓰여 있다

host포트를 7777로 들어가면, 내부는 80포트로 Port-Mapping(또는 Port-Forwarding) 돼서 들어간다는 의미이다

http://localhost:7777 로 접속해보자

nginx가 잘 작동하는 것을 확인할 수 있다

 

실제 운영 환경에서는 개발서버에서 nginx.conf 파일을 작성하고, 그 파일을 컨테이너 내부의 nginx 위치로 복사해서 넣고(COPY)

실행을 하게 된다

 

그럼 우리가 컨테이너 내부로 들어가서 명령을 실행하는 것(attach, exec)등의 디버깅은 어떻게 할까?

Running중인 컨테이너를 클릭하자

사실상 이 화면이 우리가 CLI를 대체하고 UI로 처리할 수 있는 거의 모든 것이다

Logs탭은 컨테이너가 올라가면서 출력한 내부의 로그를 띄워준다

 

Inspect 탭은 이 Dockerfile에 대한 세세한 정보를 볼 수 있게 해준다

PortBindings를 클릭하면 실제로 어떻게 작성이 되었는지 볼 수 있다

Cmd를 클릭하면 이 컨테이너가 띄워지면서 실행하는 명령어들을 알 수 있다

이번에는 Exec 탭을 클릭해보자 이 컨테이너의 내부로 들어와서 명령어들을 실행할 수 있게 된다

vi가 깔려 있길래.. shell script 하나 심심풀이로 작성해봤다

vi test.sh
#!/bin/sh

echo "PID of this script: $$"
chmod +x test.sh
./test.sh

tree 명령어로 파일 구조를 좀 더 보고 싶어졌다..!

tree 명령어를 쳐봤더니 not found가 떴다

Alpine Linux 의 Package Manager인 apk로 설치해보자

apk add tree

그리고 이 패키지가 설치된 위치를 알아보자

apk info -L tree

이 위치에 뭐가 있나 궁금하면..? 한번 이동해보자

cd /usr/bin && ls
또는 ls /usr/bin

---

ls /usr/bin | grep tree

tree 패키지를 설치했으니 tree 명령어를 쳐보자

tree -L 1

Alpine Linux에서 이 폴더들이 하는 역할에 대해서는 다른 포스팅에서 다루겠다

 

이번에는 Files 탭을 눌러보자

헉! 우리가 터미널로 들어가서 ls 명령어를 입력해야만 볼 수 있었던 파일들이 보인다

그것도 fold / unfold 형태로 눈에 들어오기 쉽게 볼 수 있다

이 Files에서는 컨테이너를 만들고 COPY로 호스트의 파일이 컨테이너 내부로 잘 들어갔나 확인하는 용도로 쓰일 수도 있다

 

마지막으로 Stats 탭으로 이동해보자

CPU, Memory, DISK I/O, Network I/O 사용량을 실시간 그래프로 확인할 수 있다

 

이제 우리와 함께한 컨테이너를 삭제할 시간이다

< 를 눌러서 밖으로 나간 후 휴지통 버튼을 눌러보자

Delete Forever를 누르자

실행중이던 컨테이너가 종료되고 삭제된 것을 볼 수 있다

지금까지 우리가 한 작업들을 CLI로 하면...

docker search nginx

docker pull nginx

docker run -dit --name nginx-test -p 7777:80 nginx

docker exec -it nginx-test /bin/bash
$ … 작업
$ exit

docker stop nginx-test
docker rm nginx-test

위의 2줄 대신 1줄로 docker rm -f nginx-test

docker ps -a

이 명령어들을 직접 한줄한줄 쳐야 된다

물론 서버에서는 GUI 환경에서 작업하지는 않으므로 Docker CLI를 잘 사용해야겠지만...!!

Docker Desktop으로 로컬에서 테스트를 하고 로깅 & 디버깅을 하는 방법도 알 필요가 있다

 

그리고 Docker Desktop이 정말 좋은건...!

나중에 docker-compose.yaml 파일로 docker-compose up 명령어로 여러 컨테이너를 실행할 수 있는데..

compose한 컨테이너 중에 어떤 컨테이너가 죽었는지 눈으로 볼 수 있다는 것이다!!

http://localhost:5601로 들어간 화면

* 다 떠 있는 경우(All Running)

* 중간에 뭐 하나가 문제가 생긴 경우

 

320x100

댓글