Docker Memo [CentOS7] (MongoDB,Redis,nginx,Node.js)


CentOS7 + Dockerで簡単にサーバーを立てる時のメモ
面倒なのでSELinuxはとりあえずPermissiveで。
データは全てホスト側に保存。(実行のみDockerを利用
[]は自分の環境に置換。 ()は省略可能。

インストール

# Docker Install
 yum install docker
 systemctl start docker
 systemctl enable docker

# SELinux Setting (Permissive)
 setenforce 0
 vi /etc/sysconfig/selinux
  SELINUX=permissive

# Firewall Settings (Add Port)
 firewall-cmd –permanent –add-port=80/tcp
 firewall-cmd –permanent –add-port=3000/tcp

サーバー実行

# MongoDB
 docker run -d -p 27017:27017 -v [MongoDB Dir]:/data/db dockerfile/mongodb

# Redis
 docker run -d -p 6379:6379 -v [Redis Dir]:/data dockerfile/redis

# Nginx
 docker run -d -p 80:80 -v [Nginx Dir]:/var/www/html dockerfile/nginx

サイトの追加、設定変更する場合 -v [Nginx Settings Dir]:/etc/nginx/sites-enabled で設定ファイルをマウントすればOK

# Node.js
 docker run -d -p 3000:3000 -v [Node.js Dir]:/usr/src/app -w /usr/src/app node:0.10 node app.js

# Node.js (npm install)
 docker run -it –rm -v [Node.js Dir]:/usr/src/app -w /usr/src/app node:0.10 npm install

どういうコンテナか確認する時はbash等で起動すると分かりやすいかと思います。
 docker run -it –rm [Container] bash

Docker Run

 docker run [Docker Run Options] ([Run Command])

[Docker Run Options]
 ・ボリュームをマウントする (–volume)
  -v [Host Volume]:[Container Volume](:ro)

 ・ポートを割り当てる (–publish)
  -p ([IP]:)[Host Port]:[Container Port]

 ・作業ディレクトリを設定する (–workdir)
  -w [Container Directory]

 ・コンテナに名前を付ける
  –name [Container Name]

[どちらか選択]
 ・常に実行 (–detach)
  -d

 ・単一コマンド実行&実行後コンテナ削除 (–interactive –tty –rm)
  -it –rm

その他

# Docker (→詳細)
 docker start [Container ID]
 docker restart [Container ID]
 docker stop [Container ID]
 docker rm [Container ID]
 docker inspect [Container ID]
 docker logs [Container ID]
 docker top [Container ID]
 docker cp [Container ID]:[Container File] [Host Dir]
 docker ps
 docker exec -it [Container ID] bash

# Systemctl
 systemctl start [Service]
 systemctl status [Service]
 systemctl stop [Service]
 systemctl enable [Service]
 systemctl disable [Service]
 systemctl list-unit-files

# Firewall
 firewall-cmd –permanent –add-port=[Port]/[tcp|udp]
 firewall-cmd –permanent –remove-port=[Port]/[tcp|udp]