gpt4 book ai didi

docker - 如何使用 Ubuntu18.04 在 Dockerfile 上启用 systemd

转载 作者:行者123 更新时间:2023-12-02 18:44:37 25 4
gpt4 key购买 nike

我知道在 Docker 容器上不推荐使用 Systemd,但有可能吗?

我在使用 Ansible 部署的 Ubuntu 18.04 云虚拟机上拥有暂存/生产环境;

我当前的开发环境是 Ubuntu 18.04 Vagrantfile使用相同的 Ansible playbook.yml分期/产品

现在我正在尝试替换 VagrantfileDockerfile用于开发但 Ansible playbook.yml应用 systemd 模块时失败。我想要systemd也在我的开发环境中,以便我可以在我的 playbook.yml 上测试更改本地的。知道我该怎么做吗?

如果我尝试使用 Dockerfile 构建和 playbook.yml如下,我得到一个错误Failed to find required executable systemctl in paths .

如果我添加 RUN apt-get install systemdDockerfile尝试构建,我得到一个错误 System has not been booted with systemd as init system
sample Dockerfile :

FROM ubuntu:18.04

ADD . /app
WORKDIR /app

# Install Python3 pip used to install Ansible
RUN apt-get update && apt-get install -y \
python3-pip \

# Install Ansible
RUN pip3 install --trusted-host pypi.python.org ansible
RUN ansible-playbook playbook.yml -i inventory

EXPOSE 80

sample playbook.yml :
---
- name: Ansible playbook to setup dev environment
hosts: all
vars:
ansible_python_interpreter: "/usr/bin/python3"
debug: True
become: yes
become_method: sudo
tasks:
- name: Copy App Gunicorn systemd config
template:
src: app_gunicorn.service
dest: /etc/systemd/system/

- name: Enable App Gunicorn on systemd
systemd: state=started name=app_gunicorn

sample inventory :
docker-dev ansible_host=localhost ansible_connection=local

最佳答案

这是一个完美的例子,docker-systemctl-replacement应该使用脚本。

它已被开发为允许 ansible 脚本以虚拟机和 docker 容器为目标。您不需要启用真正的 systemd,只需覆盖在 systemd 控制下的操作系统中的/usr/bin/systemctl 即可。 docker 容器对于 ansible 来说看起来已经足够好了,而我更习惯于使用通用的 'service:' 模块而不是特定的 'systemd:' 模块。

关于docker - 如何使用 Ubuntu18.04 在 Dockerfile 上启用 systemd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53383431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com