덤불 스택을 만들어 웜에 배포했습니다. 이제는 실제 서버에 배포하는 방법이 어떻게 보이는지 혼란 스럽습니다. 물론원격 도커 호스트에 연결/스택 배포
나는
scp
노드에 내 떼ssh
의 노드 내docker-stack.yml
파일은- 실행 그래서 내가 생각
docker-machine
도구가docker stack deploy -c docker-stack.yml stackname
수 있습니다 . 나는
만이 TLS없이 포트를 열면 작동하는 것 같다 무엇docker-machine -d none --url=tcp://<RemoteHostIp>:2375 node1
를 시도? 나는 다음과 같은 수신 :
$ docker-machine env node1
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.178.49:2375": dial tcp 192.168.178.49:2375: connectex: No connection could be made because the target machine actively refused it.
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which might stop running containers.
이미 인증서를 생성하기 위해 노력 & 호스트에 걸쳐 복사
ssh-keygen -t rsa
ssh-copy-id [email protected]
그럼 내가 다음과 같은 결과로
docker-machine --tls-ca-cert PathToMyCert --tls-client-cert PathToMyCert create -d none --url=tcp://192.168.178.49:2375 node1
를 실행 :
$ docker-machine env node1
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "node1:2375": There was an error reading certificate
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which might stop running containers.
,451,515,
나는 또한 일반 드라이버 내가 TLS 제대로 고정 표시기 기계와 원격 고정 표시기 호스트를 추가하려면 어떻게
$ docker-machine create -d generic --generic-ssh-port "22" --generic-ssh-user "MyRemoteUser" --generic-ip-address 192.168.178.49 node1
Running pre-create checks...
Creating machine...
(node1) No SSH key specified. Assuming an existing key at the default location.
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Error creating machine: Error detecting OS: OS type not recognized
와 그것을 시도? 또는 스택을 서버/프로덕션 환경에 배포하는 더 좋은 방법이 있습니까?
나는 항해자의 항구를 드러내지 말고 한 번 해보지 말아야한다고 종종 읽는다. 그리고 나는 그들이 이것을 할 수있는 간단한 방법을 제공하지 않는다고 믿을 수 없다.
업데이트 & 솔루션
나는 모두 답변 자격이 있다고 생각. Deploy to Azure Offical Doc을 찾았습니다 (AWS와 동일합니다). @ Tarun Lalwani의 답은 올바른 방향으로 나를 가리키며 거의 공식적인 해결책입니다. 그 이유는 내가 그의 대답을 받아 들였기 때문이다. 나를 위해
는 다음 명령을했다 :
ssh -fNL localhost:2374:/var/run/docker.sock [email protected]
그런 다음 중 하나를 실행할 수 있습니다
docker -H localhost:2374 stack deploy -c stack-compose.yml stackname
또는
DOCKER_HOST=localhost:2374
docker stack deploy -c stack-compose.yml stackname
이
@BMitch에서 대답은 또한 유효하고 안전하다 그가 언급 한 우려는 무시되어서는 안된다.
업데이트 2
@bretf의 대답은 당신의 떼에 연결하는 멋진 방법입니다. 특히 둘 이상이있는 경우. 아직 베타 버전이지만 인터넷에서 사용할 수 있으며 ARM 아키텍처를 보유하지 않은 스웜에 사용할 수 있습니다.
명령이 작동하지 않지만 그들은 올바른 방향으로 나를 가리켰다. [Docker Doku] (https://docs.docker.com/docker-for-azure/deploy/#connecting-to-your-manager-nodes-using-ssh)를 찾았습니다. 나를 위해 일했다 :'ssh -p 22 -fNL localhost : 2374 : /var/run/docker.sock myuser @ node1'을'docker -H localhost : 2374 ps' 또는'DOCKER_HOST'로 설정 – pr177
2375 포트 설정을 시도했을 때 , 당신이 이미'127.0.0.1 : 2375'를 당신의 도커 데몬 설정에 노출 시켰다고 가정했습니다. 아직 그 일을하지 않았으므로 소켓에 트래픽을 매핑해야합니다. –