2016-12-20 22 views
2

私はubuntu trustyとMariaDB 5.5でドッカーイメージを作成していますが、実際に実行中のVMに接続しない限り、MariaDBを開始することはできません。MariaDBはドッカーイメージ内で決して起動しません

Dockerfile:

FROM ubuntu:trusty 

# Upgrade packages 
RUN apt-get update && apt-get upgrade -y 

# So we can add a repo to apt 
RUN apt-get install -y software-properties-common 

# Add MariaDB repo to aptitude 
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db 
RUN add-apt-repository 'deb http://mirror.jmu.edu/pub/mariadb/repo/5.5/ubuntu trusty main' 
RUN apt-get update 

# Install MariaDB 
RUN DEBIAN_FRONTEND=noninteractive debconf-set-selections << 'mariadb-server-5.5 mysql-server/root_password password PASS' 
RUN DEBIAN_FRONTEND=noninteractive debconf-set-selections << 'mariadb-server-5.5 mysql-server/root_password_again password PASS' 
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server 

# Start MariaDB 
RUN service mysql start 

# Configure MariaDB User permissions 
RUN echo "CREATE USER 'ubuntu'@'localhost'" | mysql -u root 

私が作成するために実行しているコマンド:

docker build -t ebth-com-trusty --file `pwd`/Dockerfile `pwd` --no-cache 

作成するコマンドは、常に原因に失敗します:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) 

しかし、私はコメントアウトした場合CREATE USERコマンドを実行してからVMに接続すると、マニュアルを実行した後もMariaDBに接続できますservice mysql start

あたかもRUN service mysql startが機能しないかのように、これ以上デバッグする方法がわかりません。

+0

ない 'RUNサービスMySQLのstart'、多分CMDまたはENTRYPOINT代わり – user2915097

+0

を、画像を構築し、起動すると、実行中のコンテナに入り、/var/run/mysqld/mysqld.sockにあるソケットファイルが存在することを確認できます – Ray

答えて

3

Dockerfileのすべてのコマンドは、それ自身のコンテナで実行されます。

あなたが好きなプロセスを考えることができます。

  1. 新しいコンテナは、コマンドは、コンテナが
  2. そのコンテナの画像を
  3. スピンダウンされて実行され
  4. 前の画像を使用してスピンアップされます次のコマンドを実行するために取られる

これは、コマンドRUN service mysql startが実行されることを意味します。新しいコンテナをスピンアップし、MariaDBを起動し、MariaDBをシャットダウンするなど、コンテナをシャットダウンします。

代わりにCMDとENTRYPOINTを試してみてください。コンテナのスピンアップ後に実行されるデフォルトの実行可能ファイル、コマンド、およびパラメータの設定と考えることができます。しかし、2つの違いはもう少し神経質です。ドキュメントをチェックアウト:CMDENTRYPOINT

それはこのようなものになります:あなたは、コマンドを省略した場合

# Create default user 
RUN service mysql start && \ 
    echo "CREATE USER 'ubuntu'@'localhost'" | mysql -u root 

# Start MariaDB 
ENTRYPOINT ["/bin/bash"] 
CMD ["service", "mysql", "start"] 
+0

@geesuはこの作業をしましたか? – IanEdington

+1

はい、ありがとう@IanEdington! – Geesu

関連する問題