Linux 設定日記

設定したことを忘れないように書いてあります。

2021.08.16
Jupyter notebookをdockerで構築する

phthonを勉強しはじめたが、Windowsマシンからlinux上にコンソールでログインしていると、 グラフィカルな表示ができない。Windows上でpython環境を作るか、X-ClinentをWindows側に 用意するかすれば、良いのだろうが、いまさら感があり、jupyter notebookをサーバ上に構築することとした。

サーバ上に直接Jupyter Notebookを構築してもよかったが、せっかくDockerを作成したので、Docker上に作成することとした。 インストールは以下のコマンド一発で完了。

$ mkdir Jupyter && cd ~/Jupyter
$ sudo docker run -v `pwd`:/home/jovyan/work -p 1888:8888 --name jupyter jupyter/scipy-notebook

イメージは、jupyter/scipy-notebookを指定。ローカルに無い場合は勝手にgithubから取得してくる。 今回は、

  1. -v `pwd`:/home/jovyan/work で docker内の/home/jovyan/workディレクトリを、ホスト側の~/Jupyterにバインド
  2. Docker側の ポート:8888 を ホスト側で開いている 1888に バインド

した。インストール時に、

] Jupyter Notebook 6.4.2 is running at:
] http://17888e7ab0a0:8888/?token=be59e175207c15b9c95a17791445614c75b0f1b92c22980d

と表示されるtokenをログイン時に使用するので控えておく(ただし、私の場合はこのトークンではログインできなかった)。

ログオン画面で、tokenに先程のトークンを指定すれば、ログオンできるはずだが、なぜかエラーとなった。 なので、コンテナ内に入って、トークンを確認。?token以下を入力することでログオンが可能になった。

]$ sudo docker exec -i -t jupyter cat  /home/jovyan/.local/share/jupyter/runtime/nbserver-7-open.html
(base) jovyan@17888e7ab0a0:~$ cat .local/share/jupyter/runtime/nbserver-7-open.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="refresh" content="1;url=http://0.0.0.0:8888/tree?token=987654321abcdef987654321abcdef987654321abcdef98" />
    <title>Opening Jupyter Notebook</title>
    <script>
      setTimeout(function() {
        window.location.href = "http://0.0.0.0:8888/tree?token=987654321abcdef987654321abcdef987654321abcdef98";
      }, 1000);
    </script>
</head>
<body>

<p>
    This page should redirect you to Jupyter Notebook. If it doesn't,
    <a href="http://0.0.0.0:8888/tree?token=987654321abcdef987654321abcdef987654321abcdef98">click here to go to Jupyter</a>.
</p>

</body>
</html>
2021.05.12
Webページのコードセットの変更

昔からのページのため、WebページのコードセットがSJISのままになっている。 当初は、サーバ上のファイルをsambaでWindows上から編集していたためだ。 今どきはWindowsから編集するにしても、UTFの方が便利なので、コードセットを変更した。

まずは、Webページのコンテンツの文字コードをnkfで変更する。ついでにLオプションで改行コードもLFに変更。

find . -type f -name "*.html" -print0 | xargs -0 nkf --overwrite -w -Lu
  

次に、htmlヘッダのコンテンツタイプも、sedでShift_JISからutf-8に変更した。

find . -type f -name "*.html" -print0 | xargs -0  sed -i -e "s/Shift_JIS/utf-8/"
2021.04.28
dockerの依存関係を修正する

依存関係がおかしくなっており、毎回--nobestオプションを付ける必要があったので修正した。

リポジトリの更新

dockerのリポジトリを更新する

$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf repolist
repo id                                  repo name
appstream                                CentOS Linux 8 - AppStream
baseos                                   CentOS Linux 8 - BaseOS
docker-ce-stable                         Docker CE Stable - x86_64
epel                                     Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                             Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                   CentOS Linux 8 - Extras
$

アンインストール

依存関係がおかしくなっているパッケージをアンインストールする。
sudo rpm -e docker-ce podman podman-catatonit buildah containerd.io

dockerの再起動

再インストールにより、dockerが「停止/自動起動しない」状態になったので再度設定。

$systemctl status docker.service
● docker.service - Docker Application Container Engine
  Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Active: inactive (dead)
    Docs: https://docs.docker.com
   :
   :
