20200912のdockerに関する記事は9件です。

VirtualBoxのCentOS7にDockerコンテナでJenkinsサーバーを構築し、ローカルPCからJenkinsサーバーにアクセスする方法

本記事を作成することになったきっかけ

下記Udemyの講座では、VirtualBoxとCentOS7とDockerを利用するので、その手順を忘れないようにしたいと思い、作成しました。
【Jenkins, From Zero To Hero: Become a DevOps Jenkins Master】
https://www.udemy.com/course/jenkins-from-zero-to-hero/

バージョン

VirtualBox、Dockerのインストール、CentOS7のISOのダウンロードが必要ですが、その手順は新しいものが出るたびに変わって記事にしても数ヶ月後には使えなくなることが多いので割愛し、バージョンだけ載せます。
VirtualBox 6.1.14 platform packages
Docker 19.03.12
Docker Compose 1.26.2
CentOS-7-x86_64-Minimal-1810.iso
http://repos-tx.psychz.net/centos/7.6.1810/isos/x86_64/
にCentOSのisoあるのでクリックしてダウンロードします。

対象の読者

mac利用者
UdemyのJenkins, From Zero To Hero: Become a DevOps Jenkins Masterの講座で何言ってるか分からなかった人

VirtualBox上にCentOSの仮想環境を構築する方法

スクリーンショット 2020-09-08 0.23.23.jpg

新規をクリックします。

スクリーンショット 2020-09-08 0.25.22.jpg

名前をJenkins
マシンフォルダーはデフォルト
タイプはLinux
バージョンはRed Hat(64-bit)
にします。
バージョンをRed Hat(64-bit)にした理由は、CentOSがRedHat系列のLinuxで、CentOS-7-x86_64-Minimal-1810が64bit用だからです。

続きをクリックします。

スクリーンショット 2020-09-08 0.28.58.jpg

メモリーサイズが表示されます。
2048MBにしてクリックします。

スクリーンショット 2020-09-08 0.30.59.jpg

仮想ハードディスクを作成するを選択して作成をクリックします。

スクリーンショット 2020-09-08 0.31.47.jpg

VDIを選択して続きをクリックします。

スクリーンショット 2020-09-08 0.32.32.jpg

可変サイズを選択して続きをクリックします。

スクリーンショット 2020-09-08 0.34.04.jpg

上のパスは特に弄りません。
サイズを20GBにします。

作成をクリックします。

スクリーンショット 2020-09-08 0.35.44.jpg

Jenkinsサーバーを構築するための環境を構築することができました。

設定をクリックしてネットワークを開きます。
スクリーンショット 2020-09-08 0.36.55.jpg

アダプター1の割り当てをNATからブリッジアダプターに変更します。
名前は人によって違うかも・・・。
僕の家はWi-Fiでネットワーク接続しているので、Wi-Fiとなっているen0を設定しています。
有線の方は多分Ethernetかな・・・?

スクリーンショット 2020-09-08 0.38.36.jpg

設定できたらOKをクリックします。

スクリーンショット 2020-09-08 0.40.52.jpg

起動をクリックしま・・・と、その前に、VirtualBoxにマウスカーソルの操作権限を取られて全く動かせない人が続出します。解決方法は、左Commandキーを1度押すだけでいいので、その操作だけを必ず覚えて次の手順へ進みましょう。発症するタイミングは人それぞれです。
では気を取り直して、起動をクリックします。

人によってはここでセキュリティとプライバシーの設定が必要になるのでVirtualBox.appのキーボードからの入力の監視を許可してあげます。

スクリーンショット 2020-09-08 0.43.08.jpg

設定が終わったらVirtualBoxを再起動して、再度Jenkinsの仮想環境を起動します。

スクリーンショット 2020-09-08 0.45.13.jpg

人によってはプライバシーのほうも許可しないといけないのでこちらもチェックしてまたVirtualBoxを再起動します。

※それが終わってからJenkinsという仮想環境を起動してもなぜか下記の画面に行かなかったので断念して一度作成した環境を削除してからここまでの手順をもう一度繰り返します。

スクリーンショット 2020-09-08 0.49.35.jpg

ここでダウンロードしておいたCentOS7のISO(CentOS-7-x86_64-Minimal-1810.iso)を指定しますが、Empty(空)となっています。指定する必要があるので右のフォルダをクリックします。
Addをクリックし、ISOを保存した先まで移動して選択します。
Chooseをクリックします。

スクリーンショット 2020-09-09 1.20.30.jpg

Startをクリックします。

スクリーンショット 2020-09-08 0.56.04.jpg

上下キーで選択、Returnキーで決定です。
Install CentOS7にカーソルをあわせて、Returnキーを押します。

スクリーンショット 2020-09-08 1.01.35.jpg

CentOS7のインストールが始まるので少し待ちます。
意外とすぐ終わります。

スクリーンショット 2020-09-08 1.02.37.jpg

言語設定です。
日本語を選択して続行をクリックします。
※画面の解像度を変更してしまうとかなり操作しづらくなるのでデフォルトのサイズのまま操作します。

スクリーンショット 2020-09-08 1.04.33.jpg

スクリーンショット 2020-09-08 1.05.05.jpg

下のほうにスクロールします。

スクリーンショット 2020-09-08 1.05.52.jpg

自動パーティシ・・・択されましたをクリックします。

スクリーンショット 2020-09-08 1.07.12.jpg

何も弄らずに完了をクリックします。

スクリーンショット 2020-09-08 1.08.07.jpg

すると、マークが消えました

続いて、ネットワークとホスト名をクリックします。

