Ambari 2.2 - 在 Ubuntu 14.04 Docker 容器上以非零状态代码退出
Ambari 2.2 - exiting with non-zero status code on Ubuntu 14.04 Docker container
TL;DR - Docker在 Ubuntu 14.04 上 Docker 化的 Ambari 容器在使用默认配置启动时抛出错误
我正在尝试 Docker 化 Ambari 部署以支持 运行 它与我的 Hadoop 容器一起使用。这是我的 Docker 文件:
FROM ubuntu:14.04
ENV AMBARI_HOME /opt/ambari
ENV AMBARI_VERSION 2.2.0.0
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get -y install wget software-properties-common python-software-properties openssh-client openssh-server
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
RUN mkdir -p "$AMBARI_HOME"
WORKDIR $AMBARI_HOME
# passwordless ssh
RUN export DEBIAN_FRONTEND=noninteractive \
&& echo -e 'y\n'|ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa \
&& cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
RUN export DEBIAN_FRONTEND=noninteractive \
&& wget -nv http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.0.0/ambari.list -O /etc/apt/sources.list.d/ambari.list \
&& apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD \
&& apt-get update \
&& apt-get -y install ambari-server
#Disable SELinux
RUN echo SELINUX=disabled >> /etc/selinux/config
EXPOSE 8080
RUN ambari-server setup -s --verbose --java-home $JAVA_HOME
CMD ambari-server start
当我启动容器时出现以下错误 -
Using python /usr/bin/python2
Starting ambari-server
Ambari Server running with administrator privileges.
About to start PostgreSQL
Organizing resource files at /var/lib/ambari-server/resources...
WARNING: setpgid(73, 0) failed - [Errno 13] Permission denied
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start.........
ERROR: Exiting with exit code -1.
REASON: Ambari Server java process died with exitcode -1. Check /var/log/ambari-server/ambari-server.out for more information.
ambari-server.log 或 .out
中似乎没有任何有用的东西
我发现 WARNING: setpgid(73, 0) failed - [Errno 13] Permission denied
的问题已修复:setpgid issue
阅读 HortonWorks 文档以部署到 Ubuntu 14.04,这应该可行:
Install Ambari on Ubuntu 14.04
我尝试使用嵌入式 Postges 和外部 Postges 进行部署,结果相同。
一个有趣的注意事项是,即使出现错误,Ambari 似乎已启动并且我可以作为默认值登录 admin/admin,但是在调用“ambari-server stop”时它说没有进程 运行...
root@3e6d778b43f8:/opt/ambari# ambari-server stop
Using python /usr/bin/python2
Stopping ambari-server
Ambari Server is not running
root@3e6d778b43f8:/opt/ambari# jps
868 AmbariServer
955 Jps
明天我会在我的 Ubuntu 盒子上复制这个设置,看看是否会发生同样的事情。
谢谢!
编辑 #1:docker info
vagrant@vagrant-ubuntu-trusty-64:/vagrant/scripts$ docker info
Containers: 14
Images: 161
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 189
Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-44-generic
Operating System: Ubuntu 14.04.1 LTS
CPUs: 1
Total Memory: 3.861 GiB
Name: vagrant-ubuntu-trusty-64
ID: 7AD6:Z5TH:76NW:G54B:IHVK:PWKP:E2LI:CRPI:MIGM:STJU:3D2B:K7EQ
WARNING: No swap limit support
vagrant@vagrant-ubuntu-trusty-64:/vagrant/scripts$ docker version
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
docker 在 Vagrant Virtualbox 实例 (v1.8.1) 中 运行
看起来将 Ambari 部署到 docker 容器时出现问题。我将其分解并使用以下脚本将其安装到 Vagrant 14.04 Ubuntu VM 上:
install_java.sh
#!/bin/bash
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
install_ambari.sh
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive \
&& wget -nv http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.0.0/ambari.list -O /etc/apt/sources.list.d/ambari.list \
&& apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD \
&& apt-get update \
&& apt-get -y install ambari-server
其次是:
sudo ambari-server setup -s -v -j $JAVA_HOME
sudo ambari-server start -v
@thaJeztah - 我的 Dockerfile 设置需要修复什么?
我在 ubuntu 14.04 上 docker 中的 ambari-server 遇到了同样的问题。你能试试下面的方法吗
解决 aufs 问题
在 /etc/default/docker 内添加
DOCKER_OPTS="--storage-driver=devicemapper"
并重新启动 docker 服务。请注意,在此之后您的所有图像都将消失 (http://muehe.org/posts/switching-docker-from-aufs-to-devicemapper/)。重建您的图像。
老实说,我不是 100% 确定这部分是否真的需要。
从 aufs 切换到 devicemapper 后,您可能会遇到以下错误:
ERROR: Could not find container for entity id
解决方案是删除旧的 AUFS 数据库和任何现有容器:
sudo rm -rf /var/lib/docker/containers/*
sudo rm -rf /var/lib/docker/linkgraph.db
重新启动 docker images/containers 现在应该可以在 devicemapper 引擎上运行了。
将 apparmor 设置为 docker
的投诉模式
在 /etc/apparmor.d/docker
中注释掉 (#) 行 deny @{PROC}/{*,**^[0-9*],sys/kernel/shm*} wkx,
,它以某种方式混淆了 apparmor 实用程序。比运行
sudo aa-complain /etc/apparmor.d/docker
如果aa-complain 抛出命令未找到,安装:
sudo apt-get install apparmor-utils
启动容器后 ambari-server 开始为我工作。
我不知道docker这里如何依赖apparmor,即上面的操作引入了什么风险......
TL;DR - Docker在 Ubuntu 14.04 上 Docker 化的 Ambari 容器在使用默认配置启动时抛出错误
我正在尝试 Docker 化 Ambari 部署以支持 运行 它与我的 Hadoop 容器一起使用。这是我的 Docker 文件:
FROM ubuntu:14.04
ENV AMBARI_HOME /opt/ambari
ENV AMBARI_VERSION 2.2.0.0
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get -y install wget software-properties-common python-software-properties openssh-client openssh-server
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
RUN mkdir -p "$AMBARI_HOME"
WORKDIR $AMBARI_HOME
# passwordless ssh
RUN export DEBIAN_FRONTEND=noninteractive \
&& echo -e 'y\n'|ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa \
&& cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
RUN export DEBIAN_FRONTEND=noninteractive \
&& wget -nv http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.0.0/ambari.list -O /etc/apt/sources.list.d/ambari.list \
&& apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD \
&& apt-get update \
&& apt-get -y install ambari-server
#Disable SELinux
RUN echo SELINUX=disabled >> /etc/selinux/config
EXPOSE 8080
RUN ambari-server setup -s --verbose --java-home $JAVA_HOME
CMD ambari-server start
当我启动容器时出现以下错误 -
Using python /usr/bin/python2
Starting ambari-server
Ambari Server running with administrator privileges.
About to start PostgreSQL
Organizing resource files at /var/lib/ambari-server/resources...
WARNING: setpgid(73, 0) failed - [Errno 13] Permission denied
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start.........
ERROR: Exiting with exit code -1.
REASON: Ambari Server java process died with exitcode -1. Check /var/log/ambari-server/ambari-server.out for more information.
ambari-server.log 或 .out
中似乎没有任何有用的东西我发现 WARNING: setpgid(73, 0) failed - [Errno 13] Permission denied
的问题已修复:setpgid issue
阅读 HortonWorks 文档以部署到 Ubuntu 14.04,这应该可行:
Install Ambari on Ubuntu 14.04
我尝试使用嵌入式 Postges 和外部 Postges 进行部署,结果相同。
一个有趣的注意事项是,即使出现错误,Ambari 似乎已启动并且我可以作为默认值登录 admin/admin,但是在调用“ambari-server stop”时它说没有进程 运行...
root@3e6d778b43f8:/opt/ambari# ambari-server stop
Using python /usr/bin/python2
Stopping ambari-server
Ambari Server is not running
root@3e6d778b43f8:/opt/ambari# jps
868 AmbariServer
955 Jps
明天我会在我的 Ubuntu 盒子上复制这个设置,看看是否会发生同样的事情。
谢谢!
编辑 #1:docker info
vagrant@vagrant-ubuntu-trusty-64:/vagrant/scripts$ docker info
Containers: 14
Images: 161
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 189
Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-44-generic
Operating System: Ubuntu 14.04.1 LTS
CPUs: 1
Total Memory: 3.861 GiB
Name: vagrant-ubuntu-trusty-64
ID: 7AD6:Z5TH:76NW:G54B:IHVK:PWKP:E2LI:CRPI:MIGM:STJU:3D2B:K7EQ
WARNING: No swap limit support
vagrant@vagrant-ubuntu-trusty-64:/vagrant/scripts$ docker version
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
docker 在 Vagrant Virtualbox 实例 (v1.8.1) 中 运行
看起来将 Ambari 部署到 docker 容器时出现问题。我将其分解并使用以下脚本将其安装到 Vagrant 14.04 Ubuntu VM 上:
install_java.sh
#!/bin/bash
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
install_ambari.sh
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive \
&& wget -nv http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.0.0/ambari.list -O /etc/apt/sources.list.d/ambari.list \
&& apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD \
&& apt-get update \
&& apt-get -y install ambari-server
其次是:
sudo ambari-server setup -s -v -j $JAVA_HOME
sudo ambari-server start -v
@thaJeztah - 我的 Dockerfile 设置需要修复什么?
我在 ubuntu 14.04 上 docker 中的 ambari-server 遇到了同样的问题。你能试试下面的方法吗
解决 aufs 问题
在 /etc/default/docker 内添加
DOCKER_OPTS="--storage-driver=devicemapper"
并重新启动 docker 服务。请注意,在此之后您的所有图像都将消失 (http://muehe.org/posts/switching-docker-from-aufs-to-devicemapper/)。重建您的图像。
老实说,我不是 100% 确定这部分是否真的需要。
从 aufs 切换到 devicemapper 后,您可能会遇到以下错误:
ERROR: Could not find container for entity id
解决方案是删除旧的 AUFS 数据库和任何现有容器:
sudo rm -rf /var/lib/docker/containers/*
sudo rm -rf /var/lib/docker/linkgraph.db
重新启动 docker images/containers 现在应该可以在 devicemapper 引擎上运行了。
将 apparmor 设置为 docker
的投诉模式在 /etc/apparmor.d/docker
中注释掉 (#) 行 deny @{PROC}/{*,**^[0-9*],sys/kernel/shm*} wkx,
,它以某种方式混淆了 apparmor 实用程序。比运行
sudo aa-complain /etc/apparmor.d/docker
如果aa-complain 抛出命令未找到,安装:
sudo apt-get install apparmor-utils
启动容器后 ambari-server 开始为我工作。
我不知道docker这里如何依赖apparmor,即上面的操作引入了什么风险......