LoginSignup
2
2

More than 5 years have passed since last update.

DockerFile メモ

Last updated at Posted at 2018-09-09

はじめに

ここでは、僕が最近便利だなと思ったdockerで遊んでいる際に作った、dockerfileをメモとして!!残しているものです。
dockerfileは既に、より良く作られたものが配布されているので、そちらのほうを使った方が良いと思います。
(それでも、なにかの役に立てば嬉しく思います。)

Apache(httpd)のdockerfile

Dockerfile
FROM centos:7
LABEL maintainer "S.S"
RUN yum -y update && yum install -y httpd
EXPOSE 80

上のdockerfileを使用した際のdocker起動の仕方(雑)

# ls
Dockerfile
# docker build .
~ビルドの際の色んな処理(自作のDockerfile作るときは、ここのエラーみながらやると、やりやすいかも。)~
# docker image ls
REPOSITORY  TAG     IMAGE ID ・・・ 
<none>      <none>  xxxxxxxx ・・・
centos      7       xxxxxxxx ・・・
# docker run -d -p 80:80 --privileged --name apache xxxx(上の<none>のIMAGE ID) /sbin/init

本当は、「 docker run -p 80:80 -it xxxx /bin/bash 」が良かったんだけど、そうすると「systemctl ~~」で死んでしまう…

# docker exec -it apache /bin/bash
< ここからdockerコンテナ内 >
# systemctl status httpd
< Activeがinactiveになっているはず >
# systemctl start httpd
# systemctl status httpd
< Activeがactiveになっているはず >
# curl localhost | grep title
<title>Apache ~~ </title>がある。
# exit
< コンテナ外にでる。 >
# curl localhost | grep title
<title>Apache ~~ </title>がある。

ここで、見えるのは「docker run」時に「-p 80:80」をして、ホスト側の80ポートとdockerコンテナ内の80ポートを繋げたため。
(表現的に違う気もするが、イメージ的にはこんな感じ。)

# docker ps
< 作ったコンテナがある。 >
# docker stop
# docker ps
< 作ったコンテナがない。 >
# docker ps -a
< 作ったコンテナがある。 >
# docker rm apache
# docker ps -a
< 作ったコンテナがない。 >
# docker image ls
< 作ったイメージがある。 >
# docker image rm xxxx(削除したいイメージのIMAGE ID)
# docker image ls
< 削除したイメージがない >

ここから個人的に思っているDockerのイメージを書きます。見たい人だけクリックしてみてください。
基本的に、dockerでは「docker stop」をしない限り後ろ側のプロセスで動き続ける。
また、「docker stop」をしたとしてもコンテナ自体が消えるわけではなく、ただ動作が停止しただけ。

Nginxのdockerfile

Dockerfile
FROM centos:7
LABEL maintainer "S.S"
RUN yum -y update && yum install -y epel-release && \
        yum upgrade -y && yum -y install nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Ruby on Railsのdockerfile

Dockerfile
FROM centos:7

LABEL maintainer "S.S"

# 必要なパッケージをインストール
RUN yum -y update
RUN yum -y install epel-release
RUN yum -y install git make autoconf curl wget
RUN yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel sqlite-devel bzip2
RUN yum clean all

# rubyとbundleをダウンロード
RUN git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv
RUN git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

# コマンドでrbenvが使えるように設定
RUN echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh
RUN echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
RUN echo 'eval "$(rbenv init --no-rehash -)"' >> /etc/profile.d/rbenv.sh

# rubyとrailsのバージョンを指定
ENV rails_ver="5.1.4"

# rubyとrailsをインストール
RUN source /etc/profile.d/rbenv.sh; rbenv install $(rbenv install -l | grep -v - | tail -1); rbenv global $(rbenv install -l | grep -v - | tail -1)
RUN source /etc/profile.d/rbenv.sh; gem update --system; gem install --version ${rails_ver} --no-ri --no-rdoc rails; gem install bundle

Haskellのdockerfile

Dockerfile
FROM centos:7

LABEL maintainer "S.S"

# 必要なパッケージをインストール
RUN yum -y update
RUN yum -y install epel-release
RUN yum -y --enablerepo=epel install haskell-platform
RUN yum clean all
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2