반응형
SMALL
Swarm Service
- 서비스
- 컨테이너 하나 이상의 묶음 단위가 서비스
- **
서비스(service)
용어 **docker-compose
파일 &swarm
에서의 service- 컨테이너들이 모이면 서비스
- 생성하고자 하는 컨테이너 항목들
- service 아래 항목들은 하나하나의 컨테이너임
- 멀티호스트인데 서비스가 별로 많지 않을 때 사용
Kubernetes
에서의 service- 호스트가 여러개일 때 각각의 호스트 네트워크를 묶어주는 것
- 멀티호스트인데 서비스가 많을 때 사용
13.1 관련 명령어
service 나 stack은 스웜 상태에서만 사용 가능
(스웜 형성된 컨테이너 안에 들어가서만 사용 가능하다는 뜻)
- 서비스 목록 확인
$ docker service ls
- 스택 목록 확인
$ docker stack ls
- 스웜 클러스터 형성 확인
$ docker node ls
- 스웜 상태 확인
$ docker info
Swarm: active
## active 인 것 확인
13.2 서비스(service) 만들기
- 매니저에서
docker service create
- 서비스도 하나의 컨테이너지
- 컨테이너 하나면 그것도 서비스니까 .. got it?
- 서비스도 하나의 컨테이너지
매니저
$ docker service create --replicas 1 --publish 8000:8080 --name myregistry registry:5000/registry:latest
mzu6e4ogzfpg0netk41i48n0v
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
$
- --replicas 1
- 서비스도 복제가 가능하기에 이 옵션이 존재
- 동시에 여러 개의 서비스가 작동되게 가능하다는 것
- 1개 더 복제하겠다.
- 서비스도 복제가 가능하기에 이 옵션이 존재
- --publish
- 외부 도커에서 접근 가능하게 포트를 지정할거라는 뜻
- 외부 도커 8000으로 요청이 들어오면 8080으로 토스
- --name
- 서비스의 이름 지정
- 이미지
- registry 컨테이너에 등록해 둔 이미지 사용
13.3 실습
이미지 gihyodocker/echo:latest
- localhost:5050/example/echo:latest 이름으로 tag 생성
- 도커 레지스트리 registry:5050에 추가(push)
- manager에서 service 생성
- replicas > 1개
- name > echo
13.3.1 이미지 내려받기
윈도우 스웜 폴더에서
$ docker pull gihyodocker/echo:latest
13.3.2 태그 생성
$ docker tag gihyodocker/echo:latest localhost:5050/example/echo:latest
13.3.3 도커 레지스트리(dind)에 이미지 올리기
$ docker push localhost:5050/example/echo:latest
13.3.4 웹브라우저 확인
localhost:5050
13.3.5 서비스 만들기
- 매니저에 접속 후
- 주의! dind 에서는 localhost 접근 불가
- dind 끼리 접근해야 함 (registry:5050)
- 주의! dind 에서는 localhost 접근 불가
매니저
$ docker service create --replicas 1 --publish 80:8080 --name echo registry:5050/example/echo:latest
13.3.6 서비스 확인
- 서비스 잘 만들어졌는지 확인
$ docker service ls
13.3.7 웹브라우저 확인
localhost:8000
그림 넣기
** 서비스 삭제하기
$ docker service rm <서비스ID>
13.4 컨테이너 프로세스 정보
명령어 별 나오는 정보가 다름
- 현재 접속 중인 컨테이너를 감싸고 있는 컨테이너(dind)의 정보
- NODE
- bbba929897c1
- 즉, echo 컨테이너를 감싸고 있는 dind 컨테이너의 ID
- bbba929897c1
- NODE
$ docker service ps <컨테이너이름>
dind - echo
$ docker service ps echo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xdpebdciv7sk echo.1 registry:5000/example/echo:latest bbba929897c1 Running Running 6 minutes ago
- 현재 접속 중인 컨테이너(echo)의 정보
- CONTAINER ID
- 45f7f3857a7c
- 즉, echo 컨테이너의 ID
- 45f7f3857a7c
- CONTAINER ID
dind - echo
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45f7f3857a7c registry:5000/example/echo:latest "go run /echo/main.go" 9 minutes ago Up 9 minutes echo.1.xdpebdciv7sknrwhwynptxo1m
13.5 서비스 확장 & 축소
- 서비스 확장 시키기
매니저
$ docker service scale <서비스이름>=<개수>
$ docker service scale echo=3
## create 할 때 --replicas 1 이였던 걸 3으로 변경하게 됨
ID NAME MODE REPLICAS IMAGE PORTS
yfdstgo1025w echo replicated 3/3 registry:5000/example/echo:latest *:80->8080/tcp
## 3/3 확인
$ docker service ps echo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xdpebdciv7sk echo.1 registry:5000/example/echo:latest bbba929897c1 Running Running 25 minutes ago
ju00s41jpzdz echo.2 registry:5000/example/echo:latest bbba929897c1 Running Running about a minute ago
igyy2xmfx40h echo.3 registry:5000/example/echo:latest bbba929897c1 Running Running about a minute ago
- echo 컨테이너를 감싸고 있는 dind 컨테이너는 랜덤 배정
- 위 상황에서는 모두 bbba929897c1 (매니저) 컨테이너에 설치되었다는 뜻
- 서비스 축소 시키기
- 그냥 숫자 줄이면 됨
$ docker service scale echo=2
13.6 서비스 종료
$ docker service rm <서비스명>
- 서비스명
- docker service ls 해서 나온 이름
13.7 서비스 안 컨테이너 이름
(1) 서비스 만들 때 붙인 이름
(2) 서비스 아래 컨테이너 이름
(3) 여러 개면 숫자
(1)_(2).(3)
- todo_nginx.1
반응형
LIST
'Docker' 카테고리의 다른 글
[Docker] 도커 Visualizer 사용하는 방법 (0) | 2020.04.04 |
---|---|
[Docker] 스택(stack) 이용하기 (0) | 2020.04.03 |
[Docker] Swarm / DinD 실습 - registry 컨테이너 (0) | 2020.03.30 |
[Docker] 스웜이란? (What is Docker Swarm?) / 도커 인 도커 (DinD) (0) | 2020.03.29 |
[Docker] 도커 네트워크 종류 (0) | 2020.03.28 |