スクリーンショット 2020-09-08 1.16.43.jpg

右上のEthernet(enp0s3)をクリックします。

スクリーンショット 2020-09-08 1.17.14.jpg

終わったら完了をクリックします。

スクリーンショット 2020-09-08 1.08.07.jpg

インストールの開始をクリックします。

スクリーンショット 2020-09-08 1.09.21.jpg

ROOTパスワードを作成するのでROOTパスワードをクリックします。

スクリーンショット 2020-09-08 1.11.59.jpg

ここでは分かりやすくパスワードを123456にします。

スクリーンショット 2020-09-08 1.12.18.jpg

入力したら完了を2回クリックします。

スクリーンショット 2020-09-08 1.19.53.jpg

続いて、ユーザーを作成します。

スクリーンショット 2020-09-08 1.21.03.jpg

下の画像のように入力します。
フルネームはjenkinsにします。
ユーザー名はフルネームを入力するたびに自動で入力されます。
このユーザーを管理者にするとこのアカウントを使用する場合にパスワードを必要とするにチェックを忘れずに行います。
パスワードは123456にしておきます。

スクリーンショット 2020-09-08 1.22.12.jpg

終わったら、左上の完了を2回クリックします。

あとはインストールが完了するまで待ちます。

スクリーンショット 2020-09-08 1.22.53.jpg

終わったら、右下の設定完了をクリックします。

スクリーンショット 2020-09-08 1.25.24.jpg

終わったら再起動をクリックします。

スクリーンショット 2020-09-09 1.33.37.jpg

なんかこんな感じでエラーログが出て再起動できない場合は、設定が原因です。
設定→ディスプレイ→グラフィックスコントローラーをVMSVGAからVBoxVGAに変更します。※これ直すのに丸1日かかりました。

スクリーンショット 2020-09-09 1.41.38.jpg

無効な設定が見つかりましたと出ますが、問題ありません。OKを押して再度起動します。

起動時にISOの選択画面が出てもキャンセルでOKです。

スクリーンショット 2020-09-09 1.43.24.jpg

無事、CentOS7が起動しました。
localhost login:jenkins
password:123456
でログインします。

画面クリアのショートカットキーを覚えます

clear

とコマンドを打つと文字が全て消えますが、効率が悪いので、ショートカットキーを必ず覚えるようにします。
Command+l(エル)で、clearコマンドと同様の動作が行われます。

スクリーンショット 2020-09-09 1.57.23.jpg

IPアドレスを調べます

ip a

と入力すると、IPアドレスを調べることができます。

スクリーンショット 2020-09-09 1.58.49.jpg

enp0s3のinetを見ると192.168.0.6となっています。
これが、この仮想環境のIPアドレスになります。

terminalでアクセスするための設定をします

VirtualBoxマネージャーを開いた状態で、ファイル→ホストネットワークマネージャーを選択します。

[ファイルタブ]
スクリーンショット 2020-09-09 2.08.07.jpg

スクリーンショット 2020-09-09 2.08.43.jpg

作成をクリックします。

スクリーンショット 2020-09-09 2.09.14.jpg

IPアドレスは192.168.56.101であることを確認します。
vboxnet0が作成されたことを確認し、閉じるをクリックします。
多分みんな同じIPアドレスになると思うのですが、違ったら以降の手順で使うIPアドレスを読み替える必要があります。

さっき作ったVMの設定→ネットワーク→アダプター2にホストオンリーアダプターを設定します。

スクリーンショット 2020-09-09 2.10.38.jpg

OKをクリックします。

仮想環境を起動し、ログインします。
localhost login:jenkins
password:123456

nmtuiコマンドを実行します。
このコマンドは、ネットワークの設定をコマンドではなく視覚的に設定できるようにするためのコマンドです。いわるゆGUIというやつですね。
一応コマンドでもできるっぽいですが、そのやり方は割愛します。色んなファイルを開いてviテキストで編集して、とか面倒ですからね。

スクリーンショット 2020-09-09 2.13.34.jpg

nmtui画面は上下キーおよびReturnキーで操作します。
上下キーで移動し、Edit a connectionをReturnキーで選択します。

スクリーンショット 2020-09-09 2.14.10.jpg

enp0s3をReturnキーで選択します。

スクリーンショット 2020-09-09 2.15.04.jpg

IPv6をReturnキーでIgnoreに変更します。
Automatically connectは[X]になっていることを確認できればOKです。

OKにカーソルを合わせ、選択します。

続いて、* * * *を選択します。
(本当はenp0s8とかになっているはずですが、なんかバグってますね。知り合いも同じ表示になってました。)

スクリーンショット 2020-09-09 2.17.13.jpg

Profile nameがバグってたらenp0s8にしておきます。
Ipv4 CONFIGURATIONをManualに変更し、Addressesを192.168.56.101/24にします。

スクリーンショット 2020-09-09 2.19.16.jpg

続いて、Ipv6をIgnoreに変更します。
Automatically connectは[X]になっていることが確認できればOKです。

スクリーンショット 2020-09-09 2.20.46.jpg

OKを選択し、Back→Quitで終了します。

続いて、下記コマンドを入力します。

service NetworkManager restart
service network restart

※パスワードを求められたら、123456を入力します。

これで、macからterminalを利用してVirtualBoxのCentOSにアクセスするための準備が整いました。

terminalでアクセスします。

Command+Spaceでspotlight検索を開き、terminal.appと打ってReturnキーを入力し、terminalを起動します。
Windowsと異なるmacの強みですね。

Windowsの方はputtyとかteratermを使うといいと思います。
(ここまでの手順で結構Windowsと違うと思うのでWindowsの方は見てないと思いますが・・・)

