鉴于:
apt-get install ssh)问题:每次启动容器时我都必须手动运行sshd service ssh start
试过:update-rc.d ssh defaults但它没有帮助.
问题:如何设置容器以在容器启动期间自动启动sshd服务?
我正在创建docker容器,基本映像是ubuntu:14.04.我必须在该容器中启动mysql服务器,然后我必须创建数据库,我必须向用户授予权限.Docker对我来说是新的.我尝试了很多,但每当我去那个图像并检查mysql服务器是否正在运行时.每次我得到的是mysql服务器停止,我的dbs也没有创建.这是我的dockerfile
FROM ubuntu:14.04
MAINTAINER <name> <emailid>
RUN sudo apt-get update
RUN sudo apt-get install -y apache2 mysql-server libapache2-mod-auth-mysql php5-mysql php5 git
RUN sudo apt-get install -y vim
CMD sudo /usr/sbin/mysqld -u mysql
Run Code Online (Sandbox Code Playgroud)
我尝试了很多,但我无法在docker镜像中运行mysql服务器.
在我的Dockerfile中,我正在尝试安装多个服务,并希望在启动容器时自动启动它们.其中一个服务是mysql,当我启动容器时,我没有看到mysql服务启动.当我尝试手动启动时,我收到错误:
Failed to get D-Bus connection: Operation not permitted
Dockerfile:
FROM centos:7
RUN yum -y install mariadb mariadb-server
COPY start.sh start.sh
CMD ["/bin/bash", "start.sh"]
Run Code Online (Sandbox Code Playgroud)
我的start.sh文件:
service mariadb start
Run Code Online (Sandbox Code Playgroud)
Docker构建:
docker build --tag="pbellamk/mariadb" .
Run Code Online (Sandbox Code Playgroud)
Docker运行:
docker run -it -d --privileged=true pbellamk/mariadb bash
Run Code Online (Sandbox Code Playgroud)
我检查了centos:systemd图像,这也没有用.如何使用systemctl/service命令启动的服务启动容器.
我的目标是拥有一个具有运行MySQL服务的docker容器.所以每当我启动容器时,数据库都处于初始状态并且MySQL正在运行.几乎一切都很好但是当我启动容器时MySQL服务没有运行.每次在控制台中我都必须像这样启动它:service mysql start.以下是我构建和运行容器的步骤:
$ docker build -t executer:mysql .
Sending build context to Docker daemon 15.87 kB
Sending build context to Docker daemon
Step 0 : FROM debian:wheezy
#
# ... Many steps without error
#
Step 17 : RUN mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/
---> Using cache
---> 1c71bf4524f0
Step 18 : RUN service mysql start
---> Running in b4643765b79b
......
MySQL Community Server 5.6.24 is started.
---> ac26b749a3c0
Removing intermediate container b4643765b79b
Successfully built ac26b749a3c0
$ docker run --rm …Run Code Online (Sandbox Code Playgroud) 当我使用正在运行的Docker容器中的启动cron服务时
service cron start
Run Code Online (Sandbox Code Playgroud)
有用。但是线
RUN service cron start
Run Code Online (Sandbox Code Playgroud)
在Dockerfile中似乎没有任何作用。为什么?
我考虑过将其更改CMD为CMD ["startup.sh"]先运行service cron start然后再运行run.py(Python Web服务器)的方式。但是我希望Web服务器不要以root用户身份运行,因此service cron start会失败。