Docker 컨테이너를 사용하는 방법

Docker 컨테이너를 사용하는 방법
노트북에서 프로그래밍하는 사람의 사진.

컨테이너는 모든 Docker 설치의 생명선입니다. Docker 플랫폼의 기반 역할을 하며 종속성과 버전 충돌을 걱정하지 않고 컴퓨터에서 서비스를 실행할 수 있습니다. 여기에서는 Docker CLI 도구를 사용하여 Docker 컨테이너를 만들고, 관리하고, 사용자 정의하는 기본 사항을 보여드립니다.

Docker 이미지를 찾고 가져오는 방법

Docker 컨테이너는 원래 시스템의 나머지 부분과 별도로 프로그램을 실행할 수 있는 특수한 유형의 소프트웨어 환경입니다. 이를 달성하기 위해 Docker는 “소프트웨어 이미지”를 사용합니다. 이는 컨테이너가 시작되는 기반 역할을 하는 프로그램의 정적 사본입니다.

이미지와 컨테이너를 이렇게 구분하면 소프트웨어를 필요한 대로 재생성하고 조정할 수 있습니다. 예를 들어, “httpd”와 같은 이미지를 가지고 있지만 “website1″과 “website2″라는 두 개의 별도 컨테이너를 만들 수 있습니다.

새로운 Docker 이미지를 보는 가장 쉬운 방법은 search다음 하위 명령을 사용하는 것입니다.

CLI 도구에서 httpd Docker 이미지를 강조 표시하는 터미널입니다.
Docker Hub 웹사이트의 httpd Docker 이미지를 보여주는 스크린샷입니다.

시스템에 이미지를 다운로드하려면 다음 명령을 실행하세요.

다음 하위 명령 을 사용하여 시스템에 새 이미지를 올바르게 추가했는지 확인하세요 images.

시스템에 설치된 httpd Docker 이미지를 강조 표시하는 터미널입니다.

Dockerfiles를 사용하여 새 이미지 빌드

Docker Hub에서 미리 빌드된 이미지를 가져오는 것 외에도 Docker CLI에서 바로 이미지를 빌드할 수 있습니다. 이는 기존 소프트웨어 패키지의 사용자 정의 버전을 만들거나 새 앱을 Docker로 이식하려는 경우에 유용합니다.

이렇게 하려면 먼저 홈 디렉토리에 빌드 파일을 위한 폴더를 만듭니다.

좋아하는 텍스트 편집기를 사용하여 새 Dockerfile을 만듭니다.

새 Dockerfile에 다음 코드 줄을 붙여넣습니다.

사용자 정의 Nginx 이미지에 대한 Dockerfile 구성의 예를 보여주는 터미널입니다.

“sample-site” 폴더를 만들고 기본 HTML 사이트를 복사하거나 만드십시오.

새로운 Dockerfile을 저장한 후 다음 명령을 실행하여 시스템에서 빌드하세요.

새 Docker 이미지가 Docker 이미지 목록에 있는지 확인하세요.

빌드 하위 명령에서 생성된 사용자 지정 이미지를 강조 표시하는 터미널입니다.

기존 컨테이너를 사용하여 새 이미지 빌드

Docker CLI 도구는 현재 시스템에 있는 컨테이너에서 새 이미지를 빌드할 수도 있습니다. 이는 기존 환경에서 이미 작업 중이고 현재 설정에서 새 이미지를 만들고 싶은 경우에 유용합니다.

이렇게 하려면 컨테이너가 현재 실행 중이 아닌지 확인하세요.

commit컨테이너 이름 뒤에 하위 명령을 실행 한 다음, 그 뒤에 새 Docker 이미지 이름을 입력합니다.

Docker 컨테이너에서 새 이미지를 생성하는 commit 하위 명령을 보여주는 터미널입니다.

.을 실행하여 새로운 Docker 이미지가 시스템에 있는지 확인하세요 docker images.

시스템에 설치된 Docker 컨테이너에서 새로운 사용자 정의 이미지를 강조 표시하는 터미널입니다.

