도커(Docker)는 소프트웨어의 개발과 배포의 큰 패더다임을 를 이끈 컨테이너 가상화 기술입니다. 이 글에서는 리눅스에서 도커가 어떻게 혁신을 가져왔으며, 컨테이너 가상화의 기술적인 내용과 우분투 데스크톱 GUI를 web vnc로 구동하는 실습진행하겠습니다
목차
1. 도커란 무엇인가?
도커는 컨테이너 가상화 기술을 통해 소프트웨어의 개발, 테스트, 배포를 효율적으로 관리할 수 있게 해주는 열쇠입니다. 개발자는 애플리케이션을 컨테이너로 패키징하여, 호스트 환경에 관계없이 일관성 있게 실행할 수 있습니다. 이로써 개발과 운영의 간극을 줄이고 효율성을 극대화할 수 있습니다.
2. 도커의 핵심 개념과 동작 원리 이해하기
도커는 이미지와 컨테이너라는 개념으로 구성됩니다. 이미지는 애플리케이션과 그 종속성을 패키징한 빌드된 상태를 나타내며, 컨테이너는 이 이미지를 기반으로 실행된 독립적인 환경입니다. 이를 통해 여러 애플리케이션을 격리된 환경에서 실행하면서도 시스템 자원을 효율적으로 활용할 수 있습니다.
그림과 같이 빈 컨테이너가 있어요 정말 그림처럼 틀만 있는 이미지라고 가정할게요
만약 이 이미지라는 틀에 컨테이너 주인이 마트를 차린다고 생각해봐요, 계산대, 진열장, 판매를 위한 물건들과 같이 판매를 위한 물건들을 구비하고 있어요! 자 이제 준비가 끝난 상태에 모습을 보러 갈까요?
짜잔 판매를 위한 컨테이너가 만들어졌어요!!
우리는 이와 같이 만들어진 컨테이너를 여러 개로 만들수도 있고 여러 컨테이너를 만들어서 종류별 상점도 만들 수 있을 거예요! 만약 컨테이너를 쓰지 않고 한 층에 생선시장, 도축장, 패션몰 등이 한 곳에 모여있다고 생각해 봐요 :(
생각만 해도 복잡한 층이 되지 않을까 싶어요.
3. 도커의 장점과 단점
장점
- 환성 및 유지 보수성.
- 신속한 배포.
- 지속적인 배포 및 테스트 환경.
- 메모리를 적게 사용합니다.
- 단순하고 빠른 구성.
단점
- 호스트 서버의 문제가 발생 시 모든 서비스가 중단 가능성이 높다
- 하나의 서비스를 실행하기 위해서 도커를 이용하는 것은 비효율적
- 리눅스기반 시스템이어서 윈도에서 가동할 수 있는 app과 호환이 안 되는 경우도 있다.
4. 도커 컨테이너 구축과 실행
도커 컨테이너를 구축하고 실행하기 위해서는 도커 이미지를 생성하고 컨테이너로 실행해야 합니다. 이미지는 Dockerfile이라는 설정 파일을 통해 정의하며, 컨테이너는 해당 이미지를 기반으로 생성됩니다. 컨테이너는 호스트와 독립적으로 실행되며, 필요한 자원만을 차지하면서 애플리케이션을 구동합니다.
이번에는 정말 간단한 예제를 통해서 리눅스 GUI 컨테이너를 구축해 볼게요!
우분투 22.04 LTS 서버를 베이즈로 가정하고 실습을 진행하도록 할게요
1. 도커를 위한 패키지 설치
apt install docker.io
2. 도커설치 확인
#설치됬는지 확인
docker info
3. 도커 ubuntu no vnc 설치
docker pull dorowu/ubuntu-desktop-lxde-vnc:focal
4. 도커 컨테이너 만들기
docker run -p 6080:80 -v /dev/shm:/dev/shm --name vbox1 dorowu/ubuntu-desktop-lxde-vnc
이 부분은 잠깐 설명이 필요할 것 같은데요!
- -p: 포트예요 컨테이너는 현재 내 pc 내부에서 가동될 것이기 때 내 호스트 pc 아이피에 6080으로 접속시도할 경우 컨테이너 80 포트로 연결하겠다는 이야기예요!
- -v /dev/shm:/dev/shm: 이 옵션은 호스트의 /dev/shm 디렉터리를 컨테이너 내부의 /dev/shm 디렉터리로 연결하여 메모리 공유를 설정하는 역할이에요
- --name: 은 도커에 닉네임을 주어서 쉽게 관리할 수 있도록 라벨링을 한 거라고 생각하시면 돼요!
- dorowu/ubuntu-desktop-lxde-vnc :는 이미지 이름이에요! 이미지 이름은 맨 마지막에 붙여요
docker run -d -p 6080:80 -v /dev/shm:/dev/shm --name vbox1 dorowu/ubuntu-desktop-lxde-vnc
docker run -d -p 6081:80 -v /dev/shm:/dev/shm --name vbox2 dorowu/ubuntu-desktop-lxde-vnc
docker run -d -p 6082:80 -v /dev/shm:/dev/shm --name vbox3 dorowu/ubuntu-desktop-lxde-vnc
5. 컨테이너 실행 확인하기
docker ps
6. 컨테이너 접속하기
만약 우분투 데스크톱을 이용해서 접속을 시도하고 있다면 http://127.0.0.1:6080과 같이 위에서 설정한 port로 접속 시도를 해주면 되고요!, 다른 pc에서 접속하시려면 도커를 연 ip ( 예시 http://192.168.0.139:6080)처럼 접속하시면 돼요 :)
7. 완료된 모습
5. 도커 이미지와 레지스트리
도커 이미지는 도커 허브(Docker Hub)와 같은 레지스트리에 저장되며, 다른 사용자와 공유할 수 있습니다. 이미지 버전 관리를 통해 여러 환경에서 동일한 이미지를 사용하고 업데이트할 수 있습니다. 또한, 커스텀 이미지를 생성하여 애플리케이션 및 환경을 정확히 제어할 수 있습니다.
6. 도커와 미래: 컨테이너 생태계의 발전
도커는 지속적인 발전을 거듭하며 컨테이너 생태계를 확장하고 있습니다. 다양한 컨테이너 오케스트레이션 툴과 연계하여 복잡한 애플리케이션 환경을 효율적으로 관리할 수 있습니다. 또한, 보안과 성능 최적화를 위한 다양한 기능들이 지속적으로 개발되고 있습니다. 또한 컨테이너기술은 한번 배워두면 정말 쓸 곳도 많고 여러 환경을 테스트할 수 있다는 장점을 가졌어요! IT 종사자라면 한 번쯤은 도커를 사용해 보는 걸 추천드려요!
자주 묻는 질문
Q: 도커 이미지를 공유하는 방법은 무엇인가요?
A: 도커 허브와 같은 이미지 레지스트리에 이미지를 업로드하여 다른 사용자와 공유할 수 있습니다.
Q: 도커 컨테이너 간 통신은 어떻게 이루어지나요?
A: 도커 네트워크를 설정하여 컨테이너 간 통신을 할 수 있으며, 컨테이너의 IP 주소를 이용하여 통신합니다.
Q: 도커 컴포즈의 주요 장점은 무엇인가요?
A: 도커 컴포즈는 복잡한 멀티 컨테이너 애플리케이션을 단순한 설정 파일로 관리할 수 있게 해 줍니다.
Q: 도커와 가상 머신의 차이점은 무엇인가요?
A: 도커는 호스트의 리눅스 커널을 공유하여 가볍고 빠르게 컨테이너를 실행하는 반면, 가상 머신은 완전히 독립된 운영체제를 가상화하여 실행합니다.
Q: 도커를 사용하면 어떤 이점을 얻을 수 있나요?
A: 도커를 사용하면 환경 일관성, 빠른 배포, 확장성, 격리된 환경 등 다양한 이점을 얻을 수 있습니다.
이제 도커의 중요성과 활용에 대해 이해하셨을 것입니다. 도커는 현대 소프트웨어 개발과 배포를 혁신적으로 변화시키는 핵심 도구입니다. 컨테이너 가상화의 혁신을 경험해 보세요!
'리눅스 > 리눅스 기초 과정' 카테고리의 다른 글
보안관제를 위한 필수 지식: 네트워크 트래픽 모니터링 (108) | 2023.08.27 |
---|---|
고스트 프로세스? 리눅스의 숨겨진 위협, 좀비 프로세스에 대처법 (56) | 2023.08.03 |
리눅스 업무 자동화 - 효율적인 업무처리 쉘 스크립트 편 (28) | 2023.08.01 |
리눅스 su username 와 su - username 명령어: 어떤 것을 사용해야 할까요? (22) | 2023.07.30 |
리눅스 서버 운영의 기본 - 로그 관리 방법 (43) | 2023.07.29 |