2017-02-24 07:08:18 +03:00
# Ansible Role: Docker
2020-11-05 18:57:10 +03:00
[![CI ](https://github.com/geerlingguy/ansible-role-docker/workflows/CI/badge.svg?event=push )](https://github.com/geerlingguy/ansible-role-docker/actions?query=workflow%3ACI)
2017-02-24 07:08:18 +03:00
2017-05-03 18:43:11 +03:00
An Ansible Role that installs [Docker ](https://www.docker.com ) on Linux.
2017-02-24 07:08:18 +03:00
## Requirements
None.
## Role Variables
Available variables are listed below, along with default values (see `defaults/main.yml` ):
2017-05-10 06:29:25 +03:00
# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce'
2022-07-11 17:27:37 +03:00
docker_packages:
- "docker-{{ docker_edition }}"
- "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras"
docker_packages_state: present
The `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition).
You can also specify a specific version of Docker to install using the distribution-specific format:
Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>` (Note: you have to add this to all packages);
Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>` (Note: you have to add this to all packages).
2018-09-04 19:29:18 +03:00
You can control whether the package is installed, uninstalled, or at the latest version by setting `docker_package_state` to `present` , `absent` , or `latest` , respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).
2018-05-02 05:18:30 +03:00
2022-04-07 12:01:19 +03:00
docker_service_manage: true
2018-05-19 00:58:50 +03:00
docker_service_state: started
2018-09-27 06:26:19 +03:00
docker_service_enabled: true
2018-05-19 00:58:50 +03:00
docker_restart_handler_state: restarted
2022-04-07 12:01:19 +03:00
Variables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set `docker_service_manage` to `false` .
2018-05-19 00:58:50 +03:00
2022-07-06 05:26:16 +03:00
docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present
Docker Compose Plugin installation options. These differ from the below in that docker-compose is installed as a docker plugin (and used with `docker compose` ) instead of a standalone binary.
2018-09-27 06:26:19 +03:00
docker_install_compose: true
2020-06-10 01:08:35 +03:00
docker_compose_version: "1.26.0"
2022-09-27 01:09:27 +03:00
docker_compose_arch: "{{ ansible_architecture }}"
2017-05-03 19:06:24 +03:00
docker_compose_path: /usr/local/bin/docker-compose
2017-05-03 18:44:49 +03:00
Docker Compose installation options.
2022-12-26 18:53:42 +03:00
docker_add_repo: true
Controls whether this role will add the official Docker repository. Set to `false` if you want to use the default docker packages for your system or manage the package repository on your own.
2021-08-27 23:51:15 +03:00
docker_repo_url: https://download.docker.com/linux
The main Docker repo URL, common between Debian and RHEL systems.
2017-05-10 06:29:25 +03:00
docker_apt_release_channel: stable
2022-09-27 01:09:27 +03:00
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
2021-08-27 23:51:15 +03:00
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
2018-05-02 05:31:35 +03:00
docker_apt_ignore_key_error: True
2021-08-27 23:51:15 +03:00
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
2022-08-09 03:11:52 +03:00
docker_apt_filename: ""
2017-05-03 18:44:49 +03:00
2020-12-27 09:14:37 +03:00
(Used only for Debian/Ubuntu.) You can switch the channel to `nightly` if you want to use the Nightly release.
2017-05-03 18:44:49 +03:00
2020-03-06 18:49:53 +03:00
You can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.
Usually in combination with changing `docker_apt_repository` as well.
2021-08-27 23:51:15 +03:00
docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"docker_edition }}.repo
2020-12-27 09:14:37 +03:00
docker_yum_repo_enable_nightly: '0'
2019-12-11 18:27:09 +03:00
docker_yum_repo_enable_test: '0'
2021-08-27 23:51:15 +03:00
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"
2017-05-03 18:44:49 +03:00
2020-12-27 09:14:37 +03:00
(Used only for RedHat/CentOS.) You can enable the Nightly or Test repo by setting the respective vars to `1` .
2017-02-24 07:08:18 +03:00
2020-03-06 18:49:53 +03:00
You can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.
Usually in combination with changing `docker_yum_repository` as well.
2017-09-03 12:21:17 +03:00
docker_users:
2017-10-18 12:01:02 +03:00
- user1
- user2
2018-05-07 01:47:34 +03:00
A list of system users to be added to the `docker` group (so they can use Docker on the server).
2017-09-03 12:21:17 +03:00
2018-10-08 21:53:22 +03:00
docker_daemon_options:
storage-driver: "devicemapper"
log-opts:
max-size: "100m"
Custom `dockerd` options can be configured through this dictionary representing the json file `/etc/docker/daemon.json` .
2017-05-31 07:03:14 +03:00
## Use with Ansible (and `docker` Python library)
2017-05-30 06:08:59 +03:00
2017-05-31 07:03:14 +03:00
Many users of this role wish to also use Ansible to then _build_ Docker images and manage Docker containers on the server where Docker is installed. In this case, you can easily add in the `docker` Python library using the `geerlingguy.pip` role:
2017-05-30 06:08:59 +03:00
2017-06-30 14:56:21 +03:00
```yaml
- hosts: all
vars:
pip_install_packages:
- name: docker
roles:
- geerlingguy.pip
- geerlingguy.docker
```
2017-05-30 06:08:59 +03:00
2017-02-24 07:08:18 +03:00
## Dependencies
None.
## Example Playbook
2017-06-30 14:56:21 +03:00
```yaml
- hosts: all
roles:
- geerlingguy.docker
```
2017-02-24 07:08:18 +03:00
## License
MIT / BSD
2021-10-12 12:52:20 +03:00
## Sponsors
* [We Manage ](https://we-manage.de ): Helping start-ups and grown-ups scaling their infrastructure in a sustainable way.
2021-10-12 17:52:24 +03:00
The above sponsor(s) are supporting Jeff Geerling on [GitHub Sponsors ](https://github.com/sponsors/geerlingguy ). You can sponsor Jeff's work too, to help him continue improving these Ansible open source projects!
2021-10-12 12:52:20 +03:00
2017-02-24 07:08:18 +03:00
## Author Information
This role was created in 2017 by [Jeff Geerling ](https://www.jeffgeerling.com/ ), author of [Ansible for DevOps ](https://www.ansiblefordevops.com/ ).