English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

CentOS7 Dockerファイアウォールの簡単な設定チュートリアル

CentOS7 Docker 防火墙の簡単な設定

禁用 firewalld 服务

systemctl disable firewalld
systemctl stop firewalld

安装 iptables 防火墙服务

yum install iptables-services

创建 iptables 配置脚本

cat >> /usr/local/bin/fired.sh <<'EOF'
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT
#iptables -A INPUT -p tcp --dport 80 -i eth0 -m state -state NEW -m recent -update -seconds 60 -hitcount 50 -j DROP
#iptables -A OUTPUT -o eth0 -m owner -uid-owner vivek -p tcp --dport 80 -m state -state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP
iptables -A INPUT -p tcp -i eth0 --dport 22 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 2376 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 --sport 1024:65534 -j ACCEPT
# OpenVPN Configuration
# iptables -A POSTROUTING -t nat -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# iptables -A FORWARD -i tun+ -j ACCEPT
# iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p TCP -i eth0 --dport 10173 --sport 1024:65534 -j ACCEPT
# iptables -A INPUT -p UDP -i eth0 --dport 10173 --sport 1024:65534 -j ACCEPT
EOF
chmod +x /usr/local/bin/fired.sh

起動時のオプションに追加します

cat >> /etc/rc.d/rc.local <<EOF
# Firewall & Docker
/usr/bin/systemctl iptables.serviceを起動します
/usr/local/bin/fired.sh
/usr/bin/systemctl dockerを起動します
EOF
chmod +x /etc/rc.d/rc.local

関連サービスを自動起動停止します

# 注: Dockerが起動すると、自動的に一部の
systemctl iptables.serviceを無効にします
systemctl dockerを無効にします

dockerのCentOS7にいくつかの問題があります

CentOSのdocker上でmysqlをインストールすると、chown modエラーが表示されます。 /var/lib/mysql permission denied、以下の方法1で解決します。

CentOS上でデータボリュームをマウントし、コンテナ内でデータボリュームにアクセスしようとすると、permission deniedエラーが発生します。以下の方法1で解決します。

17安全SELinuxが一部のセキュリティ権限を禁止しており、mysqlとmariadbがマウントする際に問題が発生しています。/var/lib/mysqlを実行すると、以下のようなメッセージが表示されます:

[root@localhost mariadb]# docker run -d -v ~/mariadb/data/:/var/lib/mysql -v ~/mariadb/config/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=‘123456‘ test01/mariadb
19c4aa113c610f53f9720ee806e3c918dd18d21dff75c043bdd6db60011a135d
[root@localhost mariadb]# docker ps -a
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS          NAMES
19c4aa113c61  test01/mariadb  "docker-entrypoint.sh" 4 秒前  終了 (1) 1 秒前            desperate_kelle

logsコマンドで確認すると、以下のようなメッセージが表示されます:chown: ‘/var/lib/mysql/....‘: Permission denied

したがって、解決策は以下の3つです:

  • docker runに以下を追加します。 --privileged=true でコンテナに特定の権限を追加します。
  • selinuxを無効にします。
  • selinuxにルールを追加し、マウントディレクトリを変更します。

2コンテナにポートマッピングを持つときに、以下のようなメッセージが表示されることがあります:

1 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 52080 -j DNAT --to-destination 192.168.20.22:52080 ! -i docker0: iptables: No chain/target/match by that name

これについて何も説明がなく、http:を参照しました。//www.lxy520.net/2015/09/24/centos-7-docker-qi-dong-bao/この記事はiptablesのファイルを変更する方法について述べていますが、CentOSのみです。7ファイルが存在しないか、iptablesのサービスがインストールされていない可能性があります。最終的にホストマシンを再起動し、復旧しました。その間、firewallを使用して試みました。-cmdコマンドで防火壁の確認と停止。

まとめ

これでこの記事の全ての内容が終わりました。この記事の内容が皆様の学習や仕事に参考になることを願っています。何か疑問があれば、コメントを残してください。皆様の呐喊教程へのサポートに感謝します。

声明:この記事の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に提供されたコンテンツであり、このサイトは所有権を有しておらず、人間による編集は行われていません。著作権侵害が疑われる場合は、以下のメールアドレスにご連絡ください:notice#oldtoolbag.com(メール送信時は、#を@に変更してください。)で通報し、関連する証拠を提供してください。一旦確認がとれましたら、このサイトは即座に侵害疑いの内容を削除します。

おすすめ