도커 컨테이너 사용 방법

컨테이너는 모든 도커 설치의 생명선입니다. 이들은 도커 플랫폼의 기초 역할을 하며, 종속성과 버전 충돌에 대한 걱정 없이 컴퓨터에서 서비스를 실행할 수 있게 해줍니다. 여기에서는 도커 CLI 도구를 사용하여 도커 컨테이너를 생성, 관리 및 사용자 정의하는 기본 사항을 보여줍니다.
목차
- 도커 이미지 찾기 및 가져오기
- 도커 컨테이너 실행 및 중지하기
- 도커 컨테이너 검사하기
- 도커 컨테이너 사용자 정의하기
- 도커 컨테이너 및 이미지 삭제하기
참고: 먼저 리눅스 시스템에 도커를 설치하여 시작하세요.
도커 이미지 찾기 및 가져오기
도커 컨테이너는 원래 시스템과 분리된 프로그램을 실행할 수 있게 해주는 특별한 유형의 소프트웨어 환경입니다. 이를 위해 도커는 “소프트웨어 이미지“를 사용합니다. 이는 컨테이너가 시작되는 기반이 되는 프로그램의 정적 복사본입니다.
이미지와 컨테이너 간의 이러한 구분은 소프트웨어를 필요한 방식으로 재구성하고 조정할 수 있게 해줍니다. 예를 들어, “httpd”와 같은 이미지를 가질 수 있지만, 이를 통해 “website1”과 “website2”라는 두 개의 별개의 컨테이너를 생성할 수 있습니다.
새로운 도커 이미지를 찾는 가장 쉬운 방법은 search 하위 명령어를 사용하는 것입니다:
docker search httpd
웹 브라우저를 사용하고 싶다면 도커 허브 웹사이트에서 패키지를 검색할 수도 있습니다.

이미지를 시스템에 다운로드하려면 다음 명령어를 실행하세요:
docker image pull httpdimages 하위 명령어를 사용하여 새 이미지를 시스템에 제대로 추가했는지 확인하세요:
docker images
도커파일을 사용하여 새 이미지 빌드하기
도커 허브에서 미리 빌드된 이미지를 가져오는 것 외에도, 도커 CLI에서 직접 이미지를 빌드할 수 있습니다. 이는 기존 소프트웨어 패키지의 사용자 정의 버전을 만들거나 새로운 앱을 도커로 포팅할 때 유용합니다.
이를 위해 먼저 홈 디렉토리에 빌드 파일을 위한 폴더를 만드세요:
mkdir ~/my-docker-image && cd ~/my-docker-image좋아하는 텍스트 편집기를 사용하여 새 도커파일을 만드세요:
nano ./Dockerfile새 도커파일 안에 다음 코드를 붙여넣으세요:
FROM nginx
COPY sample-site /usr/share/nginx/html“sample-site” 폴더를 만들고 기본 HTML 사이트를 복사하거나 만드세요:
mkdir ./sample-site
cp ~/index.html ./sample-site/새 도커파일을 저장한 후, 시스템에서 빌드하기 위해 다음 명령어를 실행하세요:
docker build -t custom-nginx .새 도커 이미지가 도커 이미지 목록에 있는지 확인하세요:
docker images
기존 컨테이너를 사용하여 새 이미지 빌드하기
도커 CLI 도구는 현재 시스템에 존재하는 컨테이너에서 새 이미지를 빌드할 수도 있습니다. 이는 이미 기존 환경에서 작업 중이고 현재 설정에서 새 이미지를 만들고 싶을 때 유용합니다.
이를 위해 컨테이너가 현재 실행 중이지 않은지 확인하세요:
docker stop my-http-servercommit 하위 명령어를 실행한 후 컨테이너 이름을 입력하고, 그 다음에 새 도커 이미지의 이름을 제공하세요:
docker commit my-http-server my-new-server-imagedocker images를 실행하여 새 도커 이미지가 시스템에 있는지 확인하세요.

도커 컨테이너 실행 및 중지하기
도커 이미지가 준비되었으므로 이제 이를 사용하여 첫 번째 컨테이너를 생성할 수 있습니다. 이를 위해 run 하위 명령어를 사용하고 실행할 이미지의 이름을 입력하세요:
docker run httpd이 방법은 첫 번째 도커 컨테이너를 실행하는 데 작동하지만, 이렇게 하면 현재 셸 세션을 차지하게 됩니다. 컨테이너를 백그라운드에서 실행하려면 run 하위 명령어 뒤에 -d 플래그를 추가하세요:
docker run -d httpdrun 하위 명령어는 새 도커 컨테이너의 동작을 변경할 수 있는 여러 추가 플래그를 사용할 수 있습니다. 예를 들어, --name 플래그를 사용하면 컨테이너에 사용자 정의 이름을 추가할 수 있습니다:
docker run -d --name=my-http-server httpd반면에 --publish 플래그를 사용하여 도커 컨테이너에 접근할 수 있는 네트워크 포트를 리디렉션할 수 있습니다. 이는 컨테이너가 특권 포트를 차지하지 않도록 하고 싶을 때 주로 유용합니다:
docker run -d --name=my-http-server --publish 8080:80 httpd
현재 시스템에서 실행 중인 모든 도커 컨테이너를 확인하려면 다음 명령어를 실행하세요:
docker psrun 하위 명령어와 유사하게, ps는 동작을 수정할 수 있는 여러 플래그를 사용할 수 있습니다. 예를 들어, 현재 중단된 컨테이너를 보려면 -a 플래그를 사용하세요:
docker ps -a실행 중인 컨테이너를 끄려면 stop 하위 명령어를 사용하고 컨테이너 ID 또는 도커 컨테이너의 이름을 입력하세요:
docker stop my-http-server중지한 컨테이너는 start 하위 명령어를 다시 실행하여 다시 시작할 수 있습니다:
docker start my-http-server참고: darkhttpd를 사용하여 간단한 웹사이트를 실행하여 도커로 웹 호스팅의 기본을 배우세요.
도커 컨테이너 일시 중지 및 종료하기
도커 CLI 도구는 실행 중인 컨테이너 프로세스를 일시적으로 일시 중지하고 종료할 수 있게 해줍니다. 이는 도커 설정에 문제가 발생했을 때 문제를 격리하거나 잘못된 동작을 하는 컨테이너를 중지하고 싶을 때 유용합니다.
시스템에서 실행 중인 모든 컨테이너를 나열하려면 docker ps를 실행하세요.
관리하려는 컨테이너의 ID 또는 이름을 찾으세요.

