コンテンツにスキップ

その他

このページでは、本ゼミナールや Linux を利用する際に有用な情報を載せています。

Dockerに関する話題

停止してしまったコンテナに入りたいときは

  1. docker ps -aで、入りたいコンテナの名前(NAMES)を確認
    今回は、"Python:3.7.5-slim"イメージを利用した"base"というコンテナ

    $ docker ps -a
    CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS                      PORTS     NAMES
    302159917cab   python:3.7.5-slim   "bash"                   7 seconds ago   Exited (0) 5 seconds ago              base
    2a355b83a051   feb5d9fea6a5        "/hello"                 4 days ago      Exited (0) 4 days ago                   suspicious_jackson
    5daecfdf22c3   feb5d9fea6a5        "/hello"                 4 days ago      Exited (0) 53 minutes ago             happy_bell
    

  2. docker start baseで、コンテナを起動する

    $ docker start base
    base
    

  3. docker exec -it XXX bashで、コンテナに入る

    $ docker exec -it base bash
    root@302159917cab:/#
    

"The container name "XXX" is already in use"の対処法

エラー内容

コンテナを起動しようとして、以下のようなエラーが出ることがあります。 これは、コンテナに--nameで付け足名前が重複している際に出るエラーです。 たとえば、base_volume_v3.7.5という名前のコンテナを起動しようとしたけれど、何かしらミスって途中でやめた。あらためて、同じコマンドを実行した場合に、このようなエラーがでます。

$ docker container run --mount type=volume,source=semi1_test_volume,target=/volume_host_dir --name base_volume_v3.7.5 -it -p 8080:80 python:3.7.5-slim bash
docker: Error response from daemon: Conflict. The container name "/base_volume_v3.7.5" is already in use by container "1f8f8b3223cb6ddb21184c06cdd0538885f3821b2af8619851911823d17f9ab1". You have to remove (or rename) that container to be able to reuse that name.

解決方法

以下のコマンドを使って、その名前のコンテナを破棄してください。TARGET_DOCKER_NAMEは、適宜上記のエラーで出た、名前に置き換えてください。。破棄すると、永続化されたデータを除き、そのコンテナの内部で行っていた作業やデータは消えてしまいます。

docker container rm TARGET_DOCKER_NAME

/base is running などでうまくいかない場合は、--forceオプションを付けて、強制的に消してもOKです。

docker container rm TARGET_DOCKER_NAME --force

"Cannot connect to the Docker daemon at ..."の対処法

エラー内容 docker のコマンドを実行しようとして、以下のようなエラーが出ることがあります。

$ docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

これは、docker の Daemon が起動していないことが原因です。 たとえば、VirtualBox の CentOS を「仮想マシンの電源オフ」したり、CentOS の GUI から「電源オフ」をした後、CentOS を起動したときに起こります。

解決方法

以下のコマンドで、Docker の Daemon を起動します。 Daemon とは、Docker を利用する際に必要なバックグラウンドで稼働しているプロセスのことです。

sudo systemctl start docker

"driver failed programming external connectivity on endpoint"の対処法

エラーの内容 docker で Web サーバなどを動かそうとしたときに、以下のようなエラーが出ることがあります。
ポイントは、-p 8080:80で 8080 ポートを 80 ポートにバインドしている部分です。

$ docker container run --mount type=volume,source=semi1_test_volume,target=/volume_host_dir --name base_volume_v3.7.5 -it -p 8080:80 python:3.7.5-slim bash
docker: Error response from daemon: driver failed programming external connectivity on endpoint base_volume_v3.7.5 (b59f43185cb30dd1ec70a1cc6768c1ac8b7a34bdcc74dbac5ad0ff45a8be46a1): Bind for 0.0.0.0:8080 failed: port is already allocated.
ERRO[0000] error waiting for container: context canceled

これは、すでに 8080 ポートを利用していることが原因です。 重複して同じポートを利用することはできません。