Docker 컨테이너를 실행하고 중지하는 방법

Docker 이미지가 준비되었으므로 이제 이미지를 사용하여 첫 번째 컨테이너를 만들 수 있습니다. 이를 위해 하위 run명령 다음에 실행하려는 이미지 이름을 사용합니다.

이렇게 하면 첫 번째 Docker 컨테이너를 실행하는 데는 효과가 있지만, 이렇게 하면 현재 셸 세션을 인계받습니다. 컨테이너를 백그라운드에서 실행하려면 하위 명령 -d뒤에 플래그를 추가합니다 run.

하위 명령 은 run새 Docker 컨테이너의 동작을 변경할 수 있는 여러 추가 플래그를 포함할 수도 있습니다. 예를 들어, 플래그를 사용하면 --name컨테이너에 사용자 정의 가능한 이름을 추가할 수 있습니다.

반면에, 플래그를 사용하여 --publishDocker 컨테이너에 액세스할 수 있는 네트워크 포트를 리디렉션할 수 있습니다. 이는 주로 컨테이너가 권한이 있는 포트를 인수하지 않도록 하려는 경우에 유용합니다.

사용자 정의 Docker 컨테이너에서 호스팅되는 웹사이트를 웹 브라우저에서 여는 모습을 보여주는 스크린샷입니다.

다음 명령을 실행하면 시스템에서 현재 실행 중인 모든 Docker 컨테이너를 확인할 수 있습니다.

하위 명령 과 유사하게 run, ps또한 동작 방식을 수정하는 몇 가지 플래그를 사용할 수 있습니다. 예를 들어, 현재 다운된 컨테이너를 보려면 플래그를 사용합니다 -a.

실행 중인 컨테이너를 끄려면 stop하위 명령 뒤에 컨테이너 ID나 Docker 컨테이너 이름을 사용합니다.

현재 실행 중인 Docker 컨테이너를 끄는 과정을 보여주는 터미널입니다.

중지한 컨테이너는 다음 start하위 명령을 다시 실행하여 다시 시작할 수 있습니다.

Docker 컨테이너 일시 중지 및 종료

Docker CLI 도구를 사용하면 실행 중인 컨테이너 프로세스를 일시적으로 일시 중지하고 종료할 수도 있습니다. Docker 설정에서 문제를 해결하고 잘못 작동하는 컨테이너를 격리하거나 중지하려는 경우 이 기능이 유용할 수 있습니다.

docker ps시스템에서 실행 중인 모든 컨테이너를 나열하려면 다음을 실행합니다 .

관리하려는 컨테이너의 ID나 이름을 찾으세요.

현재 시스템에서 실행 중인 사용자 정의 Docker 컨테이너를 강조 표시하는 터미널입니다.

pause일시적으로 일시 중단하려는 컨테이너 이름 뒤에 하위 명령을 실행합니다 .

다음 하위 명령을 실행하여 중단된 프로세스를 다시 시작할 수 있습니다 unpause.

잘못된 동작을 하는 프로세스를 중지하려면 kill컨테이너 이름 뒤에 하위 명령을 실행합니다.

Docker 컨테이너를 검사하는 방법

컨테이너의 복잡한 세부 사항을 아는 것은 Docker 스택의 상태를 유지하는 데 중요한 부분입니다. 잠재적인 문제를 빠르게 살펴볼 수 있으며 전체 배포를 수정하고 다시 하는 것의 차이가 될 수 있습니다.

Docker 컨테이너 개요를 보려면 다음 inspect하위 명령을 실행하세요.

이렇게 하면 전체 컨테이너의 현재 상태를 설명하는 긴 JSON 문자열이 인쇄됩니다. 출력을 jq로 파이프하거나 내장 플래그 -f뒤에 인쇄하려는 JSON 객체를 사용하여 이를 좁힐 수 있습니다.

실행 중인 Docker 컨테이너에서 inspect 하위 명령에 대한 필터 플래그를 표시하는 터미널입니다.

