Docker를 사용하다 보면 하나의 Docker Engine만 사용하는 경우도 있지만, 실제 운영 환경에서는 로컬 개발 서버, 테스트 서버, 운영 서버, 원격 Docker Host 등 여러 Docker 환경을 동시에 관리해야 하는 경우가 많습니다.
예전에는 Docker Host를 변경할 때마다 환경 변수를 수정하거나 접속 정보를 직접 변경해야 했지만, 현재는 Docker Context 기능을 이용하면 훨씬 간편하게 여러 Docker 환경을 전환할 수 있습니다.
이럴 때 사용하는 기능이 바로 docker context입니다.
Docker Context는 여러 Docker 실행 환경을 저장하고 필요할 때마다 손쉽게 전환할 수 있는 기능입니다. 하나의 CLI에서 로컬 Docker, 원격 Docker Host, Docker Desktop, Docker Engine, Docker Swarm 등을 편리하게 관리할 수 있습니다.
이번 글에서는 Docker Context의 개념부터 생성, 조회, 전환, 삭제 방법과 실무 활용 사례까지 자세히 알아보겠습니다.
Docker Context란 무엇인가?
Docker Context는 Docker CLI가 연결할 Docker Engine 정보를 저장하는 기능입니다.
하나의 Docker CLI에서 여러 Docker 환경을 등록하고 필요할 때마다 쉽게 전환할 수 있습니다.
개발 서버와 운영 서버를 자주 오가는 환경에서 매우 유용합니다.
Docker Context는 언제 사용하는가?
다음과 같은 상황에서 자주 사용됩니다.
- 개발 서버 관리
- 운영 서버 관리
- 테스트 서버 전환
- 원격 Docker Host 연결
- Docker Desktop 관리
- 여러 Docker 환경 운영
클라우드 서버를 여러 대 운영하는 경우 거의 필수적으로 사용하는 기능입니다.
Docker Context 목록 확인
현재 등록되어 있는 Context를 확인합니다.
docker context ls
출력 예시는 다음과 같습니다.
NAME DESCRIPTION DOCKER ENDPOINT
default * Current configuration unix:///var/run/docker.sock
production Production Server ssh://root@10.0.0.10
staging Staging Server ssh://root@10.0.0.20
현재 사용 중인 Context에는 * 표시가 나타납니다.
현재 Context 확인
현재 사용 중인 Context만 확인하려면 다음 명령을 실행합니다.
docker context show
출력 예시입니다.
default
현재 연결된 Docker 환경을 쉽게 확인할 수 있습니다.
새로운 Context 생성
새로운 Docker Context를 생성합니다.
docker context create production --docker host=ssh://root@192.168.0.100
원격 Docker Engine을 새로운 Context로 등록합니다.
Context 전환
등록된 Context로 전환하는 명령입니다.
docker context use production
출력 예시입니다.
Current context is now "production"
이후 실행되는 모든 Docker 명령은 해당 서버에서 수행됩니다.
Context 상세 정보 확인
특정 Context의 상세 정보를 확인합니다.
docker context inspect production
Docker Endpoint와 연결 정보 등을 확인할 수 있습니다.
Context 삭제
더 이상 사용하지 않는 Context는 삭제할 수 있습니다.
docker context rm production
삭제 후에는 목록에서도 제거됩니다.
기본 Context로 변경
기본 Docker 환경으로 다시 돌아가려면 다음 명령을 실행합니다.
docker context use default
로컬 Docker Engine으로 다시 연결됩니다.
Docker Context에서 확인할 수 있는 정보
Docker Context에서는 다음과 같은 정보를 확인할 수 있습니다.
- Context 이름
- Docker Endpoint
- 현재 활성 Context
- 연결 방식(SSH, TCP 등)
- Context 설명
- Docker Engine 정보
운영 서버를 여러 대 관리할 때 매우 유용한 정보들입니다.
Docker Context 실무 활용 예제
Docker Context는 여러 Docker Engine을 하나의 CLI에서 관리할 수 있기 때문에 개발 환경과 운영 환경을 오가는 작업에서 매우 유용합니다. 특히 AWS, Azure, Google Cloud, 온프레미스 서버 등을 함께 운영하는 환경에서는 필수적으로 사용하는 기능입니다.
등록된 Context 확인
현재 등록된 Docker Context를 확인합니다.
docker context ls
출력 예시입니다.
NAME DESCRIPTION DOCKER ENDPOINT
default * Local Docker unix:///var/run/docker.sock
production Production Server ssh://root@10.0.0.10
staging Staging Server ssh://root@10.0.0.20
현재 사용 중인 Context에는 * 표시가 나타납니다.
운영 서버로 전환
운영 서버에서 작업하려면 Context를 변경합니다.
docker context use production
출력 예시입니다.
production
Current context is now "production"
이후 실행되는 Docker 명령은 운영 서버에서 수행됩니다.
현재 Context 확인
현재 연결된 Docker 환경을 확인합니다.
docker context show
출력 예시입니다.
production
실수로 다른 서버에서 작업하는 것을 방지할 수 있습니다.
로컬 환경으로 복귀
작업이 끝난 후 로컬 Docker로 다시 전환합니다.
docker context use default
이후에는 로컬 Docker Engine에서 명령이 실행됩니다.
Linux 서버 문제 해결
운영 서버에서 새로운 컨테이너를 실행했지만 로컬 PC에서는 컨테이너가 보이지 않는 문제가 발생했습니다.
먼저 현재 Context를 확인했습니다.
docker context show
출력 결과를 확인해 보니 아직 default Context를 사용하고 있었습니다.
운영 서버 Context로 변경했습니다.
docker context use production
다시 컨테이너 목록을 확인했습니다.
docker ps
이번에는 운영 서버에서 실행 중인 컨테이너가 정상적으로 출력되었습니다.
작업을 모두 마친 후 다시 로컬 환경으로 복귀했습니다.
docker context use default
이처럼 Docker Context를 활용하면 여러 서버를 안전하게 관리할 수 있습니다.
Docker Context 사용 시 주의사항
Docker Context를 사용할 때는 다음 사항을 알아두는 것이 좋습니다.
첫 번째는 현재 활성화된 Context를 항상 확인하는 것이 좋습니다.
운영 서버에서 테스트 명령을 실행하는 실수를 방지할 수 있습니다.
두 번째는 Context를 변경하면 이후 실행되는 모든 Docker 명령이 해당 서버에서 실행됩니다.
이미지 삭제나 컨테이너 제거 명령은 특히 주의해야 합니다.
세 번째는 사용하지 않는 Context는 삭제하여 관리하는 것이 좋습니다.
등록된 Context가 많아지면 관리가 복잡해질 수 있습니다.
네 번째는 SSH 인증과 네트워크 연결이 정상적으로 설정되어 있어야 원격 Context를 사용할 수 있습니다.
Best Practice
Docker Context를 사용할 때는 다음과 같은 방법을 추천합니다.
- 작업 전
docker context show로 현재 Context를 확인합니다. - 운영 서버와 개발 서버를 명확하게 구분하여 이름을 지정합니다.
- 작업이 끝나면
defaultContext로 다시 전환합니다. - 운영 서버에서는 중요한 명령 실행 전 Context를 한 번 더 확인합니다.
- 사용하지 않는 Context는 정기적으로 삭제합니다.
- SSH 키 인증을 사용하여 안전하게 원격 서버를 관리합니다.
이러한 방법을 적용하면 여러 Docker 환경을 더욱 안전하고 효율적으로 운영할 수 있습니다.
자주 묻는 질문
Docker Context는 언제 사용하나요?
여러 Docker 서버를 하나의 CLI에서 관리할 때 사용합니다.
개발, 테스트, 운영 서버를 자주 오가는 환경에서 매우 유용합니다.
현재 연결된 Docker 서버를 확인하려면 어떻게 하나요?
다음 명령을 사용합니다.
docker context show
현재 활성화된 Context 이름이 출력됩니다.
Docker Context를 삭제해도 Docker Engine은 삭제되나요?
아닙니다.
Context 정보만 삭제되며 실제 Docker Engine이나 컨테이너에는 영향을 주지 않습니다.
Docker Context와 Docker Host 환경 변수의 차이는 무엇인가요?
Docker Host 환경 변수는 일시적으로 연결 대상을 변경하는 방식입니다.
Docker Context는 여러 연결 정보를 저장하고 필요할 때 쉽게 전환할 수 있는 기능입니다.
마무리
Docker Context는 여러 Docker 환경을 하나의 CLI에서 효율적으로 관리할 수 있도록 도와주는 매우 강력한 기능입니다.
개발 서버, 테스트 서버, 운영 서버를 자유롭게 전환할 수 있으며, 원격 Docker Engine 관리도 간편하게 수행할 수 있습니다.
Docker Context를 활용하면 서버 관리 효율이 크게 향상되며, Docker CLI를 더욱 안전하고 체계적으로 사용할 수 있습니다.