解決方法

docker psコマンドで 8080 ポートを利用しているコンテナを探し、それを停止します。 具体的には、以下のようなコマンドを実行します。docker stopの引数は、NAMES に表示されたものです。

% keimiya.fpgaserv8 > docker ps
CONTAINER ID   IMAGE             COMMAND   CREATED          STATUS          PORTS                                   NAMES
f4c2b52519eb   python:3.8-slim   "bash"    13 seconds ago   Up 11 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   base_volume_v3.8
% keimiya.fpgaserv8 > docker stop base_volume_v3.8
base_volume_v3.8

もう一度同じコマンドを実行すると、うまくいくはずです。

本講義に関する話題

追加課題 1

Dockerfile を使って、本格的な Web ページを作ってみよう。(日本語)
クィックスタート: Compose と WordPress — Docker-docs-ja 19.03 ドキュメント

追加課題 2

Dockerfile を使って、GitLab サーバを構築してみよう。(英語)
GitLab Docker images | GitLab

Linux関連の話題

エラーメッセージが出たときは

エラーメッセージの読み方と対処, 検索や質問の原則 - Qiita

コンソールでのキーボードショートカット

Linux の端末 (コンソール)では、キーボードショートカットが使えます。 んで、キーボードの矢印キー(↓↑)で、以前使ったコマンドをコンソールに出すことができます。

ネットワーク アドレスの調べ方

ip a | grep global というコマンドを打って、出てきた inet に続く数字をメモしてください。
以下の図では、172.16.112.132/20 です。

VirtualBoxのインストール

ここでは、VirtualBox をインストールします。なお、情報処理実習 1 など、別の講義ですでに VirtualBox 上に 何かしらのLinux をインストールしている場合は、この手順はスキップしてください。

公式サイトから自分の PC に合ったプラットフォーム向けの最新版のインストーラをダウンロードしてください。2025-04-01時点では、バージョン7.1.6が最新版です。ダウンロードしたインストーラを起動して、手順に従って、インストールしてください。

VirtualBox上で新規の仮想マシンを作成

続いて、仮想マシンを作成します。VirtualBox を起動させてください。

  1. 仮想マシンの新規作成
  2. 名前の設定。名前は何でも大丈夫です。この例では、"Semi1 Ubuntu 18.04"としています。
  3. メモリサイズの設定(手元のノード PC のスペックが十分であれば、2048MB などに増やすと快適に動きます)
  4. HDD の作成
  5. HDD のファイルタイプ
  6. HDD のストレージ
  7. ファイルの場所とサイズ
  8. 作成された仮想マシン

VirtualBoxにUbuntuをインストール

Dockerのインストールで、CentOS ではなく、Ubuntu をインストールする場合は、こちらを参考にしてください。仮想マシン上に Ubuntu をインストールします。作成した仮想マシンを選択してください。

仮想マシンにUbuntuをインストール

ここでは、Ubuntu を実際にインストールします。

  • 使っているマシンによっては動きが遅くなったり、固まったりしますが、ちょっと待ってみてください。
  1. 仮想マシン→起動→通常起動
  2. 自動的にインストールが始まる
  3. 「Ubuntu をインストール」を選択
  4. [日本語]を選択して[続ける]をクリック
  5. [最小インストール]を選択して[続ける]をクリック
  6. [ディスクを削除して Ubuntu をインストール]を選択して[インストール]をクリック
  7. 「どこに住んでいますか?」などの設定はそのままで大丈夫です。
  8. 「あなたの名前」や「コンピュータの名前」、「ユーザー名の入力」は自由に設定してください。「パスワード」はよく使うので、忘れないようにしてください。また、「自動的にログインする」にチェックを入れておくと便利です。
  9. あとはインストールが完了するのを待つだけです。たぶん 20 分くらいかかります。
  10. インストールの完了したら、再起動をしてください。(再起動後に「仮想光学ディスクファイルを抜いてください」という旨のメッセージが出るかもしれません)

  11. 起動すると Ubuntu が使えます。