terminalでssh接続をするために、下記コマンドを入力します。

ssh root@192.168.56.101

パスワードを求められたら123456を入力します。

スクリーンショット 2020-09-09 2.25.54.jpg

そうすると、terminalでVirtualBox上のCentosにアクセスできます。
これで、以降はVirtualBoxで仮想マシンを起動してCentOSを起動し、適当に最小化しておけば、mac側からCentosを操作することが可能になりました。VirtualBoxで表示される画面での操作はやりづらいですからね。

yumコマンドが使えるかどうかチェック

ためしにyum listを実行します。
本来はこれでyumのアップデートが始まったあと、yumでインストールしたソフトが一覧表示されるのですが、もし上手く行かなかったときの記事を知り合いが書いています。

僕は何もしなくても上手く行きましたが、もし上手く行かないようでしたら参考にしてみてください。
https://qiita.com/yuri2509/items/6715fe853515a8719518

Dockerをインストール

一度ネットワークに接続できるかどうかを確認します。

ping google.com

スクリーンショット 2020-09-12 20.45.09.jpg

繋がってたら画像のようになります。
延々とログが流れ続けるので、Control+cで中断します。

スクリーンショット 2020-09-12 20.46.19.jpg

googleでdocker for centosと検索し、Install Docker Engine on CentOS | Docker DocumentationのWebページを開きます・

スクリーンショット 2020-09-12 20.47.19.jpg

スクリーンショット 2020-09-12 20.48.35.jpg

このページを元に、コマンドを上からどんどん入力します。
一応コマンド載せますが、公式ホームページに載ってるコマンドは日々変わるのでコマンド全然違う可能性あります。

まずはDockerの古いバージョンのアンインストール(Dockerが入ってなければやる意味なし)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

引数に一致しませんってログがいっぱい出ます。つまりdockerはインストールされていないということですね。

続いて、yumを便利にするソフトyum-utilsをインストールします。

sudo yum install -y yum-utils

続いて、docker用のリポジトリを作成します。

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

これで、以下のディレクトリにdocker-ce.repoが作成されました。
/etc/yum.repos.d
┗docker-ce.repo

ようやく、dockerをインストールするところまで来ました。
以下を実行します。

sudo yum install docker-ce docker-ce-cli containerd.io

途中で止まってても大丈夫です。それはミラーサイトを検索している最中です。そのため、キー入力は控えましょう。入力してしまうとインストールが途中で中断されたりするので再度コマンドを実行する必要があります。(僕は一度やらかしました)
途中で[y/d/N]とか[y/N]とか出てきたらyを入力して進めます。

スクリーンショット 2020-09-12 21.13.41.jpg

最後に完了しました!と表示されていたらDockerのインストール完了です。
スクリーンショット 2020-09-12 21.14.10.jpg

dockerを起動します。

sudo systemctl start docker

スクリーンショット 2020-09-12 21.17.21.jpg

何も起こりませんが問題ありません。

公式サイトのコマンド集にはありませんが、起動時に自動でDockerを起動するためのコマンドを実行します。

sudo systemctl enable docker

スクリーンショット 2020-09-12 21.20.37.jpg

dockerがインストールされたかどうかを確認するために、下記コマンドでdockerのプロセスを表示してみます。

docker ps

スクリーンショット 2020-09-12 21.25.07.jpg

今は管理者で実行しているのでうまく動きますが、CentOSインストール時にjenkinsユーザーを作成したと思います。そちらにsuコマンドを使ってユーザーをjenkinsユーザーに変更し、docker psを実行しても権限がないため失敗します。そのため、下記コマンドを実行して実行できるようにしておきます。

sudo usermod -aG docker jenkins

その設定を反映するには、一度exitでssh接続を解除して再度ssh接続します。
これで、jenkinsユーザーでもdocker psを実行して動作するようになります。

docker composeのインストール

googleでdocker compose installationと検索します。

スクリーンショット 2020-09-12 21.28.57.jpg

Install Docker Compose | Docker Documentationを開きます。

スクリーンショット 2020-09-12 21.28.53.jpg

少し下に行くとmacとかWindowsとかのタブがあるのでLinuxを選択します。

スクリーンショット 2020-09-12 21.30.24.jpg

そこに表示されているコマンドを入力していきます。こちらも日々変わるので、公式サイルを参考にしたほうがいいですが、コマンドは一応載せておきます。

docker composeのインストールコマンドです

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

すぐ終わります。

スクリーンショット 2020-09-12 21.32.50.jpg

コマンドの通り、/usr/local/binにdocker-composeがインストールされます。

スクリーンショット 2020-09-12 21.37.08.jpg

cdでディレクトリを移動し、pwdコマンドでパスを表示し、llコマンドでパーティション(-rw-r--r--ってなってるやつ)を表示してみました。

実行権限がないので、このままではdocker-composeの実行権限がありません。そのため、実行権限を付与します。

下記コマンドを実行して実行権限を付与することができます。

sudo chmod +x /usr/local/bin/docker-compose 

スクリーンショット 2020-09-12 21.38.48.jpg

パーティションが-rw-r--r--から-rwxr-xr-xに変化しましたね!
これは実行権限が付与されたことを表します。

docker-composeがインストールされていたら、バージョンを表示することができるので、その方法で確認します。

docker-compose -v

スクリーンショット 2020-09-12 21.40.56.jpg

docker-compose version 1.27.1となっていますね。インストール成功です。

dockerを利用してjenkinsサーバーを構築

docker jenkins imageでgoogle検索します。

スクリーンショット 2020-09-12 21.53.45.jpg

