コンテンツへスキップ

SU コマンドの有効化

セキュリティ対策ですが、利用したくなる「su -」コマンド、最近のUbuntsなどのLinux OSでは、初期設定時にrootのパスワードを設定しないので、suコマンドは利用できない状態となります。

以下が、suコマンドを実施して、失敗した際の例です。

$ su -
Password:
su: Authentication failure

SU コマンド有効化(rootユーザーのパスワード設定)

SUコマンドが利用できるように、rootユーザーのパスワードを設定します。
sudo su コマンドは利用できるので、自分のアカウントパスワードを用いて、rootユーザに切り替えを行います。

$ sudo su

rootユーザーになり、パスワードコマンドでパスワードを設定します。
この状態で、suコマンドでのrootユーザーへの変更は可能となります。

動作確認のため、rootユーザーから抜けて、su -コマンドを実行し、パスワード入力後にrootユーザーに変更されることを確認します。

 

Jetson Nanoに Tensorflow-gpu、Keras などを導入

NVIDIA Jetsonへの各種ツールインストールは、NVIDAより公開されているOSイメージを利用することで、一通りのツールは導入済みとなります。
JETSON NANO DEVELOPER KIT(JetPack)と呼ばれています。

  • NVIDIA提供のtensorflow-gpu
  • Keras
  • その他ツール
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

導入パッケージのアップデート

インストールパッケージを最新にアップデートします。

sudo apt update
sudo apt upgrade -y

各種パッケージ導入

NVIDIAが提供する、JetPackを導入してください。
(NVIDIAが提供するイメージを用いたOSを導入して下さい)
以前は、OpenCVなどをコンパイルして導入しておりましたが、JetPack 4.3では、必要そうなツールは、事前に導入済みでした。

JetPack 4.3 components:

  • L4T R32.3.1 (K4.9)
  • Ubuntu 18.04 LTS aarch64
  • CUDA 10.0
  • cuDNN 7.6.3
  • TensorRT 6.0.1
  • VisionWorks 1.6
  • OpenCV 4.1 (4.1.1)
  • Nsight Systems 2019.6
  • Nsight Graphics 2019.5
  • Nsight Compute 2019.3
  • SDK Manager 1.0.0

TensorFlow-GPU導入

NVIDIAの開発者コミュニティに記載されている内容で、インストールを行います。

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html#install

  1. TensorFlow導入の前提ソフトウェアをインストールします。
    $ sudo apt-get update
    $ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
    
  2. 導入済みのPip3コマンドを最新版に更新します。
    $ sudo apt-get install python3-pip
    $ sudo pip3 install -U pip testresources setuptools
    
  3. 前提となるPythonパッケージをPip3コマンドで導入します。
    $ sudo pip3 install -U numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
最後に、NVIDIAより公開されている媒体を用いて、tensorflow-gpuのインストールを実施します。
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow

以下のパッケージ群が導入されます。

Successfully installed absl-py-0.9.0 astor-0.8.1 cachetools-4.1.0 google-auth-1.14.1 google-auth-oauthlib-0.4.1 google-pasta-0.2.0 grpcio-1.28.1 keras-preprocessing-1.1.0 markdown-3.2.1 oauthlib-3.1.0 opt-einsum-3.2.1 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.23.0 requests-oauthlib-1.3.0 rsa-4.0 scipy-1.4.1 six-1.14.0 tensorboard-2.1.1 tensorflow-2.1.0+nv20.4 tensorflow-estimator-2.1.0 termcolor-1.1.0 werkzeug-1.0.1 wrapt-1.12.1

keras導入

以下が、導入したTensorflowや、導入されているOpenCVのバージョン確認結果となります。
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

Apache 2、PHP、DB関係モジュールを導入

apt installで必要なパッケージを導入します。
# apt install apache2
# apt install php
# apt install mysql-server
# apt install php-mysql
# apt install php-mbstring
# apt install php-curl

前提条件

JenkinsとGithubを連携

Jenkinsを利用して、Githubに新しいソースコードがコミットされた際に、Githubより新規ソースコードの通知をトリガーとして、Jenkinsのタスクを実行させます。