※ 「Ubuntu 20.04 にアップグレードしますか?」と聞かれるかもしれませんが、とりあえずは無視してください。

UbuntuにDockerをインストール

ここからは、Ubuntu 上に Docker をインストールします。

  1. Ubuntu の左上の[アクティビティ]をクリックし、検索ボックスに"terminal"と打ち込み、「端末」をクリックしてください。

  2. ネットワークのアドレスを調べます。 ip a | grep global というコマンドを打って、出てきた inet に続く数字をメモしてください。 以下の図では、172.16.112.132/20 です。

  3. Dockerの公式ホームページの説明に従って、インストールしてみてください。

VirtualBoxにCentOSをインストール

続いて、VirtualBox 上に CentOS をインストールします。 情報処理実習 1 など、別の講義ですでに VirtualBox 上に CentOS をインストールしている場合は、この手順はスキップしてください。

また、"Guest Additions"という機能を追加しておくと、ホスト OS 側と仮想マシン側でコピー&ペースト(クリップボードの共有)ができます。
このページを参考にインストールしたうえで、仮想マシンの設定から「クリップボードの共有」と「ドラッグ&ドロップ」を双方向にしてみてください。

今回作成する仮想マシンの名前は、"Semi1 CentOS 7"などとすると分かりやすいです。

仮想マシンにCentOSをインストール

続いて、仮想マシン上に CentOS をインストールします。作成した仮想マシンを選択してください。

CentOS7 DVD イメージの選択

ここでは、作成した仮想マシンに Ubuntu の Live DVD イメージをセットします。
※ 以下の手順のスクリーンショットは、"Ubuntu-ja-18.04.3-desktop-amd64.iso"となっていますが、"CentOS-7-x86_64-DVD-2009.iso"に読み替えてください。

  1. 仮想マシン→設定
  2. ストレージ→コントローラ SATA→光学ドライブの追加
  3. 追加(A)をクリック
  4. 仮想光学ディスクファイル"CentOS-7-x86_64-DVD-2009.iso"を探して選ぶ
  5. "CentOS-7-x86_64-DVD-2009.iso"が選ばれていることを確認して"選択"をクリック
  6. "OK"をクリック
  7. 仮想マシンのストレージに、"CentOS-7-x86_64-DVD-2009.iso"が追加されている。

仮想マシンの起動とCentOSのインストール

ここでは、CentOS を実際にインストールします。

  1. 仮想マシン→起動→通常起動
  2. 少し待つとログが流れたりして、英語で"Welcome to CentOS 7"という画面になりますので、日本語を選択してください。
  3. 「インストールの概要」に移ります。少し待つと自動的に設定が完了します。
  4. [ソフトウェアの選択]をクリックして、"KDE Plasma Workspaces"を選択し、右側のアドオンで以下の項目を選択してください。
    この部分は、ほかの講義と異なっていても気にしないでください。設定は後で変更できます。
  5. [インストール先]をクリックして、内容を確認後、[完了]をクリックしてください。設定の変更の必要はありません。
  6. [インストールの開始]をクリックして、インストールを開始してください。
  7. [ROOT パスワード]と[ユーザーの作成]は、自分でそれぞれ好きなパスワードやユーザー名を設定してください。
  8. あとはインストールが完了するのを待つだけです。たぶん 15 分くらいかかります。
  9. 再起動すると初期セットアップが始まります。
  10. 再起動すると初期セットアップが始まります。まずはライセンスに同意してください。次に、「ネットワークとホスト名」をクリックします。
  11. 右上の切り替えボタンをオフからオンにし、「接続済みです」に変わったことを確認してください。また、左下のホスト名を好きなものに変更して、「完了」をクリックしてください。
  12. 「設定の完了」をクリックして終了です。