터미널에 컨테이너 로그 인쇄

그 외에도 현재 실행 중인 Docker 컨테이너의 로그를 추적하고 인쇄할 수도 있습니다. 이는 서비스가 현재 어떻게 동작하는지 확인하고 STDOUT으로 반환하는 출력을 살펴보고 싶을 때 유용할 수 있습니다.

이렇게 하려면 컨테이너 이름 뒤에 logs 하위 명령을 실행합니다.

또한 플래그와 함께 logs 하위 명령을 실행하여 Docker 서비스의 연속 로그를 만들 수 있습니다. 이는 UNIX 파이프 끝에서 --follow실행하는 것과 비슷합니다 .tail -f

Docker 컨테이너의 지속적인 로그를 보여주는 터미널입니다.

다른 하위 명령과 마찬가지로 Docker 컨테이너 로그의 출력을 사용자 정의하기 위해 다양한 플래그를 추가할 수도 있습니다. 예를 들어, 플래그는 --timestamps컨테이너가 STDOUT으로 보내는 모든 메시지에 대한 자세한 타임스탬프를 추가합니다.

플래그 --details는 현재 Docker 컨테이너에 대해 설정한 환경 변수도 인쇄합니다. 한편, 플래그를 사용하면 --since특정 시점 이후에 발생한 로그만 표시할 수 있습니다.

현재 실행 중인 Docker 컨테이너의 더 자세한 로그 출력을 보여주는 터미널입니다.

Docker 컨테이너를 사용자 정의하는 방법

기본적으로 Docker 컨테이너는 현재 시스템 위에서 실행되는 작고 간소화된 Linux 버전입니다. 즉, 가상 머신과 유사하게 컨테이너 내부의 데이터에 액세스하고 검색할 수 있습니다.

호스트 머신에서 컨테이너로 로컬 파일을 복사하려면 cp다음 하위 명령을 실행합니다.

때로는 컨테이너 내부에서 셸을 열어서 컨테이너에 “들어가야” 할 수도 있습니다. 이렇게 하면 파일을 편집하고, 바이너리를 설치하고, 필요에 따라 사용자 정의할 수 있습니다.

컨테이너의 루트 셸로 이동하는 과정을 보여주는 터미널입니다.

이제 예를 들어 “index.html”을 편집하여 해당 웹사이트의 홈페이지를 만들 수 있습니다.

Docker 컨테이너의 루트 셸에 복사된 HTML 파일을 보여주는 터미널입니다.

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

Docker 컨테이너 루트 셸의 종료 명령을 강조 표시한 터미널입니다.

Docker 컨테이너 및 이미지를 삭제하는 방법

사용하지 않는 Docker 컨테이너와 이미지를 제거하는 것은 배포를 위한 일반적인 정리 작업의 중요한 부분입니다. 그렇게 하면 서버에서 불필요한 파일을 제거하여 장기적으로 저장 공간을 절약할 수 있습니다.

컨테이너를 삭제하기 전에 먼저 컨테이너를 중지했는지 확인하세요.

이제 다음 하위 명령을 사용하여 컨테이너를 제거합니다 rm.

.을 실행하여 오래된 Docker 컨테이너가 제대로 삭제되었는지 확인하세요 docker ps -a.

현재 다운된 컨테이너를 포함하여 사용 가능한 모든 Docker 컨테이너를 표시하는 터미널입니다.

Docker 배포에서 원래 Docker 이미지를 삭제합니다.

시스템에서 Docker 이미지를 삭제한 출력을 강조 표시하는 터미널입니다.

.을 실행하여 원래 Docker 이미지가 제대로 제거되었는지 확인하세요 docker images.

업데이트된 Docker 이미지 목록을 보여주는 터미널.

Docker 컨테이너를 생성, 관리, 제거하는 방법을 배우는 것은 Linux 서버에서 할 수 있는 일 중 일부에 불과합니다.

이미지 출처: Shamin Haky via Unsplash . 모든 변경 사항과 스크린샷은 Ramces Red가 제공했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다