私は、Githubへの新規コミットをトリガーに、ジャンケンシステムを構成するメインのIntel NUC Ubuntuサーバー、Raspberry Pi、NVIDIA Jetson Nanoに最新のソースコードが自動的にデプロイ(Pull)される環境を構築しました。
デプロイ前に、簡単なテストなども自動化することが出来ます。

Jenkins向けユーザーを作成

Raspberry PiやNVIDIA JetsonにJenkinsユーザーを作成します。

@raspberrypi:~ $ sudo useradd -m -s /bin/bash jenkins
@raspberrypi:~ $ sudo passwd jenkins
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました

Sudo設定

Jenkinsユーザーで、各種スクリプトを実行するので、sudoが簡単に実行出来るように設定します。
※ 全体的にパスワードなしでのsudoを許可しているので、利用するコマンドごとの設定や、各種設定ファイルのアクセス権などを環境に合わせて設定し、セキュリティ対策を行って下さい。

@raspberrypi:~ $ cd /etc/sudoers.d/
@raspberrypi:/etc/sudoers.d $ sudo vi jenkins
$ cat << EOS > /etc/sudoers.d/jenkins
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL
EOS
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL

SSHキー作成

Jenkinsユーザー向けのSSHキーを作成します。
このSSHキーをGithubに登録します。
Githubに登録することにより、Jenkinsユーザーを用いて、Githubの操作が可能になります。

jenkins@raspberrypi:/ $ sudo su jenkins

jenkins@raspberrypi:/ $ cd /home/jenkins

jenkins@raspberrypi:~ $ mkdir .ssh

jenkins@raspberrypi:~ $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jenkins/.ssh/id_rsa.
Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9QoADCZcq+4jyOWd3QeAy8av7K2riVNTK6F+TlQXU78 jenkins@raspberrypi
The key's randomart image is:

GithubへSSHキーの登録と接続確認

https://github.com/settings/keys で id_rsa.pub の内容を登録します。

最後に、対象のサーバーより接続確認を行います。

ssh -T git@github.com

 

created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

 

 

 

 

Jenkins導入

複数機器の管理、複雑なCronでのシステム管理など、スケジュール管理には導入をお勧めします。
一度利用すると、この便利さから抜け出せません。無償でここまで高機能な管理ソフトが利用出来るのは、ただただすごいです。

前提

Docker Composeを利用して、Jenkinsを導入します。
Docker Composeの導入がまだの場合は、Docker Composeを事前に導入して下さい。

docker-compose.yml作成

利用するイメージファイルですが、「image: jenkins:latest」を利用した場合に、初期設定のプラグインインストールに失敗する場合があるので、「image: jenkins:latest」を利用します。

services:
  jenkins1:
    container_name: master
    image: jenkins/jenkins:lts
    environment:
      TZ: Asia/Tokyo
    ports:
      - 8080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home
    restart: always

初回Jenkins起動

docker-compose up

作成したdocker-compose.ymlファイルのディレクトリで、docker-compose upコマンドを実行し、Jenkinsの起動を行います。

初回起動時には、最新のJenkinsのイメージが取得され、イメージのビルドが実行されます。
大切なのが、初回の起動に、Jenkinsのセットアップ時に必要となるパスワードが表示されます。初回ブラウザでのアクセス時に、パスワードの入力が必要になります。

Jenkins初期設定

JenkinsにWEBブラウザでアクセスし、初期設定を行います。

Webブラウザ上でhttp://localhost:18080/にアクセスし、Jenkinsイメージをビルドした際に表示されたパスワードを画面に入力し、初期設定を進めます。

Customize JenkinsのInstall suggested pluginsで失敗する際は、利用するコンテナイメージを確認して下さい。「image: jenkins:latest」を利用した場合に、初期設定のプラグインインストールに失敗する場合があるので、「image: jenkins:latest」を利用します。

created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

Samba導入

簡単な内容ですが、UbuntuにSambaを導入する方法です。
sambaをインストールし、ユーザー・初期設定を行うと利用可能になります。

Sambaインストール

$ sudo apt-get install -y samba

Samba用のユーザーを登録する

Sambaでは、独自の認証情報を利用するので、Samba用のユーザーを作成します。