일시 중지할 컨테이너의 이름 뒤에 pause 하위 명령어를 실행하세요:
docker pause my-http-server일시 중지된 프로세스를 다시 시작하려면 unpause 하위 명령어를 실행하세요:
docker unpause my-http-server잘못된 동작을 하는 프로세스를 중지하려면 kill 하위 명령어를 실행하고 컨테이너의 이름을 입력하세요:
docker kill my-http-server도커 컨테이너 검사하기
컨테이너의 세부 사항을 아는 것은 도커 스택의 건강을 유지하는 데 중요한 부분입니다. 이는 잠재적인 문제를 빠르게 살펴볼 수 있게 해주며, 전체 배포를 수정하는 것과 재작업하는 것의 차이를 만들 수 있습니다.
도커 컨테이너의 개요를 보려면 inspect 하위 명령어를 실행하세요:
docker inspect my-http-server이렇게 하면 전체 컨테이너의 현재 상태를 설명하는 긴 JSON 문자열이 출력됩니다. 출력 결과를 jq로 파이프하거나, 출력할 JSON 객체 뒤에 -f 플래그를 사용하여 좁힐 수 있습니다:
docker inspect -f {{.Name}} my-http-server터미널에 컨테이너 로그 출력하기
그 외에도 현재 실행 중인 도커 컨테이너의 로그를 추적하고 출력할 수 있습니다. 이는 서비스가 현재 어떻게 동작하는지 확인하고 STDOUT에 반환되는 출력을 살펴보는 데 유용합니다.
이를 위해 컨테이너 이름 뒤에 로그 하위 명령어를 실행하세요:
docker logs my-http-server--follow 플래그와 함께 로그 하위 명령어를 실행하여 도커 서비스의 연속 로그를 생성할 수도 있습니다. 이는 UNIX 파이프 끝에서 tail -f를 실행하는 것과 유사합니다:
docker logs --follow my-http-server
다른 하위 명령어와 유사하게, 도커 컨테이너 로그의 출력을 사용자 정의하기 위해 다양한 플래그를 추가할 수 있습니다. 예를 들어, --timestamps 플래그는 컨테이너가 STDOUT에 보내는 각 메시지에 대한 자세한 타임스탬프를 추가합니다:
docker logs --timestamps my-http-server--details 플래그는 현재 도커 컨테이너에 대해 설정한 환경 변수도 출력합니다. 한편, --since 플래그는 특정 시점 이후에 발생한 로그만 표시할 수 있게 해줍니다:
docker logs --details --since 8m my-http-server
도커 컨테이너 사용자 정의하기
본질적으로 도커 컨테이너는 현재 시스템 위에서 실행되는 작고 간소화된 리눅스 버전입니다. 이는 가상 머신과 유사하게 컨테이너 내부의 데이터에 접근하고 검색할 수 있음을 의미합니다.
호스트 머신에서 컨테이너로 로컬 파일을 복사하려면 cp 하위 명령어를 실행하세요:
docker cp ~/my-file my-http-server:/tmp때때로 컨테이너 내부에서 셸을 열어 “들어가야” 할 필요가 있습니다. 이렇게 하면 파일을 편집하고 이진 파일을 설치하며 필요에 따라 사용자 정의할 수 있습니다:
docker exec -it my-http-server /bin/bash이제 예를 들어 “index.html”을 편집하고 웹사이트의 홈페이지를 만들 수 있습니다.

컨테이너의 셸에서 나가려면 Ctrl + D를 누르거나 터미널에서 exit를 실행하세요.

알아두면 좋은 점: 기존 도커 컨테이너를 새 시스템으로 이동하는 방법을 배우세요.
도커 컨테이너 및 이미지 삭제하기
사용하지 않는 도커 컨테이너와 이미지를 제거하는 것은 배포를 위한 일반적인 정리 작업의 중요한 부분입니다. 이를 통해 서버에서 불필요한 파일을 제거하고 장기적으로 저장 공간을 절약할 수 있습니다.
컨테이너를 삭제하기 전에 먼저 중지했는지 확인하세요:
docker stop my-http-server이제 rm 하위 명령어를 사용하여 컨테이너를 제거하세요:
docker rm my-http-serverdocker ps -a를 실행하여 이전 도커 컨테이너를 제대로 삭제했는지 확인하세요.

도커 배포에서 원래 도커 이미지를 삭제하세요:
docker rmi my-new-server-image
docker images를 실행하여 원래 도커 이미지를 제대로 제거했는지 확인하세요.

도커 컨테이너를 생성, 관리 및 제거하는 방법을 배우는 것은 리눅스 서버에서 할 수 있는 일 중 일부에 불과합니다. XPipe로 서버와 도커 컨테이너 허브를 호스팅하여 리눅스 시스템 관리의 깊은 세계를 탐험하세요.
이미지 출처: Shamin Haky via Unsplash. 모든 수정 및 스크린샷은 Ramces Red에 의해 이루어졌습니다.