CentOS7 on vagrant に docker をインストールして nginx で hello world するまで
CentOS7 (vagrant) に docker をインストールして nginx で hello world するまでの記録です。 CentOS7 が vagrant up されていることが前提です。
docker インストール
公式 にあったワンライナーでインストール後、起動します。
なお、このワンライナーは /etc/yum.repos.d/docker.repo
を自動で作成してくれます。
$ curl -fsSL https://get.docker.com/ | sh $ systemctl start docker.service
↓ インストール中のログ
[vagrant@localhost ~]$ curl -fsSL https://get.docker.com/ | sh + sudo -E sh -c 'sleep 3; yum -y -q install docker-engine' Delta RPMs disabled because /usr/bin/applydeltarpm not installed. warning: /var/cache/yum/x86_64/7/docker-main-repo/packages/docker-engine-selinux-1.10.0-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY docker-engine-selinux-1.10.0-1.el7.centos.noarch.rpm の公開鍵がインストールされていません Importing GPG key 0x2C52609D: Userid : "Docker Release Tool (releasedocker) <docker@docker.com>" Fingerprint: 5811 8e89 f3a9 1289 7c07 0adb f762 2157 2c52 609d From : https://yum.dockerproject.org/gpg Created symlink from /etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket to /usr/lib/systemd/system/lvm2-lvmpolld.socket. If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker vagrant Remember that you will have to log out and back in for this to take effect!
非 root ユーザで docker コマンドを使うにはコマンドを叩くように言われているので、ついでに実行しておきます。
$ sudo usermod -aG docker vagrant
docker のバージョンは以下のようになりました。
[vagrant@localhost docker]$ docker version Client: Version: 1.10.0 API version: 1.22 Go version: go1.5.3 Git commit: 590d5108 Built: Thu Feb 4 18:34:50 2016 OS/Arch: linux/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Dockerfile の作成
こちらを参考にしながら、適当なディレクトリを作り、Dockerfile を作成します。
[vagrant@localhost docker]$ tree . ├── Dockerfile └── index.html 0 directories, 2 files
Dockerfile
の中身はこんな感じです。
FROM centos MAINTAINER hoge hoge@hoge.hoge RUN yum install -y epel-release RUN yum install -y nginx ADD index.html /usr/share/nginx/html/ EXPOSE 80 ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]
GPGキーでWARNING出ましたが、ここでは一旦無視。
FROM
はイメージ名。ローカルになければ dockerhub から取ってくるMAINTAINER
はメンテナの名前とメールアドレスを記入RUN
はイメージ起動後に実行するコマンドADD
はファイルを指定したパスに配置EXPOSE
は Listen するポートENTRYPOINT
は docker run 時に実行するコマンド
index.html
には hello world とだけ書いておきました。
docker build
build します。
$ sudo docker build -t centos/nginx:1.0 .
-t
は image にタグを打つオプションcentos/nginx
は REPOSITORY 名:1.0
は TAG 名
- 最後の引数に Dockerfile のあるディレクトリを指定
build が成功すると image ができあがります。
[vagrant@localhost docker]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos/nginx 1.1 80d766bb9338 About an hour ago 356 MB centos/nginx 1.0 d1345ae2d9a6 9 hours ago 356 MB centos latest 61b442687d68 6 weeks ago 196.6 MB hello-world latest 690ed74de00f 3 months ago 960 B
docker 実行
build したイメージを実行します。
$ sudo docker run -d -p 80:80 centos/nginx:1.1 753d92d2bf360a529e881efaee564f86840e8d2d649f20825a7132093b45683e
-d
は docker をバックグラウンド実行-p
はポートフォワード設定。ローカル側:docker側
の順番- 実行後の標準出力はコンテナID
sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 753d92d2bf36 centos/nginx:1.1 "/usr/sbin/nginx -g '" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp determined_tesla
コンテナの停止、削除はこのコンテナIDを利用します。
コンテナの中に入ってシェル操作するには以下のオプションで docker run
します。
$ sudo docker run -it --entrypoint "/bin/bash" centos/nginx:1.2 [root@920ea5c72a47 /]#
--entrypoint
を指定することで Dockerfile の ENTRYPOINT を上書き
起動中のコンテナに入るには以下のようにします。
$ sudo docker exec -i -t *コンテナID* /bin/bash
確認
これで nginx が起動したので、index.html が見えるはずです。
$ curl -s localhost hello world
見えました。
ブラウザから確認する場合は vagrant の ip アドレスを指定するとよいでしょう。
コンテナの停止・削除
コンテナを停止するには以下のコマンドを実行します。
$ sudo docker stop *コンテナID*
コンテナを削除するには以下のコマンドを実行します。
$ sudo docker rm *コンテナID*
コンテナが増えると停止がめんどうなので、for 文でぐるぐるしたり。
$ for p in $(sudo docker ps -a -q); do sudo docker rm -f ${p}; done
image の削除
image の削除は以下のコマンドを実行します。
$ sudo docker rmi *イメージID*
コンテナ実行中は削除できないので注意。
以上、ここまでdesu。
参考
参考にさせていただきましたm(__)m
https://docs.docker.com/engine/installation/linux/centos/ http://www.atmarkit.co.jp/ait/articles/1407/08/news031.html http://qiita.com/hihihiroro/items/d7ceaadc9340a4dbeb8f http://heartbeats.jp/hbblog/2014/07/3-tips-for-nginx-on-docker.html http://qiita.com/kasaharu/items/d4654193d75c67d65226 http://qiita.com/hnakamur/items/afddaa3dbe48ad2b8b5c