Docker swarm으로 서비스 시작 & 커서 설정 시도
개요
swarm에서nginx 서비스를 실행하는 동시에
입찰을 시험해 보다.
명령 목록
명령하다
컨텐트
docker service create
새 서비스 시작
docker service scale
기존 서비스의 범위를 좁히다
docker service ls
swarm 그룹에서 실행되는 서비스 목록을 표시합니다
docker service ps
서비스에 포함된 작업(컨테이너) 목록 표시
docker service rm
서비스 삭제
이번에 주로 사용된 지령은 전반부의 두 개가 있다.
새 서비스 시작
새 서비스 시작 (nginx 서비스)docker service create -p 80:80 --name="nginx_sample" --replicas=3 nginx
swarm 노드의 TCP 80(HTTP) 및 nginxSample 서비스의 TCP 80(HTTP)을 연결합니다.
nginx 이미지도 TCP 443호(HTTPS)를 사용할 수 있지만 이번에는 샘플을 위해 설정하지 않았다.
시작 중 확인
시작 중인 서비스 상태docker service ls
ID NAME REPLICAS IMAGE COMMAND
8ejer8lok06o nginx_sample 0/3 nginx
리플리카 값이 0/3이어서 컨테이너를 아직 가동하지 않았다.
시작 중인 서비스 작업(컨테이너) 상태docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
6tns1opze4dtzjdq7la1rgpvj nginx_sample.1 nginx ubuntu-001 Running Preparing 25 seconds ago
ei2hww2pdqo4rd114d6sl0tvn nginx_sample.2 nginx ubuntu-002 Running Preparing 25 seconds ago
b9tvhzi6ln5hcjhnsia6y5uyp nginx_sample.3 nginx ubuntu-003 Running Preparing 25 seconds ago
DESIRED STATE는 런닝이고, CURRENT STATE는 Preptaring이기 때문이다.
아직 시동이 걸리지 않았다.
자세한 내용은 서비스 이름으로 확인할 수 있습니다.
서비스에 대한 자세한 정보 가져오기 (inspect)docker service inspect nginx_sample
[
{
"ID": "1uzck4r361lxi8u3zyaqa6zhf",
"Version": {
"Index": 91
},
"CreatedAt": "2016-08-13T14:47:54.266023526Z", # 作成が指示された時刻
"UpdatedAt": "2016-08-13T14:47:54.269125202Z", # 更新は行っていないのでCreatedAtに等しい
"Spec": {
"Name": "nginx_sample",
"TaskTemplate": {
"ContainerSpec": {
"Image": "nginx"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {}
},
"Mode": {
"Replicated": {
"Replicas": 3 # 指定したレプリカ数
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
},
"Ports": [ # 指定したポートがオープンされている
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
],
"VirtualIPs": [
{
"NetworkID": "27szphefusnj2bdpq0itpfpat",
"Addr": "10.255.0.6/16"
}
]
},
"UpdateStatus": {
"StartedAt": "0001-01-01T00:00:00Z", #サービスが起動中の場合、ここが空に等しいような値になっている
"CompletedAt": "0001-01-01T00:00:00Z"
}
}
]
주의점
Docker Hub과 같은 네트워크에서 이미지를 가져오려면
각 노드가 동시에 인터넷에 접속하기 때문에 네트워크 데이터에 주의해야 한다.
부팅 후 확인
세 개의 Docker 호스트 중 어느 것을 방문하든nginx의 시작 화면을 표시합니다.
서비스가 시작된 상태docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 3/3 nginx
REPLICAS는 3/3이며, 묶음에서 지정한 대로 3개의nginx 용기를 시작합니다.
서비스 내 작업(컨테이너)이 시작된 상태docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Running Running 8 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Running Running 8 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 8 minutes ago
노드마다 하나씩nginx 용기를 시작합니다.
시작 후 전체 이미지
서비스 비율 변경
컨테이너 3대가 필요 없다는 것을 알아차렸기 때문에 먼저 입찰을 정했다.
설명은 컨테이너나 노드에서 액세스할 수 있습니다.
서비스 커서 (3개 용기->1개 용기)docker service scale nginx_sample=1
nginx_sample scaled to 1
복사본(REPLICA) 수를 3에서 1로 변경합니다.
줌 결과 확인
ls를 통해 확인docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 1/1 nginx
REPLICA의 값은 1/1입니다.
ps를 통해 확인docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Shutdown Shutdown 2 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Shutdown Shutdown 2 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 15 hours ago
ubuntu-002(192.168.1.26), ubuntu-003(192.168.1.29)에서 운행하던 컨테이너가 정지됐다.
nginx의 컨테이너 사태는 ubuntu-001(192.168.1.27)이지만
ubuntu-002/ubuntu-003에 접근하는 어느 것이든nginx 컨테이너로 연결됩니다.
이는 Ingress가 네트워크를 덮어쓰는 덕분입니다.
확대/축소된 전체 이미지
총결산
명령하다
컨텐트
docker service create
새 서비스 시작
docker service scale
기존 서비스의 범위를 좁히다
docker service ls
swarm 그룹에서 실행되는 서비스 목록을 표시합니다
docker service ps
서비스에 포함된 작업(컨테이너) 목록 표시
docker service rm
서비스 삭제
이번에 주로 사용된 지령은 전반부의 두 개가 있다.
새 서비스 시작
새 서비스 시작 (nginx 서비스)docker service create -p 80:80 --name="nginx_sample" --replicas=3 nginx
swarm 노드의 TCP 80(HTTP) 및 nginxSample 서비스의 TCP 80(HTTP)을 연결합니다.
nginx 이미지도 TCP 443호(HTTPS)를 사용할 수 있지만 이번에는 샘플을 위해 설정하지 않았다.
시작 중 확인
시작 중인 서비스 상태docker service ls
ID NAME REPLICAS IMAGE COMMAND
8ejer8lok06o nginx_sample 0/3 nginx
리플리카 값이 0/3이어서 컨테이너를 아직 가동하지 않았다.
시작 중인 서비스 작업(컨테이너) 상태docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
6tns1opze4dtzjdq7la1rgpvj nginx_sample.1 nginx ubuntu-001 Running Preparing 25 seconds ago
ei2hww2pdqo4rd114d6sl0tvn nginx_sample.2 nginx ubuntu-002 Running Preparing 25 seconds ago
b9tvhzi6ln5hcjhnsia6y5uyp nginx_sample.3 nginx ubuntu-003 Running Preparing 25 seconds ago
DESIRED STATE는 런닝이고, CURRENT STATE는 Preptaring이기 때문이다.
아직 시동이 걸리지 않았다.
자세한 내용은 서비스 이름으로 확인할 수 있습니다.
서비스에 대한 자세한 정보 가져오기 (inspect)docker service inspect nginx_sample
[
{
"ID": "1uzck4r361lxi8u3zyaqa6zhf",
"Version": {
"Index": 91
},
"CreatedAt": "2016-08-13T14:47:54.266023526Z", # 作成が指示された時刻
"UpdatedAt": "2016-08-13T14:47:54.269125202Z", # 更新は行っていないのでCreatedAtに等しい
"Spec": {
"Name": "nginx_sample",
"TaskTemplate": {
"ContainerSpec": {
"Image": "nginx"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {}
},
"Mode": {
"Replicated": {
"Replicas": 3 # 指定したレプリカ数
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
},
"Ports": [ # 指定したポートがオープンされている
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
],
"VirtualIPs": [
{
"NetworkID": "27szphefusnj2bdpq0itpfpat",
"Addr": "10.255.0.6/16"
}
]
},
"UpdateStatus": {
"StartedAt": "0001-01-01T00:00:00Z", #サービスが起動中の場合、ここが空に等しいような値になっている
"CompletedAt": "0001-01-01T00:00:00Z"
}
}
]
주의점
Docker Hub과 같은 네트워크에서 이미지를 가져오려면
각 노드가 동시에 인터넷에 접속하기 때문에 네트워크 데이터에 주의해야 한다.
부팅 후 확인
세 개의 Docker 호스트 중 어느 것을 방문하든nginx의 시작 화면을 표시합니다.
서비스가 시작된 상태docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 3/3 nginx
REPLICAS는 3/3이며, 묶음에서 지정한 대로 3개의nginx 용기를 시작합니다.
서비스 내 작업(컨테이너)이 시작된 상태docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Running Running 8 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Running Running 8 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 8 minutes ago
노드마다 하나씩nginx 용기를 시작합니다.
시작 후 전체 이미지
서비스 비율 변경
컨테이너 3대가 필요 없다는 것을 알아차렸기 때문에 먼저 입찰을 정했다.
설명은 컨테이너나 노드에서 액세스할 수 있습니다.
서비스 커서 (3개 용기->1개 용기)docker service scale nginx_sample=1
nginx_sample scaled to 1
복사본(REPLICA) 수를 3에서 1로 변경합니다.
줌 결과 확인
ls를 통해 확인docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 1/1 nginx
REPLICA의 값은 1/1입니다.
ps를 통해 확인docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Shutdown Shutdown 2 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Shutdown Shutdown 2 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 15 hours ago
ubuntu-002(192.168.1.26), ubuntu-003(192.168.1.29)에서 운행하던 컨테이너가 정지됐다.
nginx의 컨테이너 사태는 ubuntu-001(192.168.1.27)이지만
ubuntu-002/ubuntu-003에 접근하는 어느 것이든nginx 컨테이너로 연결됩니다.
이는 Ingress가 네트워크를 덮어쓰는 덕분입니다.
확대/축소된 전체 이미지
총결산
docker service create -p 80:80 --name="nginx_sample" --replicas=3 nginx
docker service ls
ID NAME REPLICAS IMAGE COMMAND
8ejer8lok06o nginx_sample 0/3 nginx
docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
6tns1opze4dtzjdq7la1rgpvj nginx_sample.1 nginx ubuntu-001 Running Preparing 25 seconds ago
ei2hww2pdqo4rd114d6sl0tvn nginx_sample.2 nginx ubuntu-002 Running Preparing 25 seconds ago
b9tvhzi6ln5hcjhnsia6y5uyp nginx_sample.3 nginx ubuntu-003 Running Preparing 25 seconds ago
docker service inspect nginx_sample
[
{
"ID": "1uzck4r361lxi8u3zyaqa6zhf",
"Version": {
"Index": 91
},
"CreatedAt": "2016-08-13T14:47:54.266023526Z", # 作成が指示された時刻
"UpdatedAt": "2016-08-13T14:47:54.269125202Z", # 更新は行っていないのでCreatedAtに等しい
"Spec": {
"Name": "nginx_sample",
"TaskTemplate": {
"ContainerSpec": {
"Image": "nginx"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {}
},
"Mode": {
"Replicated": {
"Replicas": 3 # 指定したレプリカ数
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
]
},
"Ports": [ # 指定したポートがオープンされている
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80
}
],
"VirtualIPs": [
{
"NetworkID": "27szphefusnj2bdpq0itpfpat",
"Addr": "10.255.0.6/16"
}
]
},
"UpdateStatus": {
"StartedAt": "0001-01-01T00:00:00Z", #サービスが起動中の場合、ここが空に等しいような値になっている
"CompletedAt": "0001-01-01T00:00:00Z"
}
}
]
docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 3/3 nginx
docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Running Running 8 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Running Running 8 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 8 minutes ago
컨테이너 3대가 필요 없다는 것을 알아차렸기 때문에 먼저 입찰을 정했다.
설명은 컨테이너나 노드에서 액세스할 수 있습니다.
서비스 커서 (3개 용기->1개 용기)
docker service scale nginx_sample=1
nginx_sample scaled to 1
복사본(REPLICA) 수를 3에서 1로 변경합니다.줌 결과 확인
ls를 통해 확인
docker service ls
ID NAME REPLICAS IMAGE COMMAND
1uzck4r361lx nginx_sample 1/1 nginx
REPLICA의 값은 1/1입니다.ps를 통해 확인
docker service ps nginx_sample
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dcdngo5ibombyjuqysst4y3gf nginx_sample.1 nginx ubuntu-003 Shutdown Shutdown 2 minutes ago
bg39i6hrqksfle0xypkpnoouz nginx_sample.2 nginx ubuntu-002 Shutdown Shutdown 2 minutes ago
4nutgpvioz91oyubtjb9lgzq6 nginx_sample.3 nginx ubuntu-001 Running Running 15 hours ago
ubuntu-002(192.168.1.26), ubuntu-003(192.168.1.29)에서 운행하던 컨테이너가 정지됐다.nginx의 컨테이너 사태는 ubuntu-001(192.168.1.27)이지만
ubuntu-002/ubuntu-003에 접근하는 어느 것이든nginx 컨테이너로 연결됩니다.
이는 Ingress가 네트워크를 덮어쓰는 덕분입니다.
확대/축소된 전체 이미지
총결산
Reference
이 문제에 관하여(Docker swarm으로 서비스 시작 & 커서 설정 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyoMa_0923/items/6c9995d21d3a623dc63f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)