Docker環境で、Ubuntuコンテナを構築したのですが、ファイアウォール系のコマンド(nfw、netstat)などが使えません。
Dockerではデフォルトではコンテナ内のデバイスへのアクセスが許可されていないので、コンテナ内でのシステムを使うのに制限がかかってしまいます。
なので、「docker run」実行時にオプション「–privileged」を使用する必要があります。
今回構築するubuntuコンテナでもsystemctlが使用できないので、「docker run」にオプションをつけてコンテナを起動するようにします。
「Docker」Ubuntuコンテナ内のシステムを使用できるオプション「–privileged」を実行
上記でも説明したようにDockerコンテナはデフォルトではコンテナのある一定のデバイスへのアクセスは許可されていません。
なので「privileged」を使用することにより、コンテナはすべてのデバイスへのアクセスが許可されるようになりmす。
「docker run –privileged」を実行することにより、コンテナ内の全てのデバイスへのアクセスが可能になります。
「–privileged」オプション実行例
以下はコンテナ起動時、「docker run」でオプション「–privileged」を使用した例となります。
今回はUbuntuの公式イメージをダウンロードし、リモートアクセスができるように「VCN」ポート(5901)を解放したコンテナの起動となります。
また、「-d」はバックグラウンドで起動するように実行しました。
$ docker run --privileged -it -d --name my-ubuntu -p 5901:5901 ubuntu
これで、以下のようにUbuntuコンテナが正常に起動したことが確認できます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 25ea4973ebfb ubuntu "/bin/bash" About an hour ago Up About an hour 0.0.0.0:5901->5901/tcp, 0.0.0.0:13389->3389/tcp my-ubuntu
これで、Ubuntuコンテナ内で、ファイアウォール「nfw」や、ネットワーク関連コマンド「netstat、iptables」が利用できるようになります。
「Ubuntu」コンテナ内で「ufw」などのネットワーク関連コマンドを実行する
以下では実際にUbuntuコンテナ内にアクセスし、コマンドを実行した例となります。
「docker exec」でコンテナにアクセスします。
$ docker exec -it my-ubuntu /bin/bash
すでにデフォルトで「iptables」などは使用できるようになっています。
「ufw」や「netstat」コマンドは別途インストールが必要となるので以下を参考にしてください。
「ufw」インストール
Ubuntuでの「ufw」インストールコマンドは以下となります。
root@e61ff71f4128:/# apt-get install ufw
インストール後、ステータスを見ても「inactive」の状態のため、「active化」します。
root@e61ff71f4128:/# ufw status Status: inactive
「uwf」アクティブ化
root@e61ff71f4128:/# ufw enable Firewall is active and enabled on system startup
再度ステータス確認し、ufwがアクティブになっていることを確認
root@e61ff71f4128:/# ufw status Status: active
これで「ufw」コマンドが使えるようになります。
「net-tools」インストール
「netstat」などのネットワーク系のコマンドは「net-tools」コマンドをインストールします。
root@e61ff71f4128:/# apt-get -y install net-tools
インストールが正常に完了したら、以下のように「netstat」コマンドなどのネットワーク系のコマンドが使用できるようになります。
root@e61ff71f4128:/# netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 e61ff71f4128:34104 91.189.88.152:http TIME_WAIT Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path
Ubuntuコンテナでシステム系のコマンドを使用したいときは参考にしてください。
Dockerを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す