docker service
ls
create
# Create a service
docker service create <image>
docker service create --replicas 3 alpine ping 8.8.8.8
docker service create --name psql --network mydrupal -e POSTGRES_PASSWORD=mypass postgres
docker service create --name drupal --network mydrupal -p 80:80 drupal
docker service create --name search --replicas 3 -p 9200:9200 elasticsearch:2 # If ping on localhost, each time it will fall to a different node. It's the load balances
# Named volume
docker service create \
--name db \
--network backend \
-e POSTGRES_PASSWORD=mypass \
--mount type=volume,source=db-data,target=/var/lib/postgresql/data \
postgres:9.4
# Service with secret
docker service create \
--name psql \
--secret psql_user \
--secret psql_pass \
-e POSTGRES_PASSWORD_FILE=/run/secrets/psql_pass \
-e POSTGRES_USER_FILE=/run/secrets/psql_user \
postgres
rm
docker service rm <service>
ps
- Show tasks for the service
- The tasks show in which node they are run. If a task fails, swarm will automatically create a new one
docker service ps <service>
inspect
docker service inspect <service>
logs
docker service logs <service>
update
docker service update --replicas <number> <service>
docker service update --secret-rm <service>
docker service update --image <image> <service>
docker service update --publish-rm <port> --publish-add <port>:<port-virt> <service> # Change ports
docker service update --env-add <var> <service>
docker service update --force <service> # Replace the tasks!
scale
- Scale up multiple services
docker service scale <service1>=<replicas1> <service2>=<replicas2>