The docker_service resource is a composite resource that manages Docker daemon installation and service configuration. It combines the functionality of docker_installation and docker_service_manager resources.
:create- Installs Docker usingdocker_installation:delete- Removes Docker installation:start- Starts the Docker daemon usingdocker_service_manager:stop- Stops the Docker daemon:restart- Restarts the Docker daemon
The service management strategy is automatically chosen based on the platform but can be overridden.
install_method- Installation method:script,package,tarball,none, orauto(default)service_manager- Service manager to use:execute,systemd,none, orauto(default)
repo- Repository URL for script installationscript_url- Custom script URL for installation
package_version- Specific package version to installpackage_name- Package name (default: docker-ce)setup_docker_repo- Whether to configure Docker repositorypackage_options- Additional package installation options
checksum- SHA256 checksum of Docker binarydocker_bin- Path to Docker binarysource- URL to Docker binary tarballversion- Docker version to install
instance- Resource name (name property)env_vars- Hash of environment variables for Docker servicedata_root- Root directory of the Docker runtimedebug- Enable debug mode (default: false)daemon- Enable daemon mode (default: true)group- Posix group for unix socket (default: 'docker')
bip- Network bridge IP (accepts IPv4/IPv6 address/CIDR)bridge- Network bridge for container attachmentdefault_ip_address_pool- Default address pool for networksdns- DNS servers (String or Array)dns_search- DNS search domains (Array)fixed_cidr- IPv4 subnet for fixed IPsfixed_cidr_v6- IPv6 subnet for fixed IPsip- Default IP for container binding (IPv4/IPv6)ip_forward- Enable IP forwardingipv4_forward- Enable net.ipv4.ip_forward (default: true)ipv6_forward- Enable net.ipv6.ip_forward (default: true)ip_masq- Enable IP masqueradingiptables- Enable iptables rulesip6tables- Enable ip6tables rulesipv6- Enable IPv6 networkingmtu- Container network MTU
cluster_store- Cluster store settingscluster_advertise- Cluster advertisement configurationcluster_store_opts- Cluster store options (String or Array)
api_cors_header- Set CORS headers for remote APIhost- Docker daemon socket(s) to connect toselinux_enabled- Enable SELinux supportuserns_remap- User namespace remapping optionslabels- Daemon metadata (String or Array)
storage_driver- Storage driver (String or Array)storage_opts- Storage driver options (Array)exec_driver- Execution driver ('native', 'lxc', nil)exec_opts- Execution options (String or Array)
log_driver- Container logging driver:- Supported: json-file, syslog, journald, gelf, fluentd, awslogs, splunk, etwlogs, gcplogs, logentries, loki-docker, none, local
log_opts- Logging driver options (String or Array)log_level- Logging level (debug, info, warn, error, fatal)logfile- Log file location (default: '/var/log/docker.log')
pidfile- PID file location (default: /var/run/[service-name].pid)auto_restart- Enable automatic restart (default: false)service_timeout- Docker wait-ready timeout in seconds (default: 20)
http_proxy- HTTP proxy environment variablehttps_proxy- HTTPS proxy environment variableno_proxy- No proxy environment variabletmpdir- Temporary directory path
disable_legacy_registry- Disable legacy registry supportinsecure_registry- Enable insecure registry communicationregistry_mirror- Preferred registry mirror(s)
default_ulimit- Default ulimit settings (String or Array)
systemd_opts- Additional systemd service unit optionssystemd_socket_opts- Additional systemd socket unit optionsmount_flags- Systemd mount propagation flags
live_restore- Keep containers alive during daemon downtime (default: false)userland_proxy- Enable/disable docker-proxymisc_opts- Additional daemon options as--flag=value
docker_service 'default' do
action [:create, :start]
enddocker_service 'custom' do
install_method 'package'
package_version '20.10.11'
service_manager 'systemd'
action [:create, :start]
enddocker_service 'production' do
registry_mirror ['https://mirror1.example.com', 'https://mirror2.example.com']
insecure_registry ['172.16.0.0/12']
storage_driver 'overlay2'
storage_opts ['overlay2.override_kernel_check=true']
log_driver 'json-file'
log_opts ['max-size=100m', 'max-file=3']
action [:create, :start]
enddocker_service 'primary' do
data_root '/var/lib/docker-primary'
action [:create, :start]
end
docker_service 'secondary' do
data_root '/var/lib/docker-secondary'
host ['tcp://0.0.0.0:2375']
action [:create, :start]
endWhen creating multiple docker_service resources on the same machine, you MUST specify unique data_root properties to avoid data corruption and unexpected behavior.