본 내용은 셀메미트 상품개발 모바일팀에서 진행한 세미나입니다.
Docker에 대해 아주아주! 간단하게 알아보면서 친해지는 시간을 가져보겠습니다.
장황하게 설명하면 머리가 아파서 도망가실 수 있으니 최대한 간단하고 짧게 하겠습니다.
🧐 클라이언트 개발자도 도커를 알아야하는 이유
내가 만든 애플리케이션, 테스트 또는 실사용을 위한 배포를 하려고 하는데 배포 방법을 모른다고요??? 완벽한(?) 애플리케이션을 만들었지만, 세상에 나올 수 없다면 무슨 소용일까요? 따라서 개발자, 클라이언트 개발자라도 배포 전략에 대해 알고 있어야 합니다. 특히 Docker는 배포 전략에서 컨테이너 기술이 주목받으면서 보편적으로 사용하는 오픈 소스 프로젝트입니다.
개발자마다 다른 환경에서 개발할 수 있습니다. 또한, 개발 환경과 운영 환경도 다를 수 있죠. 프로젝트마다 사용하는 버전이 다를 수도 있습니다. 이러한 환경에서도 컨테이너 기술은 구애받지 않고 애플리케이션을 테스트 또는 배포할 수 있다는 장점을 갖고 있습니다.
매력있지않나요?
그럼에도 불구하고 여전히 왜 알아야 하는지 모르겠다면, 필요하다고 생각될 때 다시 펼쳐봅시다.(
다음이시간에-)
🐳 What is Docker
Docker는 에플리케이션을 구축, 테스트 및 배포할 수 있는 컨테이너 기반 가상화 플랫폼입니다.
📦 What is Container
컨테이너는 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지입니다. 이러한 패키지는 운영체제를 가상화하여 어느 환경에서나 실행됩니다.
📦 Why Container
컨테이너를 사용하는 이유
VM보다 가볍다
가상화를 위해서 OS를 포함하여 띄우는 VM과 달리 Container는 엔진 위에 Application 실행에 필요한 바이너리만 올립니다. https://dockerlabs.collabnix.com/beginners/difference-vm-containers.html
책임을 분리할 수 있다
여러 소프트웨어 버전 및 구성으로 실행할 수 있습니다.
운영체제를 가리지 않는다
컨테이너는 어느 환경에서도 구동됩니다. 예를 들어, Gitlab을 배포한다고 가정해 봅시다.
CentOS
1 2 3 4 5 6 7 8 9
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlabee/script.rpm.sh |sudo bash sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
Ubuntu
1 2 3 4 5
sudo apt-get update sudo apt-get install -ycurl openssh-server ca-certificates sudo apt-get install -y postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
OS마다 배포하는 방법이 다릅니다.
하지만, Docker로 배포한다면 어느 환경에서든 같은 방법으로 배포가 가능합니다.
1
docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 \--publish 22:22 --name gitlab \--restart always \--volume /srv/gitlab/config:/etc/gitlab \--volume /srv/gitlab/logs:/var/log/gitlab \--volume /srv/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce:latest
🐳 Let`s Docker
설치
이미지를 만들자!
이미지란?
이미지는 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하고 있는 파일입니다. 즉, 컨테이너를 실행할 수 있는 재료들이 모인 파일입니다.
이미지가 없으면 컨테이너를 실행할 수 없지만, 이미지는 컨테이너 없이 존재할 수 있습니다.
이미지 집합소
Docker hub: 거의 모든 오픈 소스가 여기에 모여있어요!
Private Registry: 나만의 작은 보물 상자
harbor: 이미지 저장, 관리 등을 제공하는 오픈소스
Docker hub에서 이미지 불러오기
|
|
이미지 조회
|
|
컨테이너를 만들자!
위에서 가져온, 또는 생성한 이미지로 아주 간단하게 컨테이너를 생성할 수 있습니다.
|
|
주로 사용하는 옵션
—name
: 컨테이너에 부여하는 이름- -
d
: 백그라운드에서 실행, 해당 옵션이 없으면 인터럽트가 발생할 때 컨테이너는 종료됩니다. - -
e
: 컨테이너의 환경 변수를 설정합니다. - -
p
: 호스트와 컨테이너간의 포트를 설정합니다.배포포트:내부사용포트
- -
v
: 호스트와 컨테이너 간의 볼륨을 설정합니다.호스트볼륨:내부볼륨
예시
|
|
docker hub에서 많이 사용되는 이미지 정보에는 환경변수, 볼륨 설정 등 컨테이너를 생성하는 조건에 대해서 아주 친절하게 설명해 주고 있습니다.
이번 세미나에서는 정말 간단하게 Docker에 대해서 훑어 보았습니다.
모바일팀은 아직 Docker를 직접 사용하고 있지 않지만, 필요한 시점이 왔을 때 오늘 이 시간이 꼭 도움되었길 바랍니다.
혹시 Docker의 다음 버전이 궁금하시다면 귀띔해주세요. 다시 돌아오겠습니다(그땐 졸릴지도 몰라).