{"id":55,"date":"2018-10-13T16:19:32","date_gmt":"2018-10-13T13:19:32","guid":{"rendered":"https:\/\/artem.services\/?p=55"},"modified":"2019-04-16T11:24:15","modified_gmt":"2019-04-16T08:24:15","slug":"docker-swarm-over-tls","status":"publish","type":"post","link":"https:\/\/artem.services\/?p=55","title":{"rendered":"Docker Swarm over TLS"},"content":{"rendered":"<p><img loading=\"lazy\" class=\"size-full wp-image-27 aligncenter\" src=\"https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo.png\" alt=\"\" width=\"1800\" height=\"531\" srcset=\"https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo.png 1800w, https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo-300x89.png 300w, https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo-768x227.png 768w, https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo-1024x302.png 1024w, https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo-954x281.png 954w, https:\/\/artem.services\/wp-content\/uploads\/2018\/10\/Docker-Logo-1354x399.png 1354w\" sizes=\"(max-width: 1800px) 100vw, 1800px\" \/><\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0435\u0441\u0442\u044c 3 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u043d\u0435\u043c <strong>Docker<\/strong>. \u0415\u0441\u043b\u0438 \u0434\u043e\u043a\u0435\u0440 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 <a href=\"https:\/\/artem.services\/?p=22\" target=\"_blank\" rel=\"noopener noreferrer\">\u0442\u0443\u0442.<\/a><\/p>\n<p>\u0411\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0438 \u0434\u0432\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0430:<\/p>\n<p><strong>Master<\/strong> &#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 (IP: 1.1.1.1)<br \/>\n<strong>Slave_1<\/strong> &#8212; \u0432\u043e\u0440\u043a\u0435\u0440 (IP: 1.1.2.1)<br \/>\n<strong>Slave_2<\/strong> &#8212; \u0432\u043e\u0440\u043a\u0435\u0440 (IP: 1.1.2.2)<\/p>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Docker Swarm: <strong>2376<\/strong> \u0438 <strong>2377<\/strong> (TCP). \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0440\u043e\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u043d\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Docker Swarm<\/h3>\n<p>\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 <strong>Master<\/strong> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker swarm init --advertise-addr 1.1.1.1\r\n<\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430:<\/p>\n<pre>Swarm initialized: current node (ssmj2qyqxejd72p6sa9jinnza) is now a manager.\r\n\r\nTo add a worker to this swarm, run the following command:\r\n\r\ndocker swarm join \\\r\n--token SWMTKN-1-3qg9vovt2mxyfu1dfj2nocmkzd3i351z1z0aapd9jxxu7mafff-93r77xv8mrqsgfkf9nei902zk \\\r\n1.1.1.1:2377\r\n\r\nTo add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.<\/pre>\n<p>\u0420\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0440\u043e\u044e \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker info\r\n<\/pre>\n<p><!--more--><\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 \u0432 \u0440\u043e\u0439, \u0434\u043b\u044f \u044d\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 <strong>Slave_1<\/strong> \u0438 <strong>Slave_2<\/strong> \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0430\u043d\u043d\u0435\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0440\u043e\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 <strong>Master<\/strong>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker swarm join \\\r\n--token SWMTKN-1-3qg9vovt2mxyfu1dfj2nocmkzd3i351z1z0aapd9jxxu7mafff-93r77xv8mrqsgfkf9nei902zk \\\r\n1.1.1.1:2377\r\n<\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<pre>This node joined a swarm as a worker.<\/pre>\n<p>\u041d\u0430 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0440\u043e\u044f (\u0441\u0435\u0440\u0432\u0435\u0440 <strong>Master<\/strong>) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043d\u043e\u0434 \u0432 \u0440\u043e\u0435:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker node ls\r\n<\/pre>\n<p>\u0412\u0441\u0435, Docker Swarm \u043f\u043e\u0434\u043d\u044f\u0442, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b.<\/p>\n<h3>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/h3>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 <strong>Master<\/strong>.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 <strong>CA<\/strong> \u043a\u043b\u044e\u0447:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl genrsa -aes256 -out ca-key.pem 4096\r\n<\/pre>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c <strong>pass phrase<\/strong>, \u044d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 CA \u043a\u043b\u044e\u0447:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem\r\n<\/pre>\n<p>\u0422\u0443\u0442 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 <strong>FQDN<\/strong> \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <strong>Master<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl genrsa -out server-key.pem 4096\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c <strong>SSL<\/strong> \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl req -subj &quot;\/CN=SERVER_MASTER_FQDN&quot; -sha256 -new -key server-key.pem -out server.csr\r\n<\/pre>\n<p>\u0413\u0434\u0435 <strong>SERVER_MASTER_FQDN<\/strong> &#8212; FQDN \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <strong>Master<\/strong><\/p>\n<p>\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f, <strong>IP<\/strong> \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\necho subjectAltName = DNS:SERVER_MASTER_FQDN,IP:1.1.1.1,IP:127.0.0.1 &gt;&gt; extfile.cnf\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \\\r\n-CAcreateserial -out server-cert.pem -extfile extfile.cnf\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u043e\u043a\u0435\u0440\u0443:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl genrsa -out key.pem 4096\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0436\u0435\u043c \u0442\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 \u2014 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl req -subj '\/CN=client' -new -key key.pem -out client.csr\r\necho extendedKeyUsage = clientAuth &gt;&gt; extfile.cnf\r\n<\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nopenssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf\r\n<\/pre>\n<p>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nrm -v client.csr server.csr\r\n<\/pre>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nchmod -v 0400 ca-key.pem key.pem server-key.pem\r\nchmod -v 0444 ca.pem server-cert.pem cert.pem\r\n<\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 <strong>TLS<\/strong>. \u0415\u0441\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u0434\u043e\u043a\u0435\u0440\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430, \u0442\u043e \u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem \\\r\n-H=0.0.0.0:2376\r\n<\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u0438 <strong>TLS<\/strong> \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043a\u0435\u0440\u0430, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e <a href=\"https:\/\/artem.services\/?p=50\">\u0442\u0443\u0442.<\/a><\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmkdir \/etc\/docker\/certs\r\n<\/pre>\n<p>\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0444\u0430\u0439\u043b\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 <strong>Master<\/strong>:<\/p>\n<pre>ca.pem\r\ncert.pem\r\nkey.pem<\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0435\u043c\u043e\u043d \u0434\u043e\u043a\u0435\u0440\u0430, \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0447\u0442\u043e <strong>cert<\/strong> \u0438 <strong>key<\/strong> \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0440\u0430\u0437\u043d\u044b\u0435. server-cert.pem \u0438 cert.pem, server-key.pem \u0438 key.pem<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0435\u043c\u043e\u043d\u0430 \u0434\u043e\u043a\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0435:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=1.1.1.1:2376 version\r\n<\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u0435\u0440\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0430, \u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u0435\u0440\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0412\u0441\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <strong>Docker Swarm<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <strong>TLS<\/strong>. \u041f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443, \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443 \u0432 \u0440\u043e\u0435, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0435\u0441\u0442\u044c 3 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u043d\u0435\u043c Docker. \u0415\u0441\u043b\u0438 \u0434\u043e\u043a\u0435\u0440 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0442\u0443\u0442. \u0411\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0438 \u0434\u0432\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u0430: Master &#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 (IP: 1.1.1.1) Slave_1 &#8212; \u0432\u043e\u0440\u043a\u0435\u0440 (IP: 1.1.2.1) Slave_2 &#8212; \u0432\u043e\u0440\u043a\u0435\u0440 (IP: 1.1.2.2) \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Docker Swarm: 2376 \u0438 2377 (TCP). \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u0440\u043e\u044f \u0431\u0443\u0434\u0443\u0442 &hellip; <a href=\"https:\/\/artem.services\/?p=55\" class=\"more-link\">\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u044c<span class=\"screen-reader-text\"> &quot;Docker Swarm over TLS&quot;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,3],"tags":[5,4,7,8,6],"_links":{"self":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/55"}],"collection":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=55"}],"version-history":[{"count":20,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":1016,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions\/1016"}],"wp:attachment":[{"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}