jenkins/jenkinsのほうを開きます。こちらはjenkinsのチームがメンテしているDockerイメージです。
jenkinsとなっているほうは公式イメージですが、こちらは間違いなので注意!

スクリーンショット 2020-09-13 0.35.29.jpg

そうすると、右側にインストールするためのコマンドが載っているのでコピペしてterminalで実行します。※CentOSにssh接続でログインしている状態でやります

docker pull jenkins/jenkins

スクリーンショット 2020-09-12 21.57.24.jpg

これでjenkinsのDockerイメージを取得することができました。
以下のコマンドでjenkinsのDockerイメージがあることを確認します。

docker images

スクリーンショット 2020-09-12 21.58.24.jpg

余談ですが、Dockerのデータはどこにあるのでしょう?
それは、Dockerの情報を表示することで調べることができます。

docker info

スクリーンショット 2020-09-12 22.00.49.jpg

いっぱい情報が表示されます。
この中にdockerのルートディレクトリが書かれているのですが、探すのが大変です。

そのため、以下のコマンドですぐに見つけることができます。

docker info | grep -i root

grepコマンドは、文字列を検索するのに便利です。
docker infoで表示される文字列から、rootが含まれている行を抽出して表示してくれます。-iをつけることで、大文字小文字の区別なく検索することができます。

スクリーンショット 2020-09-12 22.03.19.jpg

/var/lib/dockerがDockerのルートディレクトリであることが確認できました。
docker関連のデータはこの中に保存されます。

続いて、jenkinsのデータを入れるためのディレクトリを作成します。
/home/jenkins/jenkinsの形で作成します。
まずはhomeディレクトリに移動してjenkinsディレクトリを作成し、更にその中にjenkinsディレクトリを作成します。

cd /home
mkdir jenkins
cd jenkins
mkdir jenkins
pwd

スクリーンショット 2020-09-12 22.22.00.jpg

これでjenkinsディレクトリを作成することができました。
最後にpwdコマンドで現在のディレクトリを表示しています。

練習のために、mvコマンドを使ってディレクトリ名を変更してみます。

修正前

/home/jenkins/jenkins

修正後

/home/jenkins/jenkins-data

以下のコマンドを実行します。

cd /home
cd jenkins
mv jenkins jenkins-data
ll
cd jenkins-data
pwd

スクリーンショット 2020-09-12 22.25.11.jpg

無事ディレクトリ名を変更することができました。

続いて、/home/jenkins/jenkinsの中にdocker-compose.ymlを作成します。

下記コマンドを実行して新規ファイルを作成します。

vi docker-compose.yml

スクリーンショット 2020-09-12 22.28.02.jpg

軽くviの説明をしておくと、デフォルトはコマンドを受け付ける通常モードで、iでインサートモードにして文字を入力でき、escでインサートモード解除して通常モードになり、通常モードで「:wq」を実行すると保存して終了、「:q」で閉じる、「:q!」で保存せず強制終了です。
これだけの知識があればとりあえずなんとかなると思います。多分。

viでどんどん書き込んでいきます。
まずはバージョン3を指定します。

docker-compose.yml
version: '3'

続いて、jenkinsのコンテナ名を指定します。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins

Dockerイメージを指定します。
これは、docker imagesを実行したときのRepositoryに記載のあるイメージ名を指定します。必ず確認してから記述する癖をつけるといいと思います。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins

続いてポートを指定します。
jenkinsはhttpサーバーなので8080にします。
左側がjenkinsサーバーのポート番号、右側がmacでアクセスする時のポート番号になります。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"

続いて、ボリュームを作成します。
Dockerにはボリュームという概念があります。Dockerコンテナって作成してから壊すとコンテナ上のすべてのデータが吹き飛ぶんですよね。吹っ飛ばしたくないデータがある場合はどうすればいいのでしょう?答えはボリュームに保存すればいいのです。
今はとりあえずそんくらいの認識があればいいでしょう。
一度escキーでインサートモードから通常モードにして:wqで保存して終了し、ボリューム用の領域を作成します。
以下のディレクトリにいることを確認します。

/home/jenkins/jenkins-data

続いて、ボリューム用の領域であるjenkins_homeディレクトリを作成します。

mkdir jenkins_home

この中に、Dockerコンテナ上のデータを保存できます。
作成し終わったらdocker-compose.ymlの編集に戻ります。

vi docker-compose.yml

ボリュームを指定します。左がさっき作ったディレクトリ(コピー先)、右がDockerコンテナ上のディレクトリ(コピー元)です。
右側のディレクトリが/var/lib/jenkins_homeではなく、/var/jenkins_homeとなっている情報は古いです。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "$PWD/jenkins_home:/var/lib/jenkins_home"

続いて、ネットワークに関する情報4行を記述します。
1つはjenkins:の配下に、もう一つはdocker-compose.ymlの配下に記述しています。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "$PWD/jenkins_home:/var/lib/jenkins_home"
   networks:
      - net
networks:
  net:

最終的には以下の形になります。

docker-compose.yml
version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "$PWD/jenkins_home:/var/lib/jenkins_home"
    networks:
      - net
networks:
  net:

スクリーンショット 2020-09-12 23.10.56.jpg

escキーで通常モードに戻り、:wqで保存します。

終わったら、jenkins_homeディレクトリの権限を変更します。

sudo chown 1000:1000 jenkins_home -R

docker-compose.ymlのあるディレクトリに移動して、dockerコンテナを起動します。

docker-compose up -d

末尾の-dはバックグラウンドで実行という意味です。

スクリーンショット 2020-09-12 23.12.04.jpg

