Docker Context 사용법 완벽 가이드! Docker Context 생성 및 관리하기

Docker를 운영하다 보면 하나의 Docker 환경만 관리하는 것이 아니라 여러 대의 서버, 개발 환경, 테스트 환경, 원격 Docker 서버를 함께 관리해야 하는 경우가 많습니다.

예를 들어 로컬 PC에서는 개발용 Docker를 사용하고, 별도의 서버에서는 운영용 Docker Engine을 실행하는 경우가 있습니다. 이때 매번 접속 주소를 변경하거나 환경 변수를 수정하는 것은 매우 불편합니다.

이러한 문제를 해결하기 위해 Docker에서는 Context 기능을 제공합니다.

Docker Context는 현재 Docker CLI가 어떤 Docker Engine과 통신할지 지정하는 설정입니다. 하나의 컴퓨터에서 여러 Docker 환경을 쉽게 전환할 수 있으며, 원격 서버 관리에도 매우 유용합니다.

이번 글에서는 Docker Context의 개념부터 기본 사용법, Context 생성, 전환, 삭제, 원격 Docker 관리 방법까지 자세히 알아보겠습니다.

Docker Context란 무엇인가?

Docker Context는 Docker CLI와 연결되는 Docker Engine 환경을 관리하는 기능입니다.

기본적으로 Docker 명령어는 현재 로컬 Docker Engine과 통신합니다.

하지만 Context를 사용하면 다음과 같은 여러 환경을 쉽게 관리할 수 있습니다.

  • 로컬 개발 서버
  • 테스트 서버
  • 운영 서버
  • 원격 Docker Host
  • Docker Swarm 환경

Context만 변경하면 같은 Docker 명령어를 다른 서버에 실행할 수 있습니다.

Docker Context는 언제 사용하는가?

다음과 같은 상황에서 자주 사용합니다.

  • 여러 Docker 서버 관리
  • 원격 Docker Engine 접속
  • 개발·운영 환경 분리
  • 서버 전환 작업
  • Docker Swarm 관리
  • 클라우드 Docker 환경 관리

특히 DevOps 환경에서는 필수적으로 사용하는 기능입니다.

Docker Context 기본 확인 방법

현재 생성된 Context 목록을 확인합니다.

docker context ls

출력 예시는 다음과 같습니다.

NAME        DESCRIPTION              DOCKER ENDPOINT
default     Current DOCKER_HOST      unix:///var/run/docker.sock

기본적으로 default Context가 생성되어 있습니다.

현재 사용 중인 Context 확인하기

현재 활성화된 Context는 별표(*)로 표시됩니다.

NAME        DESCRIPTION
default *   Current DOCKER_HOST

별표가 표시된 Context가 현재 Docker 명령어가 사용하는 환경입니다.

새로운 Docker Context 생성하기

새로운 Context를 생성하려면 다음 명령을 사용합니다.

docker context create test-server

생성 후 Docker 서버 연결 정보를 지정할 수 있습니다.

원격 Docker 서버 Context 생성하기

원격 서버에 SSH로 연결하는 Context를 만들 수 있습니다.

docker context create remote-server \
--docker host=ssh://user@server-ip

이제 별도의 SSH 접속 없이 해당 서버의 Docker를 관리할 수 있습니다.

Context 변경하기

다른 Docker 환경으로 전환하려면 use 명령을 사용합니다.

docker context use remote-server

출력:

remote-server
Current context is now "remote-server"

이제 실행하는 모든 Docker 명령은 해당 Context의 Docker Engine에서 실행됩니다.

기본 Context로 돌아가기

다시 로컬 Docker 환경으로 변경하려면 다음 명령을 사용합니다.

docker context use default

로컬 Docker Engine으로 다시 전환됩니다.

Docker Context 정보 확인하기

특정 Context의 상세 정보를 확인합니다.

docker context inspect remote-server

출력 결과에서 Docker Endpoint와 연결 정보를 확인할 수 있습니다.

Docker Context 실무 활용 예제

Docker Context는 여러 Docker 서버를 하나의 Docker CLI 환경에서 관리할 때 매우 유용합니다. 개발 서버, 테스트 서버, 운영 서버를 각각 관리해야 하는 DevOps 환경에서는 필수적으로 활용되는 기능입니다.

원격 서버 Context 생성하기

SSH를 이용하여 원격 Docker 서버에 연결하는 Context를 생성합니다.

docker context create production \
--docker host=ssh://root@192.168.0.100

생성된 Context를 통해 원격 서버의 Docker를 관리할 수 있습니다.

Context 목록 확인하기

현재 생성된 모든 Context를 확인합니다.

docker context ls

출력 예시:

NAME             DESCRIPTION        DOCKER ENDPOINT
default *                           unix:///var/run/docker.sock
production                          ssh://root@192.168.0.100
development                         ssh://root@192.168.0.200

현재 사용 중인 Context는 * 표시로 확인할 수 있습니다.

운영 서버 Context로 전환하기