$ sudo pdbedit -a "username"

パスワードの設定を要求されるのでパスワードを設定します。

new password:
retype new password:

設定ファイルsmb.confの設定

/etc/samba/smb.confの設定を行います。
最低限の設定として、文字コードの設定と、利用したい共有フォルダーを設定します。

vi /etc/samba/smb.conf
[global]
#"追加"
   dos charset = CP932 
   unix charset = UTF-8
[share]
   path = /mnt/share
   writable = yes
   guest ok = yes
   guest only = yes
   create mode = 0777
   directory mode = 0777

設定変更後の再起動

設定変更後に、サービスを再起動して、導入作業は終了です。
また、サーバー起動時に、Sambaが自動起動するように設定しておきます。

systemctl restart smbd nmbd

systemctl enable smbd nmbd

Docker および Docker Compressを導入

参考記事(Docker導入):

参考記事(Docker導入):

Docker WordPress 導入

Docker Composeを用いて、Wordpressを導入します。Compseファイルを作成し、コンテナをビルド、起動すれば、Wordpressの利用が可能です。
すぐにWordpress環境の利用が可能です。

Docker Composeファイルの作成

プロジェクト用のフォルダーを作成します。

$ mkdir ~/project01
$ cd ~/project01

作成したプロジェクトフォルダーに、Composeファイル(docker-compose.yml) と 環境ファイル(.env) を作成します。

docker-compose.yml サンプル

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    env_file: .env

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wordpress:/var/www/html
    ports: 
      - "8080:80"
    restart: always
    env_file: .env

volumes:
  db_data:

.env サンプル

MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=wordpress_db
MYSQL_USER=wordpress_user
MYSQL_PASSWORD=wordpress_pass

WORDPRESS_DB_HOST=db:3306
WORDPRESS_DB_NAME=wordpress_db
WORDPRESS_DB_USER=wordpress_user
WORDPRESS_DB_PASSWORD=wordpress_pass

解説

利用するDBファイルとWordpressファイルの、永続化(保存しておきたいデータ)をCompseファイルで明示的に指定し、コンテナ停止時もデータが保持されるような設定を行います。

/var/lib/mysql に配置されるWordPressのデータベースを、db_dataという名前の永続化領域に指定。

db:
  volumes:
    - db_data:/var/lib/mysql
volumes:
  db_data:

/var/www/html に配置されるWordPress の各種ファイル (wp-config.phpなど) を、ホスト側の ./wordpress フォルダに配置する指定。

wordpress:
  volumes:
    - ./wordpress:/var/www/html

Docker Composeの起動

docker-composeコマンドを用いてコンテナの起動を行います。初回起動時には、コンテナのビルドが行われます。

$ docker-compose up

永続化データの確認

コンテナを停止し、永続化指定したデータが保存されていることを確認します。

control + c で停止してから、
$ docker-compose down

永続化したはずのデータが残っているか確認してみます。

$ docker volume ls
...
local               project01_db_data

以上となります。
実際の運用時には、SQLパラメータ変更やサイトのSSL化を実施しているので、少し異なる設定で運用を行っております。

Docker Compose導入

事前に、Dockerを導入している必要があります。
参考URL:

完全に新しい分野と横目で見ていたコンテナなりDockerという世界。
絶対導入をおすすめですね。
導入時間の短縮、環境自体のモビリティ(移動性)、災害対応向けシステムの構築の用意性、たくさんの観点で導入をおすすめします。
場合によっては、パブリッククラウドへの移行やパブリッククラウド間の移動も簡単になります。(実質、依存パッケージの個別のインストール作業なりが不要となります)

今後、性能、セキュリティなどを見ていこうと思いますが、ドキュメントなりで調べている範囲では、アプリケーションやサービスを提供する上で、必要なもののみを独自環境(コンテナ)に導入する方法は、非常に理にかなっていると思います。

Docker Compose 導入

Docker Compressのインストール方法をWEBなどで調べているとPipやaptでインストールなど、環境などにより各種導入方法が準備されています。
気にする必要があるのは、Cocker Composeのバージョンとなります。
利用したいコンテナのビルドが失敗する場合などは、バージョンを確認して下さい。

