2일차
도커 호스트 구성 유스케이스
2일차
독립 된 로컬 개발환경
로컬 설정에 영향을 받지 않는 독립된 개발환경을 구성
Vagrant Docker Machine 을 이용하면 일관된 인터페이스 로 구성이 가능
로컬임에도 불구하고 멀티 서버 환경을 구성할 수 있음 -> 가장 이점이므로 이것을 사용하는 것임
실환경 구성
다른서버에서 도커 서버 설치를하고 다른 서버에서 클라이은트 사용하여 리모트 원격 접속을 가능하게해야한다.
VM에 컨테이너를 몇개를 넣는 것이 맞느냐
싱글 서버 도커 host
물리 서버 1대로 도커 환경
싱글 서버 도커 Host + VM
도커 호스트 클러스터
도커 이미지 백업
도커 이미지를 파일로 저장하고 불러옴
인터넷 연결이 안되서 이미지 다운이 안되는 경우
이미지 크기에 따라 저장/로딩에 시간이 오래 걸림
레지스트리 없이 시용이 가능
이미지를 파일로 복사
컨테이너 내부에 어떤 내부의 데이터도 존재 해서는 안된다 컨테이너를 무상태로 띄워야한다
v옵션으로 바인딩 처리 -> 마운트
데이터 컨테이너
다른컨테이너에 볼륨을 공유하기 위한 컨테이너
Docker Compose
여러개 컨테이너를 동시에 실행하게 해줌
여러개 컨테이너 구성된 어플리케이션을 만들고 관리 할 수 있게 해주는 도구
CLI 기반 인터페이스
docker-compose.yml
단일 서버 기준 -> 단점
다양한 옵션을 정의할 수 있음 -> 매번 옵션을 줄 필요 없음
어플리케이션을 만드는 서비스를 정의하는 yaml 파일
버전별로 작성차이가 있다. 현재 3버전까지 있음
도커 컴포즈 주요 설정 타입
image : 빌드할 이미지 지정
build : 빌드 할 때 적용할 옵션을 설정
links : 다른 서비스에 컨테이너를 연결한다
external-links : 현재 docker-compose.yml 외부에서 시작된 컨테이너를 연결함
ports: vhxmfmf emfjsosek
expose : 호스트바이닏ㅇ 없이 포트를 드러낸다
volumes : 호스트와 컨테이너 특정 패스를 마운트함
volumes_from : 다른 서비스나 컨테이너로 부터 볼륨을 마운트
environment : 환경변수를 정의한다
env_file : 환경벼수를 정의하는 파일을 지정
extends: 다른 서비스 설정을 상속
net : 네트워크 모드
dns : 사설dns 서버를 지정한다
dns_search : 사설 dns 서버를 도메인으로 지정한다
도커컴포즈 주요 명령어
docker-compose up
docker-compose up -d
docker-compose up -d no-create
docker-compose ps
docker-compose down
docker-compose
link의 원리
싱글 호스트에서 가능.
link를 걸면 도커 엔진이 컨테이너 host파일에 필요한정보를 주입시킨다
예제 실행
도커허브
도커 이미지를 push & pull
공식저장소 -> officail 마크
모든 이미지를 믿을 수 없다.
공개저장소는 무료, 비공개 저장소는 유료
레파지토리 당 1개의 이미지
레지스트리
도커이미지를 저장하고 공유할수 있는 서버
오픈소스 , 아파치 라이센스
v1,v2 호환 되지 않음
v2 추천, 브이원 버그 많음
클라우드 이미미 저장소
s3 : aws s3bucket
azure : ms blob starage
swift : Openstack Swift
oss : oss
보안
TLS 적용, 도메인 지원
Let's Encrypt 추천
접근 권한 관리
인증 : nginx 를 활용한 basic auth
api 게이트 등... jwt
이미지 무결성 : ssh 사이닝
팁
네이밍 기준 : 루트 , Repo 명
이미지 데이터 관리 : gc 필요
성능이슈
대용량 레지스트리 (이미지 풀 시간 등, 공간 중요)
분산 레지스트리
토렌토 활용 ??
nexus, docker hub, amazon, 등 / 상용 무료 사용
개발환경 구성
개발에 필요한 도커 도구로 구성해보기
Docker CI Tool Stack
docker-ci 머신생성
docker-ci 머신 연결
github 레파지터리 연결
tool-stack 실행
각 서버에 접속한다
개발을 위한 도구들 ![사진찍기]
GitLab
데이터 저장 위치
/var/opt/gitlab
/var/log/gitlab :로그
/etc/gitlab : 설정정보
80, 443, 22 : 사용 포트
gitlab-ce 실행
gitlab.yml 작성 -> 도커 컴포즈로 실행
Yona
프로젝트 단위로 형상관리 , 이슈 관리, 코드리뷰, 게시판을 지원하는 협업 개발 플랫폼,
요비의 후속
요나 설치
docker run ~
gogs
go로 개발된 git 서비스, 가볍고 빠름
웹콘솔 지원
```bash
데이터
$ docker run --name=gogs-data --entrypoint /bin/true gogs/gogs
실행
$ docker run -d --name=gogs --volumes-from gogs-data -p 10022:22 -p 3000:3000 gogs/gogs ```
nxues
도커 이미지 프록시, maven 레파지토리 대용으로 많이 사용함
nGrinder
서버에 대한 성능 테스틀 ㄷ위한 오픈소스
성능 테스틀 위한 웹 UI
Agent와 Controller
redmine
위키
이슈 관리등 ...
미디어위키
위키미디아
LocalSettings.php -> 위키에 어떻게 적용?
도커 CI 환경구성
github & DockerHub -> 가장 빠름... 그러나 픈해야한다는거
github에 도커 이미지 빌드를 위한 소스 파일추가
DockerHub에서 'Create Automated Build'
github 레파지토리연결
빌드 트리거 실행
Jenkins & Docker
도커 이미지를 빌드.테스트.배포 Jenkins 활용
Jenkins Master Slave를 도커로 실행
일반 : user -> repo -> ci server -> app server deploy
도커 : user -> repo -> ci server (image build) -> registry push ->(pull) Host deploy
war -> 이미지빌드 -> 태깅 -> 레지스트리 푸쉬
DND (Docker in Docker)
Docker 컨테이너가 Docker 명령어를 실행할 수 있게...
Docker 소켓 파일에 대한 접근권한
Docker 클라이언트, 실행 권한
JEnkins blueocean
도커 이미지빌드용 젠킨스 컨테이너 실행
jenkins 암호 입력
docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword
jenkins 콘솔접속
젠킨스 스크립트 작성
General
Github Project : 등록
매개변수 필요시, -> 타입, 키-값 설정 (ex TAG -> latest)
소스코드관리
Git
Git 인증정보 추가 (UsernameAndPassowrd -> 깃유저명, 깃패스워드, 젠킨스 ID), ssh 키 인증이 안전함
빌드
마스터-슬레이브 구성
다양한 환경의 빌드 진행이 가능
오래 거릴는 빌드를 슬레이브에 위임 가능
Jenkins를 여러개 사용하는 것에 빌해 관리가 용이
Jenkins Docker plugin 설치
Jenkins에 cloud 영역을 설정
Docker Template를 추가한다
Slave가 빌드하는 Job을 정의한다
멀티 스테이지 빌드
이미지 빌드의 어려움
컴파일 테스트 패키징 ,etc
도커 이미지 빌드 전에 어플리케이션을 빌드해야함
싱글빌드, 멀티빌드 예
Last updated
Was this helpful?