| 
					
				 | 
			
			
				@@ -1,19 +1,49 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # container-run 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Сервис запускающий контейнер. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Образ, обеспечивающий функционал сервиса для классического docker контейнера. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Полезно, когда необходимо обеспечить функционал сервиса для привилегированного контейнера. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-docker run  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Создание сервиса. Вместо `docker run`, как при создании контейнера следует использовать `docker service create --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --name <имя-сервиса> dev-registry.infoclinica.ru:5000/container_run:1`   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Пример создания сервиса для контейнера **nginx-gost**: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker service create \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --name nginx-gost dev-registry.infoclinica.ru:5000/container_run:1 \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -p 443:443 -p 80:80 --network=proxy \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --privileged --security-opt seccomp=unconfined \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --tmpfs /run --tmpfs /run/lock \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "ADMIN_LAB=dev-admin-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "ADMIN_WEB=dev-admin-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "NODE_LAB=node-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "NODE_WEB=node-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dev-registry.infoclinica.ru:5000/nginx-gost:10 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Так как параметры рабочего контейнера переданы как "командная строка" сервиса, то обновлять версию образа рабочего контейнера нужно через изменение "командной строки" при помощи директивы `--args` команды `docker service update`. Пример изменения версии nginx-gost:10 на nginx-gost:11 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker service update \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --args "-p 443:443 -p 80:80 --network=proxy \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --privileged --security-opt seccomp=unconfined \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      --tmpfs /run --tmpfs /run/lock \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "ADMIN_LAB=dev-admin-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "ADMIN_WEB=dev-admin-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "NODE_LAB=node-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      -e "NODE_WEB=node-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dev-registry.infoclinica.ru:5000/nginx-gost:11" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      nginx-gost 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-docker service create \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				---mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				---name nginx-gost dev-registry.infoclinica.ru:5000/container_run:1 \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--p 443:443 -p 80:80 --network=proxy \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				---privileged --security-opt seccomp=unconfined \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				---tmpfs /run --tmpfs /run/lock \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--v /sys/fs/cgroup:/sys/fs/cgroup:ro \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--e "ADMIN_LAB=dev-admin-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--e "ADMIN_WEB=dev-admin-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--e "NODE_LAB=node-lab.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				--e "NODE_WEB=node-web.infoclinica.lan" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-dev-registry.infoclinica.ru:5000/nginx-gost:11 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Для отката изменений до предыдущего состояния, достаточно стандартной команды: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker service rollback nginx-gost 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Для увеличения количества запущенных копий, достаточно стандартной команды: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker service scale nginx-gost=3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Чтобы удалить контейнер с службой, достаточно: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docker service rm nginx-gost 
			 |