firewalld のメモ書き
概要
CentOS7 で導入された firewalld のメモ書き
firewalld のメリット
- ダイナミックに動作するので,ルール変更時などに通信を切断しなくて良い
- ステートフルパケットインスペクションが可能
- Zeroconf に対応
firewalld のゾーン
標準で以下の9つのゾーンが定義されている.
- drop
- block
- public
- external
- dmz
- work
- home
- internal
- trusted
各ゾーンのデフォルト設定ファイルは /usr/lib/firewalld/zones に格納されている.
実際に,設定をする際は firewall-cmd コマンドなどで /etc/firewalld/zones 配下のファイルを変更する.
# pwd /usr/lib/firewalld/zones # ls block.xml dmz.xml drop.xml external.xml home.xml internal.xml public.xml trusted.xml work.xml # pwd /etc/firewalld/zones # ls public.xml public.xml.old
設定ファイルの参照順序
以下の順番で参照される
- /etc/firewalld 配下
- /usr/lib/firewalld 配下
firewalld の起動と停止など
// 状態確認 # systemctl status firewalld // 起動 # systemctl start firewalld // 終了 # systemctl stop firewalld // 設定ファイルの読み込み # systemctl reload firewalld // 有効にする # systemctl enable firewalld // 無効にする # systemctl disable firewalld // disable よりも強い無効化 # systemctl unmask firewalld // unmask の取り消し # systemctl mask firewalld
ゾーンとその設定の確認方法
// 現在のゾーンを確認する # firewall-cmd --get-active-zone public interfaces: enp0s25 // ゾーンの設定を確認する # firewall-cmd --zone=public --list-all public (default, active) interfaces: enp0s25 sources: services: dhcpv6-client ssh ports: 5000/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
ゾーンにパケットの設定をする
// 5000番ポートを恒久的に通信を許可する # firewall-cmd --zone=public --add-port=5000/tcp --permanent // 恒久的にサービスを追加する # firewall-cmd --zone=public --add-service=http --permanent
CentOS7 で Docker のプライベートレジストリを作成した話
プライベートレジストリの作成
# yum install docker-registry # systemctl enable docker-registry # systemctl start docker-registry
firewalld の設定方法
プライベートレジストリはデフォルトでポート番号 5000 を使用するので解放する
# firewall-cmd --zone=public --add-port=5000/tcp --permanent
プライベートレジストリに Docker イメージを登録する
以前構築した Jenkins のイメージをプライベートリポジトリに登録する
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kawa0810/jenkins ver1.0 12abb6b1b0bb 2 minutes ago 512.7 MB // 登録するイメージをバインドする # docker tag 12abb6b1b0bb <サーバの IP>:5000/kawa0810/jenkins // イメージを登録する # docker push <サーバの IP>:5000/kawa0810/jenkins
プライベートレジストリから Docker イメージをダウンロードする
# docker pull <サーバの IP>:5000/kawa0810/jenkins # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <サーバの IP>:5000/kawa0810/jenkins latest 12abb6b1b0bb 26 minutes ago 512.7 MB
Docker で遊んだ話
- CentOS7 の docker を準備した話 - kawa0810 のブログ
- CentOS7 で docker を動かした話 - kawa0810 のブログ
- CentOS7 の docker で n 個の Jenkins 環境を用意した話 - kawa0810 のブログ
- CentOS7 の docker で Dockerfile を使ってみた話 - kawa0810 のブログ
- CentOS7 の Docker で作成したイメージのエクスポートとインポートをする話 - kawa0810 のブログ
- CentOS7 で Docker のプライベートレジストリを作成した話 - kawa0810 のブログ
CentOS7 の Docker で作成したイメージのエクスポートとインポートをする話
概要
Docker で作成したイメージのエクスポートとインポートする方法です.
エクスポートしたイメージを他の環境の Docker でインポートなどが可能になります
前回作成した Jenkins 環境のイメージをエクスポート & インポートします.
エクスポート
# docker save kawa0810/jenkins > backup.tar
CentOS7 の docker で Dockerfile を使ってみた話
概要
Dockerfile を用いるとイメージの作成が自動化できる
今回は CentOS7 の docker で n 個の Jenkins 環境を用意した話 - kawa0810 のブログ で
紹介した Jenkins 環境を Dockerfile を使って自動化する
用意するもの
以下のように環境を用意する
# pwd /root/jenkins # ls Dockerfile init.sh
init.sh
#!/bin/bash service jenkins restart while [[ true ]]; do /bin/bash done
Dockerfile
# 使用するイメージを取得 FROM centos:centos6 # Dockerfile の作成者 MAINTAINER kawa0810 # Jenkins インストールの準備 RUN yum -y install wget RUN yum -y install java-1.7.0-openjdk.x86_64 # Jenkins インストール RUN wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo RUN rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key RUN yum -y install jenkins # Jenkins を OS 起動時に有効にする RUN chkconfig jenkins on # init.sh をコンテナに追加する ADD init.sh /usr/local/bin/init.sh # init.sh に実行権限を付与 RUN chmod u+x /usr/local/bin/init.sh # init.sh を実行する CMD ["/usr/local/bin/init.sh"]
実行方法
# docker build -t kawa0810/jenkins:ver1.0 /root/jenkins Uploading context 4.096 kB Uploading context <中略> Removing intermediate container baa08fc44bf1 Successfully built 9401a3554589 // 結果の確認方法 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kawa0810/jenkins ver1.0 9401a3554589 9 minutes ago 464.5 MB // コンテナを起動する (前回と同じだが、コンテナ起動時に Jenkins がスタートする) # docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash Shutting down Jenkins [FAILED] Starting Jenkins [ OK ] bash-4.1#
Dockerfile で使った命令
- FROM : 使用するイメージの選択. イメージがなければ Docker Hub からダウンロードする.
- MAINTAINER : Dockerfile の作成者をイメージに記録する
- RUN : コンテナで実行するコマンドを記載
- ADD : ホストにあるファイルをコンテナにコピー・追加する
- CMD : コンテナ起動時に実行するコマンドを記述する (今回はシェルを実行した)
CentOS7 の docker で n 個の Jenkins 環境を用意した話
概要
CentOS7 の docker で Jenkins 環境を用意した話
コンテナ内の Jenkins にアクセスするにはポートフォワーディングをする必要がある.
また,Jenkins をインストールしたコンテナイメージをコミットしておくことで,n 個の Jenkins 環境を用意に作成できる.
(プログラムごとに Jenkins を用意する手間がへる?)
Jenkins を入れたコンテナイメージを作成する
// コンテナを動かす (今回は CentOS6 のコンテナないに Jenkins を構築する) # docker run -it --name jenkins01 centos:centos6 /bin/bash bash-4.1# // Jenkins をインストールするために必要なものを入れる bash-4.1# yum -y install wget bash-4.1# yum -y install java-1.7.0-openjdk.x86_64 // Jenkins をインストールする bash-4.1# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo bash-4.1# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key bash-4.1# yum -y install jenkins // OS 起動時にサービスが起動するようにする bash-4.1# chkconfig jenkins on // コンテナを一旦終了する bash-4.1# exit exit
コンテナをコミットしておく
// コンテナをコミット # docker commit jenkins01 kawa0810/jenkins:ver1.0 // イメージ作成につかったコンテナは削除する # docker rm jenkins01
Jenkins にアクセスできるようにコンテナを起動する
// コンテナないの Jenkins にアクセスさせるためにポートフォワーディングする // ポートフォワーディングは -p <ホストで割り当てるポート>:<コンテナのポート> で指定する # docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash bash-4.1# // Jenkins を起動する bash-4.1# service jenkins restart <Jenkins サービスの起動に時間がかかる> // Jenkins へアクセスするにはブラウザで以下にアクセス // http://<ホストの IP アドレス>:8000
n 人の Jenkins を用意する
// 「ポートフォワーディングでホストで割り当てるポート」を調整すれば // n 個の Jenkins コンテナを用意できる // 1個目 # docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash bash-4.1# // 2個目 (ホストのポートとコンテナ名を変える) # docker run -it -p 8001:8080 --name jenkins02 kawa0810/jenkins:ver1.0 /bin/bash bash-4.1# // 3個目 (ホストのポートとコンテナ名を変える) # docker run -it -p 8002:8080 --name jenkins03 kawa0810/jenkins:ver1.0 /bin/bash bash-4.1# ...
[補足] コンテナ内の Jenkins が使うポートを変更する場合
// CentOS では以下のファイルを変更する模様 bash-4.1# emacs /etc/sysconfig/jenkins -nw // ファイルを変更後に Jenkins を再起動する bash-4.1# service jenkins restart
CentOS7 で docker を動かした話
概要
CentOS7 の Docker を動かしてみた話です
docker でコンテナを動かす方法
// 以下のコマンドでコンテナが実行を開始する $ docker run <実行するイメージ名> <最初に実行するコマンド> // ex) CentOS6 で /bin/bash を実行する $ docker run -it --name centos01 centos:centos6 /bin/bash bash-4.1# // -i: コンテナの標準入力を開く // -t: tty を確保する // --name <コンテナ名> : コンテナに任意の名前をつける
コンテナの tty をデタッチ & アタッチする方法
// コンテナの tty をデタッチする: <Ctrl + PQ> bash-4.1# <Ctrl + PQ> $ // コンテナの tty をアタッチする: docker attach <コンテナ名> $ docker attach centos01 bash-4.1#
実行中のコンテナを確認する方法
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5e1c0f2955e4 centos:centos6 /bin/bash 7 minutes ago Up 7 minutes centos01
コンテナをイメージとして保存する方法
$ docker commit <コンテナ名> <リポジトリ名:タグ名> ex) $ docker commit centos01 kawa0810/test:v1.0 ba6d962c25e8b085e197b870f46ffbbd56ac3c138a1895b24b6b2fada4b2a902 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kawa0810/test v1.0 ba6d962c25e8 14 seconds ago 212.7 MB
コンテナの停止と開始方法
// コンテナの停止方法 $ docker stop <コンテナ名> // コンテナの開始方法 $ docker start <コンテナ名>
コンテナとイメージの削除方法
// コンテナの削除方法 $ docker nm <コンテナ名> // イメージの削除方法 $ docker rmi <イメージ名> ex) $ docker rmi kawa0810/test:v1.0
CentOS7 の docker を準備した話
概要
CentOS7 の Docker を準備した話です
CentOS7 に Docker をインストールする
yum でインストールしたあとサービスを起動する必要がある.
# yum install docker # systemctl enable docker # systemctl start docker
Docker のイメージを取得する
Docker Hub から CentOS のイメージを取得する
// Docker Hub を検索する // ユーザが登録したリポジトリは <ユーザ名>/ をつける決まりになっている # docker search centos NAME DESCRIPTION STARS OFFICIAL TRUSTED centos The official build of CentOS. 517 [OK] tianon/centos CentOS 5 and 6, created using rinse instea... 28 <以下略> // イメージを取得する // 今回は OFFICIAL から centos のイメージを取得 # docker pull centos Pulling repository centos 87e5b6b3ccc1: Download complete 504a65221a38: Download complete 68edf809afe7: Download complete 511136ea3c5a: Download complete 5b12ef8fd570: Download complete // イメージの一覧を表示する // CentOS 5, 6, 7 と最新のイメージが配布されている # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos5 504a65221a38 13 days ago 467.1 MB centos centos6 68edf809afe7 13 days ago 212.7 MB centos centos7 87e5b6b3ccc1 13 days ago 224 MB centos latest 87e5b6b3ccc1 13 days ago 224 MB