下記コマンドを実行します。

docker ps

スクリーンショット 2020-09-12 23.29.35.jpg

これで、JenkinsサーバーがDockerコンテナ上で動きました。

[もし表示されなかったら]
下記コマンドでjenkinsが表示されていたら
Dockerコンテナの起動に失敗しています。
docker ps -a

下記のコマンドでログを表示することができ、
エラー原因を調査できます。
docker-compose logs jenkins

Dockerコンテナ側のボリュームが/var/lib/jenkins_home
ではなく、/var/jenkins_homeとなっている情報は古いと
先ほど書きましたが、それはこのログを表示することで
解決するに至りました。

jenkinsで生成されたパスワードが必要なので、dockerでログを表示する下記コマンドを実行します。

docker logs -f jenkins

スクリーンショット 2020-09-12 23.34.39.jpg

「1a193f6a36674f58856aed0b3041bc13」という文字が見えますが、これをコピーしてメモします。

ラストスパートです。

VirtualBox上のCentOSのIPアドレスはなんでしたか?
そう、192.168.56.101でしたね。
では、それにhttpサーバーを示すポート番号8080をくっつけて、「192.168.56.101:8080」とwebブラウザのURLに入力します。

スクリーンショット 2020-09-12 23.41.57.jpg

行けるか・・・?

スクリーンショット 2020-09-12 23.42.12.jpg

無事、jenkinsにアクセスすることができました〜!
マンモスうれぴ〜!

これでVirtualBoxのCentOS7にDockerコンテナでJenkinsサーバーを構築し、ローカルPCからJenkinsサーバーにアクセスすることができました。

仕上げに、先程メモした1a193f6a36674f58856aed0b3041bc13を貼り付けてアクセスできることを確認します。(この文字列は人によって違うよ!)

スクリーンショット 2020-09-12 23.43.53.jpg

大丈夫そうですね。
Jenkinsの使い方については以下で解説しています。良かったら併せてこちらも読んでみてください。

【Jenkinsとは?】Jenkinsのインストールから使い方まで世界一分かりやすく解説します
https://qiita.com/JUN_WEB_FREE/items/c7b42528a87911386391

dockerを勉強するのにオススメのサイト

今回特にdockerについての解説はしていませんが、以下のサイトが分かりやすいので超オススメです!

キツネの惑星
https://kitsune.blog/engineer/docker

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerのブリッジでIPアドレスが干渉した

はじめに

物理ネットワークで 172.17.xxx.xxx のアドレス帯を使用したときに起きた話。

Ubuntu 18.04.3 LTS
Docker version 19.03.5

本題

Dockerが自動生成するブリッジインタフェースが 172.17.0.xxx/16 を使用しており、
物理ネットワークのアドレス帯と干渉した

/etc/docker/daemon.json で自動生成される際のIPアドレスを指定できるらしい。

/etc/docker/daemon.json
{
    "bip": "192.168.0.1/24",
    "default-address-pools":[
        {
            "base":"192.168.0.0/16",
            "size":24
        }
    ]
}

ポイントとしては

  • bipdocker0 向け
  • default-address-poolsbr-xxxxxxxxxxxx 向け
  • bip は無くても default-address-pools から自動生成されるので省略して構わない

でした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker ComposeでNode.jsの環境構築

動機

Create React Appを少し遠回りしてはじめようをローカル環境を汚さずに実践したかっため、タイトルのような環境構築を目指しました。

最終的なディレクトリ構成

最終的なディレクトリ構成
node-docker/
    |--docker-compose.yml
    |--node/
        |--app/

docker-compose.yml

Docker Compose 概要
Compose とは、複数のコンテナを定義し実行する Docker アプリケーションのためのツールです。

まずプロジェクトフォルダnode-dockerを作成し、そこにdockercompose.ymlファイルを作成します。

現在のディレクトリ構成
node-docker/
    |--docker-compose.yml
docker-compose.yml
version: '3'
services:
  node:
    image: node:14.9.0-alpine3.10
    container_name: node
    volumes:
      - ./node/app:/app
    tty: true
    ports:
      - 3000:3000
version

docker-compose.ymlのファイルフォーマットのバージョン

services

各コンテナをサービスとして定義できます。

node

サービス名

image

コンテナを実行時に元となるイメージを指定します。
イメージが存在していなければ、ComposeはDocker Hubからpull(取得)を試みます。
Dockerfileからイメージを作成する場合は、例えばnodeディレクトリの下にDockerfileを作成し、以下のように指定します。
build: ./node

container_name

デフォルトで生成される名前の代わりに、カスタム・コンテナ名を指定します。なお、デフォルトだとnode-docker_node_1という名前になります。

volumes

ローカルのパス(左)とコンテナのパス(右)を共有します。

tty

端末を起動するかどうかを指定しています。(多分)

ports

ポートを公開します。ホストとポートを指定(ホスト:コンテナ)するか、コンテナのポートのみ指定します(ホスト側のポートはランダムに選ばれます)。
exposeはポートを露出し、リンクされたサービス間でのみアクセス可能になります。

コンテナの作成と起動

ここまでで必要なファイルが揃ったので、コンテナの作成と起動を行っていきます。
Dockerfileからイメージを作成する場合は、Docker-compose buildする必要がありますが、今回は既にビルドされたイメージをリモートから取得するので必要ありません。
作業はdocker-compose.ymlが置いてあるディレクトリ上で行います。

terminal
$ docker-compose up -d

dオプションにより、バックグラウンドで起動することができます。

nodeコンテナに入る

