|  | ===== | 
|  | Usage | 
|  | ===== | 
|  |  | 
|  | Docker is a platform for developers and system administrators for developing, | 
|  | shipping, and running applications. Docker enables you to quickly assemble | 
|  | applications from components and eliminates the friction that can come when | 
|  | shipping the code. Also, with Docker, you get your code tested and deployed | 
|  | into production as fast as possible. | 
|  |  | 
|  | This file provides the sample configurations for different use cases. | 
|  |  | 
|  | Docker host configuration samples | 
|  | ================================= | 
|  |  | 
|  | * Docker host sample pillar configuration: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | enabled: true | 
|  | options: | 
|  | bip: 172.31.255.1/16 | 
|  | insecure-registries: | 
|  | - 127.0.0.1 | 
|  | - 10.0.0.1 | 
|  | log-driver: json-file | 
|  | log-opts: | 
|  | max-size: 50m | 
|  |  | 
|  | * Proxy configuration for Docker host: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | proxy: | 
|  | enabled: true | 
|  | http: http://user:pass@proxy:3128 | 
|  | https: http://user:pass@proxy:3128 | 
|  | no_proxy: | 
|  | - localhost | 
|  | - 127.0.0.1 | 
|  | - docker-registry | 
|  |  | 
|  |  | 
|  | Docker Swarm configuration samples | 
|  | ================================== | 
|  |  | 
|  | Role can be master, manager, or worker. Master is the first manager that | 
|  | will initialize the swarm. | 
|  |  | 
|  | * Metadata for manager (the first node): | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | enabled: true | 
|  | swarm: | 
|  | role: manager | 
|  | advertise_addr: 192.168.1.5 | 
|  | bind: | 
|  | address: 192.168.1.5 | 
|  | port: 2377 | 
|  |  | 
|  | * Metadata for worker: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | enabled: true | 
|  | swarm: | 
|  | role: worker | 
|  | master: | 
|  | host: 192.168.1.5 | 
|  | port: 2377 | 
|  |  | 
|  | The token to join to the master node is obtained from grains using | 
|  | ``salt.mine``.  In case of any ``join_token undefined`` issues, verify that | 
|  | you have ``docker_swarm_`` grains available. | 
|  |  | 
|  | Docker client configuration samples | 
|  | =================================== | 
|  |  | 
|  | * Container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | client: | 
|  | container: | 
|  | jenkins: | 
|  | # Don't start automatically | 
|  | start: false | 
|  | restart: unless-stopped | 
|  | image: jenkins:2.7.1 | 
|  | ports: | 
|  | - 8081:8080 | 
|  | - 50000:50000 | 
|  | environment: | 
|  | JAVA_OPTS: "-Dhudson.footerURL=https://www.example.com" | 
|  | volumes: | 
|  | - /srv/volumes/jenkins:/var/jenkins_home | 
|  |  | 
|  | * Docker compose: | 
|  |  | 
|  | The states providing this functionality include: | 
|  |  | 
|  | - docker.client.stack | 
|  | - docker.client.compose | 
|  |  | 
|  | Stack is new and works with Docker Swarm Mode. | 
|  | Compose is legacy and works only if node is not a member of Swarm. | 
|  | Metadata for both states are similar and differs only in implementation. | 
|  |  | 
|  | * Stack: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | client: | 
|  | stack: | 
|  | django_web: | 
|  | enabled: true | 
|  | update: true | 
|  | environment: | 
|  | SOMEVAR: somevalue | 
|  | version: "3.1" | 
|  | service: | 
|  | db: | 
|  | image: postgres | 
|  | web: | 
|  | image: djangoapp | 
|  | volumes: | 
|  | - /srv/volumes/django:/srv/django | 
|  | ports: | 
|  | - 8000:8000 | 
|  | depends_on: | 
|  | - db | 
|  |  | 
|  | * Compose | 
|  |  | 
|  | You can install ``docker-compose`` using one of the following options: | 
|  |  | 
|  | - Distribution package (default) | 
|  | - Using Pip | 
|  | - Using Docker container | 
|  |  | 
|  | Install ``docker-compose`` using Docker (default is distribution package): | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | client: | 
|  | compose: | 
|  | source: | 
|  | engine: docker | 
|  | image: docker/compose:1.8.0 | 
|  | django_web: | 
|  | # Run up action, any positional argument to docker-compose CLI | 
|  | # If not defined, only docker-compose.yml is generated | 
|  | status: up | 
|  | # Run image pull every time state is run triggering container | 
|  | # restart in case it's changed | 
|  | pull: true | 
|  | environment: | 
|  | SOMEVAR: somevalue | 
|  | service: | 
|  | db: | 
|  | image: postgres | 
|  | web: | 
|  | image: djangoapp | 
|  | volumes: | 
|  | - /srv/volumes/django:/srv/django | 
|  | ports: | 
|  | - 8000:8000 | 
|  | depends_on: | 
|  | - db | 
|  |  | 
|  | * Registry | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | client: | 
|  | registry: | 
|  | target_registry: apt:5000 | 
|  | image: | 
|  | - registry: docker | 
|  | name: compose:1.8.0 | 
|  | - registry: tcpcloud | 
|  | name: jenkins:latest | 
|  | - registry: "" | 
|  | name: registry:2 | 
|  | target_registry: myregistry | 
|  |  | 
|  | Docker Service configuration samples | 
|  | ==================================== | 
|  |  | 
|  | To deploy service in Swarm mode, you can use ``docker.client.service``: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | parameters: | 
|  | docker: | 
|  | client: | 
|  | service: | 
|  | postgresql: | 
|  | environment: | 
|  | POSTGRES_USER: user | 
|  | POSTGRES_PASSWORD: password | 
|  | POSTGRES_DB: mydb | 
|  | restart: | 
|  | condition: on-failure | 
|  | image: "postgres:9.5" | 
|  | ports: | 
|  | - 5432:5432 | 
|  | volume: | 
|  | data: | 
|  | type: bind | 
|  | source: /srv/volumes/postgresql/maas | 
|  | destination: /var/lib/postgresql/data | 
|  |  | 
|  | Docker Service configuration samples with docker secrets | 
|  | ======================================================== | 
|  |  | 
|  | To deploy service in Swarm mode using docker secrets, you can use | 
|  | ``docker.client.service``: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | parameters: | 
|  | docker: | 
|  | client: | 
|  | service: | 
|  | postgresql: | 
|  | environment: | 
|  | POSTGRES_USER: user | 
|  | POSTGRES_PASSWORD_FILE: '/run/secrets/postgres' | 
|  | POSTGRES_DB: mydb | 
|  | secrets: | 
|  | - postgres | 
|  | restart: | 
|  | condition: on-failure | 
|  | image: "postgres:9.5" | 
|  | ports: | 
|  | - 5432:5432 | 
|  | volume: | 
|  | data: | 
|  | type: bind | 
|  | source: /srv/volumes/postgresql/maas | 
|  | destination: /var/lib/postgresql/data | 
|  | secrets: | 
|  | postgres: | 
|  | external: true | 
|  | value: password | 
|  |  | 
|  | Docker Registry configuration samples | 
|  | ===================================== | 
|  |  | 
|  | * Basic Docker Registry configuration: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | registry: | 
|  | log: | 
|  | level: debug | 
|  | formatter: json | 
|  | cache: | 
|  | engine: redis | 
|  | host: localhost | 
|  | storage: | 
|  | engine: filesystem | 
|  | root: /srv/docker/registry | 
|  | bind: | 
|  | host: 0.0.0.0 | 
|  | port: 5000 | 
|  | hook: | 
|  | mail: | 
|  | levels: | 
|  | - panic | 
|  | # Options are rendered as yaml as is so use hook-specific options here | 
|  | options: | 
|  | smtp: | 
|  | addr: smtp.sendhost.com:25 | 
|  | username: sendername | 
|  | password: password | 
|  | insecure: true | 
|  | from: name@sendhost.com | 
|  | to: | 
|  | - name@receivehost.com | 
|  |  | 
|  | * Docker login to private registry: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | enabled: true | 
|  | registry: | 
|  | first: | 
|  | address: private.docker.com | 
|  | user: username | 
|  | password: password | 
|  | second: | 
|  | address: private2.docker.com | 
|  | user: username2 | 
|  | password: password2 | 
|  |  | 
|  | Docker container service management configuration samples | 
|  | ========================================================= | 
|  |  | 
|  | * Start a service in a container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_started: | 
|  | dockerng_service.start: | 
|  | - container: f020d0d3efa8 | 
|  | - service: contrail-control | 
|  |  | 
|  | or | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_started: | 
|  | dockerng_service.start: | 
|  | - container: contrail_controller | 
|  | - service: contrail-control | 
|  |  | 
|  | * Stop a service in a container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_stoped: | 
|  | dockerng_service.stop: | 
|  | - container: f020d0d3efa8 | 
|  | - service: contrail-control | 
|  |  | 
|  | * Restart a service in a container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_restart: | 
|  | dockerng_service.restart: | 
|  | - container: f020d0d3efa8 | 
|  | - service: contrail-control | 
|  |  | 
|  | * Enable a service in a container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_enable: | 
|  | dockerng_service.enable: | 
|  | - container: f020d0d3efa8 | 
|  | - service: contrail-control | 
|  |  | 
|  | * Disable a service in a container: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | contrail_control_disable: | 
|  | dockerng_service.disable: | 
|  | - container: f020d0d3efa8 | 
|  | - service: contrail-control | 
|  |  | 
|  | Use registry that requires authentication | 
|  | ========================================================= | 
|  |  | 
|  | * Define private Docker registry and credentials for it: | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | host: | 
|  | insecure_registries: | 
|  | - 192.168.0.254:5000 | 
|  | registry: | 
|  | my_registry: | 
|  | address: 192.168.0.254:5000 | 
|  | user: registry_user | 
|  | password: registry_password | 
|  |  | 
|  | * Specify that services in stack require registry with authentication | 
|  |  | 
|  | .. code-block:: yaml | 
|  |  | 
|  | docker: | 
|  | client: | 
|  | stack: | 
|  | myapp: | 
|  | registry_auth: True | 
|  |  | 
|  | **Read more** | 
|  |  | 
|  | * https://docs.docker.com/installation/ubuntulinux/ | 
|  | * https://github.com/saltstack-formulas/docker-formula |