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コンテナ編】