以上でnode環境は整いましたが、node環境はコンテナ上にあるため、作業はその上でする必要があります。
そのために、起動中のコンテナ内で指定したコマンドを実行できるexecコマンドを利用して、コンテナ上でシェル、端末を起動します。

terminal
$ docker-compose exec node sh

コンテナ内のディレクトリ構成は以下のようになっていて、docker-compose.ymlで指定したためコンテナでのappディレクトリとローカルのnode/appディレクトリは対応しています。

コンテナ内のディレクトリ構成
/
    |--app
    |--bin
    |--dev
    |--home
    |--lib
    |--media
    |--mnt
    |--opt
    |--proc
    |--root
    |--run
    |--sbin
    |--srv
    |--sys
    |--tmp
    |--usr
    |--var

作業は、ローカルと共有できているappディレクトリでした方が良いと思います。

参考

Compose file version 3 reference
Compose ファイル・リファレンス
Docker Compose - docker-compose.yml リファレンス
【初心者向け】Dockerで手軽にNode.js開発環境構築 (2)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ubuntu 20.04.1 上でプロキシ環境でdocker を利用する

ubuntu 20.04.1 上でプロキシ環境でdocker を利用する

プロキシを用意する

以下の記事のようにしてプロキシを用意しておく。
https://qiita.com/m-tmatma/items/7b5ce812c85f30546209

この記事ではプロキシの IP が 192.168.11.61 で、ポート番号が 3128 という前提で記載する。

プロキシ経由でしかアクセスできない環境をエミュレートする

プロキシ経由でしかアクセスできない環境をエミュレートする。
これにより、設定が誤っていた場合に検出できる。

HTTP, HTTPS を禁止

sudo iptables -A OUTPUT -j REJECT -p tcp --dport 80
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 443

Git, SSHを禁止 (これは必須じゃないけど念のため)

sudo iptables -A OUTPUT -j REJECT -p tcp --dport 9418
sudo iptables -A OUTPUT -j REJECT -p tcp --dport 22

apt

apt のプロキシ設定をする

sudo nano /etc/apt/apt.conf

以下の内容で保存する。

Acquire::http::Proxy "http://192.168.11.61:3128";
Acquire::https::Proxy "http://192.168.11.61:3128";

以下のようにプロキシの変数を設定する。

test@test-vmware:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://192.168.11.61:3128";
Acquire::https::Proxy "http://192.168.11.61:3128";

apt の update をする

sudo apt update -y
sudo apt upgrade -y

docker のインストール

インストール

https://qiita.com/m-tmatma/items/06eb40514306e09142c4 を参考に docker をインストールする。

sudo apt install -y docker.io docker-compose

カレントユーザーを docker グループに追加 (docker を起動するときに毎回 sudo する場合は省略可)

この手順は docker コマンドを sudo なしで実行したい場合のみ必要です。

docker を sudo なしで実行すると便利なので、カレントユーザーを docker グループに追加する。
反映するために再起動する。

sudo usermod -aG docker $USER
sudo reboot

なお、ここで再起動した場合は、iptables の手順は再度実行すること。

dockerd に環境変数でプロキシを設定する。

プロキシ設定

以下コマンドを実行する。

sudo systemctl edit docker

除外 IP を指定しない場合

sudo systemctl edit docker で起動するエディタで 以下の内容を入力して保存して終了する。

[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128"
Environment="HTTPS_PROXY=http://192.168.11.61:3128"

除外 IP を指定する場合

sudo systemctl edit docker で起動するエディタでNO_PROXY も追加で指定する。
以下の内容を入力して保存して終了する。

[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128"
Environment="HTTPS_PROXY=http://192.168.11.61:3128"
Environment="NO_PROXY=localhost,127.0.0.1"

設定の確認

/etc/systemd/system/docker.service.d/override.conf に保存される。
以下は 除外 IP を指定しない場合の例

$ cat /etc/systemd/system/docker.service.d/override.conf 
[Service]
Environment="HTTP_PROXY=http://192.168.11.61:3128" "HTTPS_PROXY=http://192.168.11.61:3128"

プロキシ設定を反映

設定を反映する。

sudo systemctl daemon-reload

プロキシ設定を確認

設定を確認する。

sudo systemctl show docker --property Environment

docker を再起動

docker を再起動する。

sudo systemctl restart docker

以下を実行して、HTTP ProxyHTTPS Proxy に反映されているのを確認する。

docker info

参考
http://docs.docker.jp/engine/articles/systemd.html#http
https://docs.docker.com/config/daemon/systemd/

ユーザーごとの docker の設定

設定ファイルを保存するフォルダを作る。

mkdir -p ~/.docker

~/.docker/config.json を編集する。

nano  ~/.docker/config.json

除外 IP を指定しない場合

~/.docker/config.json で以下のような内容を入力して保存する。

{
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.11.61:3128",
      "httpsProxy": "http://192.168.11.61:3128"
    }
  }
}

除外 IP を指定する場合

プロキシに除外条件を指定する場合は~/.docker/config.jsonnoProxy で指定する。

{
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.11.61:3128",
      "httpsProxy": "http://192.168.11.61:3128",
      "noProxy": "localhost,127.0.0.1"
    }
  }
}

参考
https://docs.docker.com/network/proxy/
https://docs.docker.com/network/proxy/#configure-the-docker-client

docker pull の確認

以下のように docker pull できる。

$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
df20fa9351a1: Pull complete 
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

念のため iptables で確認しても http と https は直アクセスは禁止されている。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  anywhere             anywhere             tcp dpt:https reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:http reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:git reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             tcp dpt:ssh reject-with icmp-port-unreachable

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ansible MoleculeをDocker-outside-of-Docker(DOOD)で動かす

