はじめに
既存のコンテナと同じネットワークに新しいコンテナを所属させたいとお思いになったことはないでしょうか。今回はそんな時の解決方法をまとめました。
環境の詳細
- App1
- Web SV コンテナ1
- DB コンテナ1
- App2
- Web SV コンテナ2
- DB コンテナ2
- Web SV コンテナ3 ←NEW!
既にコンテナが4つ作成されています。あるWeb Appを2つ作成しており、DBとWeb SV用にそれぞれが2つずつコンテナを保持している状況です。2つのコンテナグループは別々のセグメントに所属しています。今回はその内の一つのセグメント内にコンテナを一つ作ろうという目論見です。(DB用のコンテナは既存のものを使いたいと思います)
手順
まず所属させたいNWと空いているIPを調べます。
# docker network ls
# docker network inspect 【ネットワーク名】
上記のコマンドでNWの一覧と、属しているコンテナの情報を見て使われていないIPを把握します。
ちなみに新しく作成するコンテナは次のDockerfileから作られたイメージを使用します。
FROM centos:7
# update
RUN yum -y update && yum clean all
# set locale
RUN yum reinstall -y glibc-common && yum clean all
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/Japan /etc/localtime
# editor install
RUN yum install -y vim && yum clean all
先程のコマンドで使っていないPort、所属させたいNW、設定したいIP、使用するイメージ名を調べたら以下のコマンドを実行します。
# docker run -itd --privileged -p 【空いているポート】:【空いているポート】 --name staging --net=【ネットワーク名】 --ip=【IP】 【イメージ名】 /sbin/init
以上です。