Skip to content

Commit 14aa7ac

Browse files
committed
fix(*): docker.service depends on its mount
Just specifying that the mount needs to be started before Docker is insufficient - since Docker is socket activated, it has a chance to start before the mount. This commit adds a new drop-in unit which configures Docker to only start after its mount on providers where we use a separate mount for Docker (AWS, Azure, and GCE).
1 parent 7354f12 commit 14aa7ac

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

contrib/azure/azure-user-data-template

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,10 @@ coreos:
2525
What=/dev/sdc
2626
Where=/var/lib/docker
2727
Type=ext4
28+
- name: docker.service
29+
drop-ins:
30+
- name: 90-after-docker-volume.conf
31+
content: |
32+
[Unit]
33+
Requires=var-lib-docker.mount
34+
After=var-lib-docker.mount

contrib/ec2/gen-json.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
Where=/var/lib/docker
2929
Type=ext4
3030
'''
31+
DOCKER_DROPIN = '''
32+
[Unit]
33+
Requires=var-lib-docker.mount
34+
After=var-lib-docker.mount
35+
'''
3136
FORMAT_ETCD_VOLUME = '''
3237
[Unit]
3338
Description=Formats the etcd device
@@ -60,13 +65,20 @@
6065
RemainAfterExit=yes
6166
ExecStart=/usr/bin/chown -R etcd:etcd /media/etcd
6267
'''
68+
ETCD_DROPIN = '''
69+
[Unit]
70+
Requires=prepare-etcd-data-directory.service
71+
After=prepare-etcd-data-directory.service
72+
'''
6373

6474
new_units = [
6575
dict({'name': 'format-docker-volume.service', 'command': 'start', 'content': FORMAT_DOCKER_VOLUME}),
6676
dict({'name': 'var-lib-docker.mount', 'command': 'start', 'content': MOUNT_DOCKER_VOLUME}),
77+
dict({'name': 'docker.service', 'drop-ins': [{'name': '90-after-docker-volume.conf', 'content': DOCKER_DROPIN}]}),
6778
dict({'name': 'format-etcd-volume.service', 'command': 'start', 'content': FORMAT_ETCD_VOLUME}),
6879
dict({'name': 'media-etcd.mount', 'command': 'start', 'content': MOUNT_ETCD_VOLUME}),
69-
dict({'name': 'prepare-etcd-data-directory.service', 'command': 'start', 'content': PREPARE_ETCD_DATA_DIRECTORY})
80+
dict({'name': 'prepare-etcd-data-directory.service', 'command': 'start', 'content': PREPARE_ETCD_DATA_DIRECTORY}),
81+
dict({'name': 'etcd.service', 'drop-ins': [{'name': '90-after-etcd-volume.conf', 'content': ETCD_DROPIN}]})
7082
]
7183

7284
data = yaml.load(file(os.path.join(CURR_DIR, '..', 'coreos', 'user-data'), 'r'))

contrib/gce/gce-user-data-template

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,10 @@ coreos:
2525
What=/dev/disk/by-id/scsi-0Google_PersistentDisk_coredocker
2626
Where=/var/lib/docker
2727
Type=ext4
28+
- name: docker.service
29+
drop-ins:
30+
- name: 90-after-docker-volume.conf
31+
content: |
32+
[Unit]
33+
Requires=var-lib-docker.mount
34+
After=var-lib-docker.mount

0 commit comments

Comments
 (0)