Ansible MoleculeをDocker-outside-of-Docker(DOOD)パターンで動かす方法です。DOODで動かすことによりMoleculeをOSヘインストールする必要がなくなります。

検証環境

  • CentOS7 (GCE)

Dockerをインストールする

Docker公式サイトにあるInstall Docker Engine on CentOS | Docker Documentation に従います。

MoleculeをDocker outside of Dockerで起動する

Ansible Moleculeのドキュメントの Common Molecule Use Cases — Molecule documentation に従います。

Ansible Role / Playbookのディレクトリへ移動し docker run コマンドを実行します。

cd path/to/ansible-role

docker run --rm -it \
    -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -w /tmp/$(basename "${PWD}") \
    quay.io/ansible/molecule:3.0.8 \
    molecule test

その他

docker run コマンドが長いため ~/.bashrc へaliasでショートカットを作成すると良いでしょう。

例えば実行環境がAWS EC2ならログインユーザーの ~/.bashrc へ以下のように記述します。

~/.bashrc
alias molecule='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                molecule'

これで docker run コマンドから呼び出されるmoleculeコマンドがrootに変更せずに 通常のmolecule コマンドとして実行出来るようになります。

また ansible-playbookansible-lint のコマンドにもaliasを採用すると良いかと思います。

最終的な ~/.bashrc はこのようになります。

~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

alias molecule='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                molecule'

alias ansible='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                ansible'

alias ansible-lint='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                ansible-lint'

alias ansible-galaxy='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                ansible-galaxy'

alias ansible-playbook='sudo docker run --rm -it \
                -v "$(pwd)":/tmp/$(basename "${PWD}"):ro \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -w /tmp/$(basename "${PWD}") \
                quay.io/ansible/molecule:3.0.8 \
                ansible-playbook'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSL2とdocker のインストールに挑戦

先日、wsl2のインストールを断念したけど、今(2020年9月12日)はできる様になっていたのでそのメモです

結論

気がつけば、version 1903でも、WSL2がサポートされるようになっていて、'Virtual Machine Platform'を有効にして、WSLのデフォルトのバージョンを2にすれば良かった。

参考
https://docs.microsoft.com/en-us/windows/wsl/install-win10#update-to-wsl-2

1. Virtual Machine Platform を有効にする(管理者権限で起動)

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

image.png

2. WSL2 をデフォルトバージョンにする

wsl --set-default-version 2

image.png

3. バージョン 1903から1909にアップデートする

image.png

Win+R → コマンド winver で以下が表示されます
image.png

4. Ubuntu ディストリビューションをwsl2に設定する

既に wsl でubuntuとか実行している様であれば、そのバージョンをwsl2にする必要があります
以下をpowershell上で実行しました

wsl --set-version Ubuntu 2

image.png

コマンド wsl -l -v でバージョンを確認します

image.png

4. そして、dockerを入れる

https://docs.docker.jp/docker-for-windows/wsl.html

WSL 2 Linux カーネルの更新

  1. こちらをダウンロード:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  2. インストーラーを実行
  3. なんかカワイイのがはじまりました!

image.png

  1. docker descktopの2.3.0.2 以上のダウンローが必要と言うことで、バージョンを改めて確認 image.png

でも、WSL2の設定はインストール時に決まっていたためか変更出来なかったので、ここはdocker desktopを入れ直すことにしました。。

アンインストールして再インストールしただけだと、hyper-v版が上がってしまったので。。

どうやら、windows 10 version 2004が必要っぽいので、こちらからセットアップ
https://www.microsoft.com/ja-jp/software-download/windows10
image.png
image.png

version 2004にしたら、wsl2が使えるものがインストールできる様になりました。
アンインストールする必要なかったかも。。

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerのimageを全て削除する

下記のコマンドを実行すればできます。

docker rmi -f $(docker images -aq)

まず、imageの削除はdocker rmi <image ID>でできます。
以下に例を示します。

docker rmi e035f93e2af9

ですが、これだとたまに消えないimageがあるので、-fオプションをつけて強制的に削除します。

docker rmi -f e035f93e2af9

次に、全てのimageのIDを表示させるコマンドを示します。

docker images -aq

-aオプションで隠れているimageのIDも表示させることができます。
-qオプションでimageのIDのみを表示させることができます。

これらを組み合わせて、最初に示した通り、下記のコマンドで全てのimageを削除することができます。

docker rmi -f $(docker images -aq)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker イメージを使った squid によるプロキシサーバー

squid によるプロキシサーバー

https://hub.docker.com/r/minimum2scp/squid の docker イメージを使った場合

Ubuntu 20.04 上で確認しました。

Ubuntu 側の設定

docker run --rm --name proxy-squid -d -p 3128:3128 minimum2scp/squid
sudo apt install -y firewalld
sudo firewall-cmd --zone=public --add-port=3128/tcp  --permanent
sudo firewall-cmd --reload

クライアント

プロキシサーバー上で試す場合

curl  --proxy http://localhost:3128 https://www.yahoo.co.jp

別のマシンで試す場合

proxy.address はプロキシのアドレス

curl  --proxy http://proxy.address:3128 https://www.yahoo.co.jp
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Jupyter NotebookサーバーのTensor Board対応化

Jupyter Notebookサーバーを構築して数ヶ月となりました。この間Jupyter Notebookを活用してTensor Flowの勉強をしたり、Kaggleの画像認識コンペに参加して、Tensor Flowでモデルを構築したりしてきましたが、Tensor Boardが使えない1ことが分かりました。今回はdocker-compose.ymlをカスタマイズしてTensor Boardを使える様にしようと思います。

