7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dockerで複数コンテナ間のネットワーク共有

Last updated at Posted at 2015-01-17

Dockerでいろいろ実験するときに便利かも。

まずはこれから使いそうなポートをいくつか開けたbusyboxを立ち上げる。
この例では80(http), 443(https), 4567(sinatra), 9292(rackup), 6379(redis)を開けている。
名前は打ちやすいようにbbにしておく。

docker run --name bb -d -t -p 80:80 -p 443:443 -p 4567:4567 -p 9292:9292 -p 6379:6379 busybox

redisを立ち上げる例。名前はrdと短くしておく。
データはカレントディレクトリのv/rdに置くルールにする。

docker run --name rd -d --net container:bb -v $PWD/v/rd:/data redis redis-server --appendonly yes

nginxを立ち上げる例。

docker run --name nx -d --net container:bb nginx

うまく動かないときはリスタート。

docker restart nx

設定ファイルなどのありかを検索。

docker export nx | tar t | grep nginx

設定ファイルを入手。

docker export nx | tar x etc/nginx

自分の運用ルールに合わせてファイルを移動。

sudo mv etc/nginx v/nx
rm -fr etc

設定を好きなように変更する。

vi v/nx/conf.d/default.conf

設定を有効にするためにリスタート。

docker stop nx
docker rm nx
docker run --name nx -d --net container:bb -v $PWD/v/nx:/etc/nginx nginx

Ubuntuを立ち上げて、rubyとかいろいろ入れてsinatraアプリを書いたりしてもよい。

docker run --name st --net container:bb -it ubuntu
apt-get install -y ruby curl
gem install sinatra
cat > test.rb
get '/' do
'hello world'
end
^D
ruby -rsinatra test.rb -o 0.0.0.0 &
curl localhost:4567

nginxからsinatraアプリへリバースプロキシを設定、みたいな手順。
diffやexportを使って、変更箇所を整理してDockerfileに仕立てれば完成。

docker diff st
docker export st | tar t
7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?