Azure Hybrid Worker Docker

时间:2019-05-24 14:16:40

标签: azure docker dockerfile azure-automation

我目前正在按照以下位置提供的说明尝试将Azure Hybrid Worker进行docker化:

https://docs.microsoft.com/en-us/azure/automation/automation-linux-hrw-install

我90%成功,但是当我尝试使用onboarding.py运行最后一步时,在文档指定的位置找不到脚本。基本上,在容器的任何位置都找不到该文件。任何帮助都会很棒。

FROM ubuntu:14.04

RUN apt-get update && \
    apt-get -y install sudo

ENV user docker

RUN useradd -m -d /home/${user} ${user} && \
    chown -R ${user} /home/${user} && \
    adduser ${user} sudo && \
    echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER ${user}

#WORKDIR /home/${user}

RUN sudo apt-get -y install apt-utils && \
 sudo apt-get -y install openssl && \
 sudo apt-get -y install curl && \
 sudo apt-get -y install wget && \
 sudo apt-get -y install cron && \
 sudo apt-get -y install net-tools && \
 sudo apt-get -y install auditd && \
 sudo apt-get -y install python-ctypeslib

RUN sudo wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh && \
sudo sh onboard_agent.sh -w <my-workplace-id> -s <my-workspace-key>

RUN sudo python /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/scripts/onboarding.py --register <arguments-removed-for-stackoverflow-post>

EXPOSE 443

1 个答案:

答案 0 :(得分:1)

尽管我不知道为什么它不起作用的确切原因,但我已经取得了一些进展,我想与大家分享。

我一直在通过比较在VM上运行的centos和centos docker容器之间的差异来试验此问题。尽管我无法查明丢失的确切内容,但是我能够获取onboarding.py文件以显示在centos Docker容器上。

首先,我要做的是创建一个文件,其中包含安装在最小centos VM上的软件包的列表。在我的docker文件中,我运行此文件并安装每个软件包。我打算削减文件以查看其工作所需。

第二件事是您必须具有systemd,默认情况下未安装。这是我在测试时的Docker映像的样子:

FROM centos:7

RUN yum -y update && yum install -y sudo

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;


ENV user docker
RUN useradd -m -d /home/${user} ${user}
RUN chown -R ${user} /home/${user}
RUN echo "docker ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

USER ${user}
WORKDIR /home/${user}

COPY ./install_packages .
RUN sudo yum install -y $(cat ./install_packages)

sudo wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh

CMD ["/usr/sbin/init"]

之后,我使用docker run在本地运行容器并启动systemd: docker run -v /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -d container_id

然后我exec进入我的容器并运行板载脚本:

sudo sh onboard_agent.sh -w 'xxx' -s 'xxx'

完成后,有时您需要等待大约5分钟才能看到丢失的文件夹。要尽快触发此操作,您需要运行以下命令:

/opt/microsoft/omsagent/bin/service_control restart {OMS_WORKSTATION_ID}

我的理解是此命令将重新启动OMS代理,并且需要systemctl。

我了解这并不能回答您关于如何通过构建和运行容器而无需远程访问容器的问题。我仍在努力,如果找到答案,我会通知您。

祝你好运。

相关问题