過去の記事

Tensor Boardへの対応化

localhostでTensor Boardを実行している場合は、実行時に表示されるURLをWebブラウザで開けばTensor Boardを表示させることが出来ます。しかし、Docker上で実行してるJupyter Notebookサーバー上のNotebookでTensorboardを実行可能にするためにはコンテナ上の60062ポートを公開する必要が有ります。公開したポートに対してポートフォワーディングすることでTensor Boardにアクセス出来る様になります。このサーバーは過去記事の方法で構築している為、Docker Composeベースで設定を行います。

コンテナの停止

リモートサーバーにログインし、docker-compse.ymlが格納されているディレクトリに移動します。ディレクトリに移動後、コンテナを一旦停止します。

docker-compose stop

docker-compose.ymlの改良

docker-compose.ymlを改良して6006ポートを公開する様に設定します。

6006ポートの公開設定を追加
version: "2.4"                                                                                                                                               
services:
    tensorflow_notebook:
        build:
            context: .
            dockerfile: Dockerfile
        runtime: nvidia
        environment:
            - NVIDIA_VISIBLE_DEVICES=all
            - NVIDIA_DRIVER_CAPABILITIES=all
        ports:
            - 8888:8888
            - 6006:6006
        volumes:
            - ../work:/home/jovyan/work
        restart: always

コンテナの再起動

docker-compose.ymlの編集を終えたら、コンテナを再起動します。ここで、デフォルトのパスワードでJupyter Notebookサーバーを使いたくない場合は、過去記事の手順を参考にパスワードを変更する行程を実施して下さい。

docker-compose up -d

設定確認

ポートが公開出来ているか確認します。無事6006ポートの公開設定が出来ました。

$ docker-compose ps
                         Name                                       Command              State                       Ports                     
-----------------------------------------------------------------------------------------------------------------------------------------------
jupyter-notebook-server-container_tensorflow_notebook_1   tini -g -- start-notebook.sh   Up      0.0.0.0:6006->6006/tcp, 0.0.0.0:8888->8888/tcp

SSHによるポートフォワーディング

2020/9/13訂正: SSHによるポートフォワーディングは今回の構築方法では、不要であることが分かりました。

この行程は不要

サーバー側の設定は終わりましたので、次はクライアント側の設定を行います。サーバーの6006ポートをクライアントの6006ポートにバインドします。バインドする方法として以下のコマンドを実行します。
sshによるポートフォワーディング
ssh -fNL 6006:localhost:6006 <USER_NAME>@<SERVER_NAME>
  • 補足説明
    • -Lオプション: ポートフォワードの実行
    • -fオプション: バックグラウンド実行
    • -Nオプション: コマンド入力の無効化

~/.ssh/configに以下の内容3を追記すれば、コマンドの大部分を省略出来ます。

~/.ssh/config
Host HOST_NAME
  HostName HOST_NAME
  User USER_NAME
  LocalForward 6006 127.0.0.1:6006
  IdentityFile IDENTIFY_FILE_PATH

ポートフォワードは以下のコマンドで実行出来ます。

ssh -fN HOST_NAME

実行結果をlsofコマンドで確認します。正しくポートフォワード出来ています。

実行結果
$ lsof -i:6006
COMMAND  PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ssh     6575 USER_NAME    8u  IPv6 0x58f4e09519d9696d      0t0  TCP localhost:6006 (LISTEN)
ssh     6575 USER_NAME    9u  IPv4 0x58f4e0952735ec85      0t0  TCP localhost:6006 (LISTEN)

2020/9/13追記 Windowsの場合

Windowsにはlsofコマンドが2020年9月現在有りません。netstatコマンドを上手く使うことで見える様です。

Tensor Boardの動作確認

いよいよTensor Boardの動作確認を行います。公式チュートリアルの内容をそのまま利用します。今回利用するTensor FlowはVer2.3.0です。

JupyterNotebookの内容
import tensorflow as tf
import datetime, os

fashion_mnist = tf.keras.datasets.fashion_mnist

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
    return tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(512, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10, activation='softmax')
    ])

def train_model():
    model = create_model()
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
    tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
    model.fit(x=x_train, y=y_train, epochs=5, validation_data=(x_test, y_test), callbacks=[tensorboard_callback])
学習の実行
train_model()

Jupyter Notebook上にTensor Boardを表示させる拡張機能を読み込みます。

%load_ext tensorboard
TensorBoardの起動
%tensorboard --logdir logs --bind_all

以下の様に、Jupyter Notebook上にTensor Boardを表示出来ました。

Tensor Board Jupyter

ブラウザのアドレスバーからlocalhost:6006にアクセスすることで、Webページとして表示させることも出来ます。

Tensor Board Web

  • 今回の検証に用いたJupyter Notebookのファイルはこちらのリンクからダウンロード出来ます。

まとめ

Docker上でコンテナとして起動しているJupyter Notebookサーバー上で実行したTensor Boardをクライアントからアクセスして閲覧出来る様に改良しました。Tenor Boardをモデルの学習、評価に活用してきたいと思います。

Reference


  1. Tensor Boardを実行することは出来ますが、クライアント端末のブラウザから見に行くことが出来ないという現象に見舞われています。 

  2. Tensor Boardはデフォルトで6006ポートを使用しています。別のポートを使用することも出来ますが、明示的に指定する必要が有る為、今回はデフォルトポートを公開することにします。 

  3. サーバーへのログインには公開鍵方式を用いている想定です。パスワードログインの場合はIdentityFileの指定は不要です。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む