LoginSignup
12
20

More than 5 years have passed since last update.

DockerでCentOS7とnginxのインストール

Posted at

CentOS7のイメージ取得

まずはcentos:7のイメージを取得するために
下記コマンド実行
ps1
docker pull centos:7

イメージ取得できているか確認
```ps1

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 196e0ce0c9fb 4 weeks ago 197MB
```

イメージの起動 (コンテナの作成とアタッチ)

取得してきたcentos:7のイメージを起動する

docker run -i -t centos:7 /bin/bash

-tでttyを割り当てて、-iで標準入力を開きっぱなしにする
ということのよう。

イメージを元に自動的にコンテナが作成される
合わせて作成されたコンテナにアタッチされて次のように表示が切り替わる

[root@ce008b8a8dce /]#

もうここから先はcentosの世界。

nginxのインストールと確認

nginxインストール

nginx公式サイト
https://nginx.org/en/linux_packages.html#stable
の情報をもとにnginxをインストールする

/etc/yum.repos.d/nginx.repoを下記内容で作成
vim
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

追加後yumでインストールする
bash
[root@ce008b8a8dce /]# yum -y install nginx

nginxの起動
bash
[root@ce008b8a8dce /]# systemctl start nginx
Failed to get D-Bus connection: Operation not permitted

権限が無いと怒られた。
Dockerでアタッチする際に管理者権限が必要になる様子

一旦デタッチして(exitで抜ける)

権限追加してコンテナを起動

停止したコンテナのIDを確認

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
ce008b8a8dce        centos:7            "/bin/bash"         About an hour ago   Exited (1) 11 seconds ago                       goofy_carson

権限追加してdocker runをしたいので
今作業していたコンテナから新しくイメージを作成して
改めてdocker runをする形にする。

コンテナイメージの作成

docker commitコマンドでコンテナイメージを作成
(yk_nginxはイメージ名なので適当に設定)
ps1
docker commit ce008b8a8dce yk_nginx

イメージが作成できているか確認
```ps1

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yk_nginx latest d4f816fd1a00 18 seconds ago 274MB
centos 7 196e0ce0c9fb 4 weeks ago 197MB
```

nginxの起動

作成した新しいイメージを今度は権限追加して
ついでにポートも設定(8080ポートをコンテナの80番ポートに紐づける)して起動する。
コンテナにアクセスしやすいようにnameも設定しておく(nginx)

この際起動を/bin/bashではなく/sbin/initで行うので
-itオプションは付けずに-dでバックグラウンドで起動して
起動後にdocker execコマンドでbashを実行する

docker run --name nginx --privileged -p 8080:80 -d  yk_nginx /sbin/init
docker exec -it nginx bash

再度nginxの起動
bash
[root@9761ef13d58d /]# systemctl start nginx

特にエラー無く起動できたので
確認をする

ブラウザを立ち上げて
http://localhost:8080
にアクセス。

無事nginxのwelcome画面が表示された。

ちなみに-dで起動しているので
上記のexecで実行したプロセス(bash)を終了しても
dockerのコンテナ事態は停止しないため
コンテナを停止する場合には
docker stopコマンドで停止する必要がある。

古いコンテナの削除

イメージ作ったので古いコンテナは削除しておく。

docker rm ce008b8a8dce

参考
CentOS7 に nginx導入
CentOS 7のDockerコンテナ内でsystemdを使ってサービスを起動する
Dockerの作業済みコンテナからイメージを作って移植を楽にする
Dockerでつくる開発環境【nginxコンテナ編】

12
20
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
12
20