Docker Compressインストール参考URL: Install Docker Compose

Ubuntu に Docker Composeを aptで導入

Ubuntu環境で、docker-composeコマンドを実行すると、aptコマンドでのインストール方法がガイドされましたので、aptコマンドを利用してdocker composeを導入しました。結論ですが、バージョンが古く、次に紹介する公式レポジトリから直接導入する方法で、再度上書きインストールしております。

@Intel-NUC:~$ docker-compose
プログラム 'docker-compose' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt install docker-compose

さっそく、aptコマンドでインストールしてみると、無事にインストールすることができました。

root@Intel-NUC:~# apt install docker-compose
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
apt-clone archdetect-deb cifs-utils dmeventd dmraid gir1.2-clutter-1.0
gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
gir1.2-gtkclutter-1.0 gir1.2-networkmanager-1.0 gir1.2-nma-1.0
gir1.2-timezonemap-1.0 gir1.2-xkl-1.0 kpartx kpartx-boot libdbusmenu-gtk4
libdebian-installer4 libdevmapper-event1.02.1 libdmraid1.0.0.rc16 libllvm5.0
liblvm2app2.2 liblvm2cmd2.02 libparted-fs-resize0 libqpdf17 libreadline5
linux-headers-oem linux-signed-image-generic-hwe-16.04
linux-signed-image-oem localechooser-data lvm2 python3-icu python3-pam rdate
snapd-login-service user-setup
これを削除するには 'apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
python-backports.ssl-match-hostname python-cached-property
python-cffi-backend python-chardet python-cryptography python-docker
python-dockerpty python-docopt python-enum34 python-funcsigs
python-functools32 python-idna python-ipaddress python-jsonschema
python-mock python-ndg-httpsclient python-openssl python-pbr
python-pkg-resources python-pyasn1 python-requests python-six
python-texttable python-urllib3 python-websocket python-yaml
提案パッケージ:
python-cryptography-doc python-cryptography-vectors python-enum34-doc
python-funcsigs-doc python-mock-doc python-openssl-doc python-openssl-dbg
python-setuptools python-ntlm
推奨パッケージ:
docker.io
以下のパッケージが新たにインストールされます:
docker-compose python-backports.ssl-match-hostname python-cached-property
python-cffi-backend python-chardet python-cryptography python-docker
python-dockerpty python-docopt python-enum34 python-funcsigs
python-functools32 python-idna python-ipaddress python-jsonschema
python-mock python-ndg-httpsclient python-openssl python-pbr
python-pkg-resources python-pyasn1 python-requests python-six
python-texttable python-urllib3 python-websocket python-yaml
アップグレード: 0 個、新規インストール: 27 個、削除: 0 個、保留: 0 個。
1,441 kB のアーカイブを取得する必要があります。
この操作後に追加で 7,393 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-pkg-resources all 20.7.0-1 [108 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-cached-property all 1.3.0-1 [6,976 B]
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-six all 1.10.0-3 [10.9 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.4 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-chardet all 2.3.0-2 [96.3 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-requests all 2.9.1-3ubuntu0.1 [55.9 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-backports.ssl-match-hostname all 3.4.0.2-1 [6,258 B]
取得:8 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-websocket all 0.18.0-2 [165 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-ipaddress all 1.0.16-1 [18.0 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-docker all 1.9.0-1~16.04.1 [29.9 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-dockerpty all 0.4.1-1~16.04.1 [10.9 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-docopt all 0.6.2-1build1 [25.6 kB]
取得:13 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-enum34 all 1.1.2-1 [35.8 kB]
取得:14 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-functools32 all 3.2.3.2-2 [10.7 kB]
取得:15 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-funcsigs all 0.4-2 [12.6 kB]
取得:16 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-pbr all 1.8.0-4ubuntu1 [46.6 kB]
python-docker (1.9.0-1~16.04.1) を設定しています ...
python-dockerpty (0.4.1-1~16.04.1) を設定しています ...
python-docopt (0.6.2-1build1) を設定しています ...
python-enum34 (1.1.2-1) を設定しています ...
python-functools32 (3.2.3.2-2) を設定しています ...
python-funcsigs (0.4-2) を設定しています ...
python-pbr (1.8.0-4ubuntu1) を設定しています ...
update-alternatives: /usr/bin/pbr (pbr) を提供するために自動モードで /usr/bin/python2-pbr を使います
python-mock (1.3.0-2.1ubuntu1) を設定しています ...
python-jsonschema (2.5.1-4) を設定しています ...
update-alternatives: /usr/bin/jsonschema (jsonschema) を提供するために自動モードで /usr/bin/python2-jsonschema を使います
python-texttable (0.8.1-1) を設定しています ...
python-yaml (3.11-3build1) を設定しています ...
docker-compose (1.8.0-2~16.04.1) を設定しています ...
python-cffi-backend (1.5.2-1ubuntu1) を設定しています ...
python-idna (2.0-3) を設定しています ...
python-pyasn1 (0.1.9-1) を設定しています ...
python-cryptography (1.2.3-1ubuntu0.2) を設定しています ...
python-openssl (0.15.1-2ubuntu0.2) を設定しています ...
python-ndg-httpsclient (0.4.0-3) を設定しています ...
root@Intel-NUC:~# docker-compose -v
docker-compose version 1.8.0, build unknown

curlコマンドを用いたDocker Compse導入

Docker Compressインストール参考URL: Install Docker Compose

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

アクセス権の変更

sudo chmod +x /usr/local/bin/docker-compose
miki@Intel-NUC:~/webserver$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

 

これで、Docker Composeが利用可能になります。
次の記事で、Docker Compseを用いたWordpressの導入方法を紹介します。

MSI GeForce GTX 1660 Ti AERO ITX 6G OC グラフィックスボード VD6893
MSI

Docker 導入

完全に新しい分野と横目で見ていたコンテナなりDockerという世界。
絶対導入をおすすめですね。
導入時間の短縮、環境自体のモビリティ(移動性)、災害対応向けシステムの構築の用意性、たくさんの観点で導入をおすすめします。
場合によっては、パブリッククラウドへの移行やパブリッククラウド間の移動も簡単になります。(実質、依存パッケージの個別のインストール作業なりが不要となります)

今後、性能、セキュリティなどを見ていこうと思いますが、ドキュメントなりで調べている範囲では、アプリケーションやサービスを提供する上で、必要なもののみを独自環境(コンテナ)に導入する方法は、非常に理にかなっていると思います。
そりゃ、世界で広がる理由が分かります。

前提ソフトウェアのインストール

前提ソフトウェアをインストールします。

  • apt-transport-https
  •  ca-certificates
  • curl
  • software-properties-common
root@Intel-NUC:~# apt update -y

root@Intel-NUC:~# apt install -y apt-transport-https ca-certificates curl software-properties-common

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
apt-transport-https はすでに最新バージョン (1.2.32) です。
ca-certificates はすでに最新バージョン (20170717~16.04.2) です。
software-properties-common はすでに最新バージョン (0.96.20.9) です。
software-properties-common は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
apt-clone archdetect-deb cifs-utils dmeventd dmraid gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0
gir1.2-coglpango-1.0 gir1.2-gtkclutter-1.0 gir1.2-networkmanager-1.0 gir1.2-nma-1.0 gir1.2-timezonemap-1.0
gir1.2-xkl-1.0 kpartx kpartx-boot libdbusmenu-gtk4 libdebian-installer4 libdevmapper-event1.02.1 libdmraid1.0.0.rc16
libllvm5.0 liblvm2app2.2 liblvm2cmd2.02 libparted-fs-resize0 libqpdf17 libreadline5 linux-headers-oem
linux-signed-image-generic-hwe-16.04 linux-signed-image-oem localechooser-data lvm2 python3-icu python3-pam rdate
snapd-login-service user-setup
これを削除するには 'apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
curl
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
139 kB のアーカイブを取得する必要があります。
この操作後に追加で 340 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 curl amd64 7.47.0-1ubuntu2.14 [139 kB]
139 kB を 0秒 で取得しました (1,227 kB/s)
以前に未選択のパッケージ curl を選択しています。
(データベースを読み込んでいます ... 現在 222284 個のファイルとディレクトリがインストールされています。)
.../curl_7.47.0-1ubuntu2.14_amd64.deb を展開する準備をしています ...
curl (7.47.0-1ubuntu2.14) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
curl (7.47.0-1ubuntu2.14) を設定しています ...
root@Intel-NUC:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
OK

Dockerレポジトリを追加

Dockerレポジトリを追加し、パッケージリストの更新を行います。

root@Intel-NUC:~# sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
root@Intel-NUC:~#
root@Intel-NUC:~# apt update -y
ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
ー・牴蜑・ http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease
取得:4 https://download.docker.com/linux/ubuntu xenial InRelease [66.2 kB]
取得:5 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages [11.6 kB]
取得:6 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
無視:7 http://oem.archive.canonical.com/updates xenial-dawson InRelease
無視:8 http://oem.archive.canonical.com/updates xenial-oem InRelease
ヒット:9 http://oem.archive.canonical.com/updates xenial-dawson Release
ヒット:11 http://oem.archive.canonical.com/updates xenial-oem Release
187 kB を 1秒 で取得しました (133 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。

Docker-ceのインストール

root@Intel-NUC:~# apt install -y docker-ce

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
apt-clone archdetect-deb cifs-utils dmeventd dmraid gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0
gir1.2-coglpango-1.0 gir1.2-gtkclutter-1.0 gir1.2-networkmanager-1.0 gir1.2-nma-1.0 gir1.2-timezonemap-1.0
gir1.2-xkl-1.0 kpartx kpartx-boot libdbusmenu-gtk4 libdebian-installer4 libdevmapper-event1.02.1 libdmraid1.0.0.rc16
libllvm5.0 liblvm2app2.2 liblvm2cmd2.02 libparted-fs-resize0 libqpdf17 libreadline5 linux-headers-oem
linux-signed-image-generic-hwe-16.04 linux-signed-image-oem localechooser-data lvm2 python3-icu python3-pam rdate
snapd-login-service user-setup
これを削除するには 'apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
aufs-tools cgroupfs-mount containerd.io docker-ce-cli git git-man liberror-perl pigz
提案パッケージ:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki
git-svn
以下のパッケージが新たにインストールされます:
aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli git git-man liberror-perl pigz
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
89.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 409 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 pigz amd64 2.3.1-2 [61.1 kB]
取得:2 https://download.docker.com/linux/ubuntu xenial/stable amd64 containerd.io amd64 1.2.10-3 [19.9 MB]
取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 aufs-tools amd64 1:3.2+20130722-1.1ubuntu1 [92.9 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 cgroupfs-mount all 1.2 [4,970 B]
取得:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 git-man all 1:2.7.4-0ubuntu1.6 [736 kB]
取得:7 https://download.docker.com/linux/ubuntu xenial/stable amd64 docker-ce-cli amd64 5:19.03.4~3-0~ubuntu-xenial [42.4 MB]
取得:8 https://download.docker.com/linux/ubuntu xenial/stable amd64 docker-ce amd64 5:19.03.4~3-0~ubuntu-xenial [22.8 MB]
取得:9 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 git amd64 1:2.7.4-0ubuntu1.6 [3,176 kB]
89.2 MB を 3秒 で取得しました (23.0 MB/s)
以前に未選択のパッケージ pigz を選択しています。
(データベースを読み込んでいます ... 現在 222291 個のファイルとディレクトリがインストールされています。)
.../pigz_2.3.1-2_amd64.deb を展開する準備をしています ...
pigz (2.3.1-2) を展開しています...
以前に未選択のパッケージ aufs-tools を選択しています。
.../aufs-tools_1%3a3.2+20130722-1.1ubuntu1_amd64.deb を展開する準備をしています ...
aufs-tools (1:3.2+20130722-1.1ubuntu1) を展開しています...
以前に未選択のパッケージ cgroupfs-mount を選択しています。
.../cgroupfs-mount_1.2_all.deb を展開する準備をしています ...
cgroupfs-mount (1.2) を展開しています...
以前に未選択のパッケージ containerd.io を選択しています。
.../containerd.io_1.2.10-3_amd64.deb を展開する準備をしています ...
containerd.io (1.2.10-3) を展開しています...
以前に未選択のパッケージ docker-ce-cli を選択しています。
.../docker-ce-cli_5%3a19.03.4~3-0~ubuntu-xenial_amd64.deb を展開する準備をしています ...
docker-ce-cli (5:19.03.4~3-0~ubuntu-xenial) を展開しています...
以前に未選択のパッケージ docker-ce を選択しています。
.../docker-ce_5%3a19.03.4~3-0~ubuntu-xenial_amd64.deb を展開する準備をしています ...
docker-ce (5:19.03.4~3-0~ubuntu-xenial) を展開しています...
以前に未選択のパッケージ liberror-perl を選択しています。
.../liberror-perl_0.17-1.2_all.deb を展開する準備をしています ...
liberror-perl (0.17-1.2) を展開しています...
以前に未選択のパッケージ git-man を選択しています。
.../git-man_1%3a2.7.4-0ubuntu1.6_all.deb を展開する準備をしています ...
git-man (1:2.7.4-0ubuntu1.6) を展開しています...
以前に未選択のパッケージ git を選択しています。
.../git_1%3a2.7.4-0ubuntu1.6_amd64.deb を展開する準備をしています ...
git (1:2.7.4-0ubuntu1.6) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
ureadahead (0.100.0-19.1) のトリガを処理しています ...
systemd (229-4ubuntu21.22) のトリガを処理しています ...
pigz (2.3.1-2) を設定しています ...
aufs-tools (1:3.2+20130722-1.1ubuntu1) を設定しています ...
cgroupfs-mount (1.2) を設定しています ...
containerd.io (1.2.10-3) を設定しています ...
docker-ce-cli (5:19.03.4~3-0~ubuntu-xenial) を設定しています ...
docker-ce (5:19.03.4~3-0~ubuntu-xenial) を設定しています ...
liberror-perl (0.17-1.2) を設定しています ...
git-man (1:2.7.4-0ubuntu1.6) を設定しています ...
git (1:2.7.4-0ubuntu1.6) を設定しています ...
libc-bin (2.23-0ubuntu11) のトリガを処理しています ...
ureadahead (0.100.0-19.1) のトリガを処理しています ...
systemd (229-4ubuntu21.22) のトリガを処理しています ...

aptコマンド用のレポジトリを設定

ここで aptコマンド用のリポジトリを設定しますが、dockerではstableedgetestが公開されています。

stableとして、以下のように設定しています。

x86_64

$ sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
 
$(lsb_release -cs) \

stable"

 

これで、Dockerが利用可能になります。
Docker導入にあたり、管理の便利なDocker Composeを導入したので、
明日の記事で、Docker Compseの導入方法を紹介します。

 

 

PHP関連モジュールのインストール

Ubuntu環境を数回続けて、インストールした際に、PHP関連モジュールをインストールしたので、必要なコマンドのメモをのことしておきます。

sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm php7.2-mysql php7.2-dev php7.2-mbstring php7.2-zip
sudo apt-get install php-curl

Linux間のボリュームマウントNFS

今回は、Jetson NanoのUbuntuボリュームを、Intel NUCのUbuntuからマウントする方法を紹介します。

  1. ボリュームを提供するサーバー側にnfs-kernel-serverを導入および設定
  2. クライアント側にnfs-commonを挿入およびマウント

サーバー側:Ubuntu にnfs-kernel-server導入

Nvidia jetson NanoのUbuntuにNFSをインストールします。

$ sudo apt install nfs-kernel-server -y

共有したいボリュームを/etc/exportsに記載します。

$ sudo vi /etc/exports
# 最終行にマウント設定を記述

/home 192.0.0.0/24(rw,no_root_squash)

クライアント側:Intel NUCにnfs-common導入

Intel NUCのUbuntuにNFSツールをインストールします。
$ sudo apt -y install nfs-common
マウントポイントとなるフォルダーを作成し、マウントコマンドでマウントを実行します。
root@Intel-NUC:~# mkdir /mnt/jetson

root@Intel-NUC:~# mount -t nfs 192.168.0.xxx:/home /mnt/jetson
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)