$ sudo systemctl start docker.service
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
  Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Active: active (running) since Thu 2021-04-29 09:57:40 JST; 19s ago
    Docs: https://docs.docker.com
Main PID: 3002904 (dockerd)
   Tasks: 27
  Memory: 51.1M
  CGroup: /system.slice/docker.service
          ├─3002904 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
          ├─3003055 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 1880 -container-ip 172.17.0.2 -contai>
          └─3003061 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 1880 -container-ip 172.17.0.2 -container-p>
$ sudo systemctl enable docker.service
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
2020.09.06
dockerをインストールする

smokepingを入れて、ネットワーク状態を監視して見ようと思いたった。 普通のパッケージで入れようと当初は考えたが、勉強がてら、dockerのsmokepingを入れて見ることとした。

リポジトリの追加

dockerのリポジトリを追加する

$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf repolist
repo id                                  repo name
AppStream                                CentOS-8 - AppStream
BaseOS                                   CentOS-8 - Base
docker-ce-stable                         Docker CE Stable - x86_64
epel-modular                             Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                   CentOS-8 - Extras
$

インストール

依存関係でインストールに失敗するので、nobestオプションを付けてインストールする。
$ sudo dnf -y --nobest install docker-ce docker-ce-cli containerd.io
Last metadata expiration check: 1:17:27 ago on Sun 06 Sep 2020 10:08:20 AM JST.
Dependencies resolved.

 Problem: package docker-ce-3:19.03.12-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.13-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.13-3.2.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.2-3.3.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.2-3.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.4-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.5-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.6-3.3.el7.x86_64 is filtered out by modular filtering
========================================================================================================================
 Package                     Architecture         Version                          Repository                      Size
========================================================================================================================
Installing:
 containerd.io               x86_64               1.2.0-3.el7                      docker-ce-stable                22 M
 docker-ce                   x86_64               3:18.09.1-3.el7                  docker-ce-stable                19 M
 docker-ce-cli               x86_64               1:19.03.12-3.el7                 docker-ce-stable                38 M
Skipping packages with broken dependencies:
 docker-ce                   x86_64               3:19.03.12-3.el7                 docker-ce-stable                24 M

Transaction Summary
========================================================================================================================
Install  3 Packages
Skip     1 Package

Total download size: 79 M
Installed size: 330 M
Downloading Packages:
(1/3): containerd.io-1.2.0-3.el7.x86_64.rpm                                              26 MB/s |  22 MB     00:00
(2/3): docker-ce-18.09.1-3.el7.x86_64.rpm                                                20 MB/s |  19 MB     00:00
(3/3): docker-ce-cli-19.03.12-3.el7.x86_64.rpm                                           36 MB/s |  38 MB     00:01
------------------------------------------------------------------------------------------------------------------------
Total                                                                                    73 MB/s |  79 MB     00:01
warning: /var/cache/dnf/docker-ce-stable-091d8a9c23201250/packages/containerd.io-1.2.0-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Docker CE Stable - x86_64                                                                48 kB/s | 1.6 kB     00:00
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) "
 Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
 From       : https://download.docker.com/linux/centos/gpg
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                1/1
  Installing       : docker-ce-cli-1:19.03.12-3.el7.x86_64                                                          1/3
  Running scriptlet: docker-ce-cli-1:19.03.12-3.el7.x86_64                                                          1/3
  Installing       : containerd.io-1.2.0-3.el7.x86_64                                                               2/3
  Running scriptlet: containerd.io-1.2.0-3.el7.x86_64                                                               2/3
  Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64                                                               3/3
  Installing       : docker-ce-3:18.09.1-3.el7.x86_64                                                               3/3
  Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64                                                               3/3
  Verifying        : containerd.io-1.2.0-3.el7.x86_64                                                               1/3
  Verifying        : docker-ce-3:18.09.1-3.el7.x86_64                                                               2/3
  Verifying        : docker-ce-cli-1:19.03.12-3.el7.x86_64                                                          3/3
Installed products updated.

Installed:
  containerd.io-1.2.0-3.el7.x86_64      docker-ce-3:18.09.1-3.el7.x86_64      docker-ce-cli-1:19.03.12-3.el7.x86_64

Skipped:
  docker-ce-3:19.03.12-3.el7.x86_64

Complete!
$

DOCKERを起動する。

dockerの起動と、自動起動の設定を行う。

$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
$