Dockerfileを使ったDockerコンテナイメージの
作り方の流れを説明。
ひとまず今回は なんでもいいからnginxが動作するところまで を実施。
Dockerイメージの作り方
Dockerfileの解説
FROM ubuntu:xenial-20160706
MAINTAINER Ryoma Fujiwara
LABEL OBJECT="Nginx latest package install"
ENTRYPOINT ["/bin/bash"]
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install curl
RUN curl http://nginx.org/keys/nginx_signing.key | apt-key add -
RUN apt-get install -y nginx
ベースとなるイメージの確定(FROM)
FROM句では作成するベースとなるDockerのイメージを指定する。
今回はubuntu:xenial-20160706を指定した。
コンテナ起動時の実行コマンド指定(ENTRYPOINT)
ENTRYPOINT句でコンテナ起動時の実行コマンドを指定する。
ここでは具体的に何をしたいといった事柄はないため、/bin/bashを指定している。
コンテナイメージが既にアプリケーションのデプロイが完了している場合はアプリケーションを起動させるためのコマンドを指定することも可能。
実行コマンドの指定(RUN)
RUN句でコンテナビルド時の実行コマンドを指定することができる。
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install curl
RUN curl http://nginx.org/keys/nginx_signing.key | apt-key add -
RUN apt-get install -y nginx
ここでは最新バージョンのnginxのインストールを行っている。
基本的にはインタラクティブな操作が発生しないようにする 必要がある?
イメージのビルド
カレントディレクトリに上記のDockerfileが存在する
場合は以下のコマンドでコンテナイメージをビルドすることができる。
docker build -t ubuntu-16.04-nginx:latest `pwd`
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-16.04-nginx latest 7063dce16718 12 minutes ago 236.3 MB
作成したイメージの起動
docker run -d -p 80:80 --name nginx_sample --hostname nginx -i -t ubuntu-16.04-nginx
DockerfileのENTRYPOINTで/bin/bashを指定しているので、
コンテナ起動時のコマンド指定は不要
nginxの起動
今回はなぜかsystemdを使った起動ができないので、
手動でnginxを起動する。
docker exec -it nginx_sample /bin/bash
service nginx start
ホスト外からブラウザでアクセスするとnginxのトップページが
見えるので、ひとまず、nginxは動作している。
ここまでの残課題
systemctlが正しく動作していないように見えるので
動作するように変更を加えないといけない。
systemctl
Failed to connect to bus: No such file or directory