운영 Docker 서버로 변경합니다.

docker context use production

이제 실행하는 Docker 명령어는 운영 서버에서 실행됩니다.

예:

docker ps

운영 서버의 컨테이너 목록이 출력됩니다.

개발 서버로 다시 전환하기

개발 환경으로 변경합니다.

docker context use development

이제 Docker 명령은 개발 서버에서 실행됩니다.

Context 없이 특정 서버 명령 실행하기

일시적으로 특정 Context를 사용하고 싶다면 --context 옵션을 사용할 수 있습니다.

docker --context production ps

현재 Context를 변경하지 않고 운영 서버의 컨테이너 목록만 확인할 수 있습니다.

Context 상세 정보 확인하기

생성된 Context 정보를 확인합니다.

docker context inspect production

출력 결과에서 다음 정보를 확인할 수 있습니다.

  • Docker Endpoint
  • Host 주소
  • TLS 설정
  • Storage 정보

Context 삭제하기

사용하지 않는 Context는 삭제할 수 있습니다.

docker context rm production

삭제 전 확인 메시지가 출력됩니다.

강제로 삭제하려면:

docker context rm -f production

사용하지 않는 Context를 정리할 수 있습니다.

Linux 서버 문제 해결

운영팀에서 여러 대의 Docker 서버를 관리하던 중 서버별 Docker 명령 실행 위치가 혼동되는 문제가 발생했습니다.

관리자는 매번 SSH 접속 후 Docker 명령을 실행하고 있었고, 잘못된 서버에서 컨테이너를 재시작하는 문제가 발생했습니다.

이를 해결하기 위해 서버별 Context를 생성했습니다.

운영 서버 Context 생성:

docker context create production \
--docker host=ssh://root@production-server

테스트 서버 Context 생성:

docker context create staging \
--docker host=ssh://root@staging-server

이후 작업할 서버에 맞게 Context만 변경했습니다.

docker context use production

확인:

docker ps

이제 별도의 SSH 접속 없이 정확한 서버에서 Docker 작업을 수행할 수 있게 되었습니다.

Docker Context를 활용하면 여러 서버를 관리할 때 발생하는 실수를 줄이고 운영 효율성을 크게 높일 수 있습니다.

Docker Context 사용 시 주의사항

Docker Context를 사용할 때는 다음 사항을 알아두면 좋습니다.

첫 번째는 현재 활성화된 Context를 항상 확인해야 합니다.

잘못된 서버에서 명령을 실행하는 실수를 방지하기 위해 작업 전에 다음 명령을 확인하는 것이 좋습니다.

docker context ls

두 번째는 운영 서버 Context 사용 시 주의해야 합니다.

현재 Context가 운영 서버라면 모든 Docker 명령이 실제 서비스 환경에 영향을 줄 수 있습니다.

세 번째는 Context 이름을 명확하게 지정하는 것이 좋습니다.

예:

  • production
  • staging
  • development

처럼 환경을 구분하면 관리가 쉬워집니다.

네 번째는 사용하지 않는 Context는 정리하는 것이 좋습니다.

Best Practice

Docker Context를 사용할 때는 다음과 같은 방법을 추천합니다.

  • 서버별 Context 이름을 명확하게 관리합니다.
  • 운영 서버 작업 전 현재 Context를 확인합니다.
  • 개발·테스트·운영 환경을 분리합니다.
  • SSH 기반 Context 사용을 권장합니다.
  • 사용하지 않는 Context는 삭제합니다.
  • 중요한 작업 전 docker context inspect로 확인합니다.

이러한 방법을 적용하면 여러 Docker 환경을 더욱 안전하고 효율적으로 관리할 수 있습니다.

자주 묻는 질문

Docker Context는 무엇을 변경하나요?

Docker CLI가 연결할 Docker Engine 환경을 변경합니다.

Context를 변경하면 컨테이너도 이동하나요?

아닙니다.

단순히 Docker 명령이 실행되는 대상 서버만 변경됩니다.

하나의 PC에서 여러 Docker 서버를 관리할 수 있나요?

가능합니다.

Context를 사용하면 여러 Docker 환경을 쉽게 전환할 수 있습니다.

Context 없이 원격 Docker 서버를 사용할 수 있나요?

가능하지만 매번 연결 정보를 입력해야 하므로 Context 사용이 훨씬 편리합니다.

마무리

Docker Context는 하나의 Docker CLI 환경에서 여러 Docker Engine을 관리할 수 있게 해주는 매우 강력한 기능입니다.

개발 서버, 테스트 서버, 운영 서버처럼 여러 환경을 관리하는 DevOps 환경에서는 필수적인 기능이며, SSH 기반 연결을 활용하면 별도의 서버 접속 없이 Docker 명령을 실행할 수 있습니다.

특히 운영 환경에서는 현재 활성화된 Context를 항상 확인하는 습관을 들이면 잘못된 서버에서 작업하는 실수를 예방하고 더욱 안전한 Docker 운영이 가능합니다.

댓글 남기기