How to run systemd services in Arch Linux Docker container?2019 Community Moderator ElectionInherit environment variables in systemd Docker containerDocker Container Volumes Synced LocallyStarting Services without Systemd?Systemd journal plagued with docker messagesHow to run a program inside a Docker container?Does systemd-logind must be running in docker container?Could not find writable mount point for cgroup hierarchy 13 while trying to create cgroupCrontab in docker containerDocker container with Centos 7 and systemdsystemd not autorestarting the last docker container after it crashes or kill -9 or docker stop service
Rewrite the power sum in terms of convolution
Can Mathematica be used to create an Artistic 3D extrusion from a 2D image and wrap a line pattern around it?
Can you reject a postdoc offer after the PI has paid a large sum for flights/accommodation for your visit?
Reverse string, can I make it faster?
Is it necessary to separate DC power cables and data cables?
How did Alan Turing break the enigma code using the hint given by the lady in the bar?
Child Theme Path Being Ignored With wp_enqueue_scripts
When a wind turbine does not produce enough electricity how does the power company compensate for the loss?
Conservation of Mass and Energy
Examples of a statistic that is not independent of sample's distribution?
Linux Ubuntu 18.04 Full Backup
Marriage green card at end of current visa with 2 Year residency requirement waiver in-process, question
Virginia employer terminated employee and wants signing bonus returned
Shifting between bemols (flats) and diesis (sharps)in the key signature
What are the practical Opportunty Attack values for a bugbear, holding a reach weapon, with Polearm Mastery?
Difference on montgomery curve equation between EFD and RFC7748
If I receive an SOS signal, what is the proper response?
Good for you! in Russian
Should I tell my boss the work he did was worthless
What was the Kree's motivation in Captain Marvel?
Why is computing ridge regression with a Cholesky decomposition much quicker than using SVD?
How to secure an aircraft at a transient parking space?
What are some noteworthy "mic-drop" moments in math?
NASA's RS-25 Engines shut down time
How to run systemd services in Arch Linux Docker container?
2019 Community Moderator ElectionInherit environment variables in systemd Docker containerDocker Container Volumes Synced LocallyStarting Services without Systemd?Systemd journal plagued with docker messagesHow to run a program inside a Docker container?Does systemd-logind must be running in docker container?Could not find writable mount point for cgroup hierarchy 13 while trying to create cgroupCrontab in docker containerDocker container with Centos 7 and systemdsystemd not autorestarting the last docker container after it crashes or kill -9 or docker stop service
There seems to be tons of different ways people have been able to run systemd services within Docker containers. The latest example of direct advice I've found is to run Docker with --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add=SYS_ADMIN --security-opt=seccomp:unconfined. However, it still just fails:
Error: Could not start Service[ntpd]: Execution of '/usr/sbin/systemctl start ntpd' returned 1: Failed to connect to bus: No such file or directory
What is the absolute minimum I need to do to get simple services running under systemd 231 on a docker 1.12.1 container with an up-to-date Arch Linux distribution?
arch-linux systemd docker
bumped to the homepage by Community♦ 3 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
|
show 3 more comments
There seems to be tons of different ways people have been able to run systemd services within Docker containers. The latest example of direct advice I've found is to run Docker with --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add=SYS_ADMIN --security-opt=seccomp:unconfined. However, it still just fails:
Error: Could not start Service[ntpd]: Execution of '/usr/sbin/systemctl start ntpd' returned 1: Failed to connect to bus: No such file or directory
What is the absolute minimum I need to do to get simple services running under systemd 231 on a docker 1.12.1 container with an up-to-date Arch Linux distribution?
arch-linux systemd docker
bumped to the homepage by Community♦ 3 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
1
Docker is more about running the daemon directly once you give it a predefinedENTRYPOINTsystemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service
– Bratchley
Aug 23 '16 at 21:30
1
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
1
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be theENTRYPOINT.
– l0b0
Aug 24 '16 at 11:56
|
show 3 more comments
There seems to be tons of different ways people have been able to run systemd services within Docker containers. The latest example of direct advice I've found is to run Docker with --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add=SYS_ADMIN --security-opt=seccomp:unconfined. However, it still just fails:
Error: Could not start Service[ntpd]: Execution of '/usr/sbin/systemctl start ntpd' returned 1: Failed to connect to bus: No such file or directory
What is the absolute minimum I need to do to get simple services running under systemd 231 on a docker 1.12.1 container with an up-to-date Arch Linux distribution?
arch-linux systemd docker
There seems to be tons of different ways people have been able to run systemd services within Docker containers. The latest example of direct advice I've found is to run Docker with --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --cap-add=SYS_ADMIN --security-opt=seccomp:unconfined. However, it still just fails:
Error: Could not start Service[ntpd]: Execution of '/usr/sbin/systemctl start ntpd' returned 1: Failed to connect to bus: No such file or directory
What is the absolute minimum I need to do to get simple services running under systemd 231 on a docker 1.12.1 container with an up-to-date Arch Linux distribution?
arch-linux systemd docker
arch-linux systemd docker
edited Aug 23 '16 at 21:20
l0b0
asked Aug 23 '16 at 20:45
l0b0l0b0
28.5k19120248
28.5k19120248
bumped to the homepage by Community♦ 3 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 3 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
1
Docker is more about running the daemon directly once you give it a predefinedENTRYPOINTsystemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service
– Bratchley
Aug 23 '16 at 21:30
1
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
1
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be theENTRYPOINT.
– l0b0
Aug 24 '16 at 11:56
|
show 3 more comments
1
Docker is more about running the daemon directly once you give it a predefinedENTRYPOINTsystemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service
– Bratchley
Aug 23 '16 at 21:30
1
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
1
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be theENTRYPOINT.
– l0b0
Aug 24 '16 at 11:56
1
1
Docker is more about running the daemon directly once you give it a predefined
ENTRYPOINT systemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service– Bratchley
Aug 23 '16 at 21:30
Docker is more about running the daemon directly once you give it a predefined
ENTRYPOINT systemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service– Bratchley
Aug 23 '16 at 21:30
1
1
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
1
1
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be the
ENTRYPOINT.– l0b0
Aug 24 '16 at 11:56
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be the
ENTRYPOINT.– l0b0
Aug 24 '16 at 11:56
|
show 3 more comments
1 Answer
1
active
oldest
votes
I ran into the same problem testing my Ansible playbooks which require systemd. And as you said, docker seems like the best approach here as it is much easier to bring up and down a container rather than a virtual machine.
First of all base/archlinux image is deprecated - you should use archlinux/base instead.
Then, to run systemd totally unprivileged, number of things should be done:
- provide a "conrainer=" variable, so systemd won't try to do number of things it usually does booting a hardware machine
- systemd actively uses cgroups, so bind mount /sys/fs/cgroup file system from a host
- bind mounting /sys/fs/fuse is not required but helps to avoid issues with fuse-dependent software
- systemd thinks that using tmpfs everywhere is a good approach, but running unprivileged makes it impossible for it to mount tmpfs where ever it wants, so pre-mount tmpfs to /tmp, /run and /run/lock
- as the last bit you need to specify sysinit.target as default unit to boot instead of multi-user.target or whatever, as you really do not want to start graphical things inside a container
The resulting command line is
docker run
--entrypoint=/usr/lib/systemd/systemd
--env container=docker
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup
--mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse
--mount type=tmpfs,destination=/tmp
--mount type=tmpfs,destination=/run
--mount type=tmpfs,destination=/run/lock
archlinux/base --log-level=info --unit=sysinit.target
If we are talking about running particular service there like ntpd from your example you will need to add
--cap-add=SYS_TIME
otherwise ntpd will fail with permission deny as nobody wants a container to set system time by default.
P.s I spent quite a while learning how systemd behaves and managed to get it working on number of operating system images. I described my experience in an article Running systemd in docker container. It is in Russian but I believe google translate should work in your browser. Thanks
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f305340%2fhow-to-run-systemd-services-in-arch-linux-docker-container%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I ran into the same problem testing my Ansible playbooks which require systemd. And as you said, docker seems like the best approach here as it is much easier to bring up and down a container rather than a virtual machine.
First of all base/archlinux image is deprecated - you should use archlinux/base instead.
Then, to run systemd totally unprivileged, number of things should be done:
- provide a "conrainer=" variable, so systemd won't try to do number of things it usually does booting a hardware machine
- systemd actively uses cgroups, so bind mount /sys/fs/cgroup file system from a host
- bind mounting /sys/fs/fuse is not required but helps to avoid issues with fuse-dependent software
- systemd thinks that using tmpfs everywhere is a good approach, but running unprivileged makes it impossible for it to mount tmpfs where ever it wants, so pre-mount tmpfs to /tmp, /run and /run/lock
- as the last bit you need to specify sysinit.target as default unit to boot instead of multi-user.target or whatever, as you really do not want to start graphical things inside a container
The resulting command line is
docker run
--entrypoint=/usr/lib/systemd/systemd
--env container=docker
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup
--mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse
--mount type=tmpfs,destination=/tmp
--mount type=tmpfs,destination=/run
--mount type=tmpfs,destination=/run/lock
archlinux/base --log-level=info --unit=sysinit.target
If we are talking about running particular service there like ntpd from your example you will need to add
--cap-add=SYS_TIME
otherwise ntpd will fail with permission deny as nobody wants a container to set system time by default.
P.s I spent quite a while learning how systemd behaves and managed to get it working on number of operating system images. I described my experience in an article Running systemd in docker container. It is in Russian but I believe google translate should work in your browser. Thanks
add a comment |
I ran into the same problem testing my Ansible playbooks which require systemd. And as you said, docker seems like the best approach here as it is much easier to bring up and down a container rather than a virtual machine.
First of all base/archlinux image is deprecated - you should use archlinux/base instead.
Then, to run systemd totally unprivileged, number of things should be done:
- provide a "conrainer=" variable, so systemd won't try to do number of things it usually does booting a hardware machine
- systemd actively uses cgroups, so bind mount /sys/fs/cgroup file system from a host
- bind mounting /sys/fs/fuse is not required but helps to avoid issues with fuse-dependent software
- systemd thinks that using tmpfs everywhere is a good approach, but running unprivileged makes it impossible for it to mount tmpfs where ever it wants, so pre-mount tmpfs to /tmp, /run and /run/lock
- as the last bit you need to specify sysinit.target as default unit to boot instead of multi-user.target or whatever, as you really do not want to start graphical things inside a container
The resulting command line is
docker run
--entrypoint=/usr/lib/systemd/systemd
--env container=docker
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup
--mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse
--mount type=tmpfs,destination=/tmp
--mount type=tmpfs,destination=/run
--mount type=tmpfs,destination=/run/lock
archlinux/base --log-level=info --unit=sysinit.target
If we are talking about running particular service there like ntpd from your example you will need to add
--cap-add=SYS_TIME
otherwise ntpd will fail with permission deny as nobody wants a container to set system time by default.
P.s I spent quite a while learning how systemd behaves and managed to get it working on number of operating system images. I described my experience in an article Running systemd in docker container. It is in Russian but I believe google translate should work in your browser. Thanks
add a comment |
I ran into the same problem testing my Ansible playbooks which require systemd. And as you said, docker seems like the best approach here as it is much easier to bring up and down a container rather than a virtual machine.
First of all base/archlinux image is deprecated - you should use archlinux/base instead.
Then, to run systemd totally unprivileged, number of things should be done:
- provide a "conrainer=" variable, so systemd won't try to do number of things it usually does booting a hardware machine
- systemd actively uses cgroups, so bind mount /sys/fs/cgroup file system from a host
- bind mounting /sys/fs/fuse is not required but helps to avoid issues with fuse-dependent software
- systemd thinks that using tmpfs everywhere is a good approach, but running unprivileged makes it impossible for it to mount tmpfs where ever it wants, so pre-mount tmpfs to /tmp, /run and /run/lock
- as the last bit you need to specify sysinit.target as default unit to boot instead of multi-user.target or whatever, as you really do not want to start graphical things inside a container
The resulting command line is
docker run
--entrypoint=/usr/lib/systemd/systemd
--env container=docker
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup
--mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse
--mount type=tmpfs,destination=/tmp
--mount type=tmpfs,destination=/run
--mount type=tmpfs,destination=/run/lock
archlinux/base --log-level=info --unit=sysinit.target
If we are talking about running particular service there like ntpd from your example you will need to add
--cap-add=SYS_TIME
otherwise ntpd will fail with permission deny as nobody wants a container to set system time by default.
P.s I spent quite a while learning how systemd behaves and managed to get it working on number of operating system images. I described my experience in an article Running systemd in docker container. It is in Russian but I believe google translate should work in your browser. Thanks
I ran into the same problem testing my Ansible playbooks which require systemd. And as you said, docker seems like the best approach here as it is much easier to bring up and down a container rather than a virtual machine.
First of all base/archlinux image is deprecated - you should use archlinux/base instead.
Then, to run systemd totally unprivileged, number of things should be done:
- provide a "conrainer=" variable, so systemd won't try to do number of things it usually does booting a hardware machine
- systemd actively uses cgroups, so bind mount /sys/fs/cgroup file system from a host
- bind mounting /sys/fs/fuse is not required but helps to avoid issues with fuse-dependent software
- systemd thinks that using tmpfs everywhere is a good approach, but running unprivileged makes it impossible for it to mount tmpfs where ever it wants, so pre-mount tmpfs to /tmp, /run and /run/lock
- as the last bit you need to specify sysinit.target as default unit to boot instead of multi-user.target or whatever, as you really do not want to start graphical things inside a container
The resulting command line is
docker run
--entrypoint=/usr/lib/systemd/systemd
--env container=docker
--mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup
--mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse
--mount type=tmpfs,destination=/tmp
--mount type=tmpfs,destination=/run
--mount type=tmpfs,destination=/run/lock
archlinux/base --log-level=info --unit=sysinit.target
If we are talking about running particular service there like ntpd from your example you will need to add
--cap-add=SYS_TIME
otherwise ntpd will fail with permission deny as nobody wants a container to set system time by default.
P.s I spent quite a while learning how systemd behaves and managed to get it working on number of operating system images. I described my experience in an article Running systemd in docker container. It is in Russian but I believe google translate should work in your browser. Thanks
answered Feb 9 at 0:27
Владимир ТюхтинВладимир Тюхтин
865
865
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f305340%2fhow-to-run-systemd-services-in-arch-linux-docker-container%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
-arch-linux, docker, systemd
1
Docker is more about running the daemon directly once you give it a predefined
ENTRYPOINTsystemd doesn't factor into it. If you're looking for some sort of container integration with systemd you can look into creating an nspawn service– Bratchley
Aug 23 '16 at 21:30
1
I'm not using Docker to run a single service. I'm using it to test a Puppet run which (among other things) starts multiple services. If I special case the test environment (use nspawn instead of systemd) the test is kind of useless.
– l0b0
Aug 24 '16 at 7:50
"I'm not using Docker to run a single service" Then you can't use Docker at all. It's intended to run a single executable and everything is built around that fact. That's probably why this problem is so hard for you to solve. If you're testing a puppet run, what I usually do in that case is have a VM that I snapshot prior to doing the run. If you have something like Vagrant setup already it's pretty easy to just build new VM's and blow them away (as opposed to doing a snapshot).
– Bratchley
Aug 24 '16 at 9:31
The immediate problem you appear to be having though is that dbus isn't running inside your container.
– Bratchley
Aug 24 '16 at 9:33
1
I'm using Docker for this work for two reasons: Layers are easier to work with than snapshots to avoid large amounts of unnecessary work when re-running tests, and the current Docker setup is much simpler than the corresponding Vagrant one. I don't see why Docker should preclude running multiple services - they are just processes, after all. There's nothing stopping anyone from running multiple processes in Docker. I don't want any of them to be the
ENTRYPOINT.– l0b0
Aug 24 '16 at 11:56