EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

Dockerの基本操作を学びながらUbuntu+Python 3.7の環境を構築した手順のメモ

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

  • 作者:山田 明憲
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/08/25
  • メディア: 単行本(ソフトカバー)

目次

背景・目的

こちらの記事で書いたように、つまらない事で
ハマりながらもWindows 10にDockerを
インストールしました。 www.eureka-moments-blog.com

今回は次のステップとして、イメージ作成や
コンテナ起動などの基本操作を試しながら
Linux環境の構築に取り組んでみたので、
そのメモを残しておきます。

参考資料

こちらの記事、そしてその他Docker関連の
記事ににて、Dockerの使い方を大変詳しく
丁寧に解説してくれているのを見つけました。
kitsune.blog この記事を参考に、Dockerの基本操作を
試していく事にします。

既存のDockerイメージの確認

まずは、既存のDockerイメージを
確認してみます。コマンドは、
「docker images」です。実行
するとこちらのような出力が
表示されます。
f:id:sy4310:20200215204532p:plain
事前にhello-worldコンテナを
起動させていたので、一覧の
中にhello-worldイメージが
あるのが分かります。

Ubuntuイメージをダウンロード

Linuxの中ではUbuntuを使い
たいので、Ubuntuのベース
イメージをこちらからダウン
ロードします。

hub.docker.com

お目当てのイメージがあるかは、
Docker Hub上で直接検索するか、
「docker search」コマンドで
PC側から検索する方法があり
ます。
例えば今回なら、コマンドの
引数にubuntuと入れれば、
それに関連するイメージの
一覧をこのように出力して
くれます。
f:id:sy4310:20200215214828p:plain

いろいろな種類があるよう
ですが、とりあえず一番上
のやつが通常のUbuntuの
ようなので、それをダウン
ロードします。
現時点で最新かつ安定して
動作するバージョンは18.04
なので、「docker pull」の
コマンドでイメージと
バージョンをこちらのよう
に指定して実行します。
「docker pull ubuntu:18.04」
f:id:sy4310:20200215222555p:plain

ちゃんとダウンロード出来たか
確認してみましょう。
f:id:sy4310:20200215223839p:plain
このように、イメージ一覧に表示
されているので成功です。

コンテナの一覧を確認

コンテナの確認は「docker ps」
というコマンドで行います。
実行するとこちらのようになり
ますが、起動しているコンテナ
がないので何も表示されません。
f:id:sy4310:20200215230434p:plain

そこで今度はオプションとして
「-a」を付けて実行すると、
f:id:sy4310:20200215230605p:plain
これまでに起動してきたコンテナと
その状態が表示されます。

コンテナを作成

「docker run」コマンドでコンテナ
の作成・起動が出来るのですが、
コンテナに対するいろいろな設定を
施すためのオプションがあります。
どれが何なのかさっぱりだったの
ですが、こちらの記事にて分かり
やすくまとめられていたので、
とても助かりました。

webdesign-manga.com

「-p」オプションによるポート
フォワードについてはこちらの
記事が参考になります。

qiita.com

これらオプションを踏まえて、
「ubuntu:18.04」イメージから
「ubuntu_test」という名前で
コンテナを作成し、起動させて
みます。
f:id:sy4310:20200216201918p:plain

ちゃんと起動できたか確認してみます。
f:id:sy4310:20200216202129p:plain
一覧にちゃんと表示されているので、
起動出来ているようですね。

Pythonをインストールしようとしたら

OSが起動出来るようになったので、
次はプログラミング言語として
Pythonをインストールしてみます。
まずは、「docker exec」コマンドで
Ubuntuコンテナにログインします。
f:id:sy4310:20200216203821p:plain

ログイン出来たので、お次はPythonが
デフォルトでインストールされている
か確認してみます。18.04からは最初
からPython3.6が入っているらしい
のですが、
f:id:sy4310:20200216204153p:plain
このように、pythonコマンドが
見つからないので、どうやら
インストールされていないみたい
ですね。
なので、自力でインストールして
みます。こちらの記事を参考に
進めました。

www.virment.com

各種ライブラリをインストールして
いくのも面倒なので、Anacondaを
インストールします。

www.anaconda.com

wgetが無いと怒られた

「wget」コマンドでインストーラを
ダウンロードしようとしたら、こちら
のようになり怒られました。
f:id:sy4310:20200216211901p:plain

どうやら、DockerのUbuntuイメージ
には、wgetコマンドが入っていない
ようなので、インストールする必要
があります。
お決まりの「sudo apt-get」を実行
しようとすると、
f:id:sy4310:20200216213937p:plain
となり、「sudo」コマンドまでもが
インストールされていない事が分か
りました。なので、まずはこれら
2つのコマンドをインストールして
いきます。

まずは「sudo」から。
f:id:sy4310:20200216214548p:plain
ちゃんとインストール出来ました。
f:id:sy4310:20200216214649p:plain
お次は「wget」。
f:id:sy4310:20200216215257p:plain
こちらもインストール完了。
f:id:sy4310:20200216215402p:plain

ここでもう一度インストーラの
ダウンロードにトライします。
f:id:sy4310:20200216221851p:plain
ちゃんとダウンロード出来ました。

今度こそPythonをインストール

ダウンロードしたAnacondaの
インストーラを起動します。

f:id:sy4310:20200216222617p:plain

Enterを押して利用規約に目を通し、
yesを入力すると、こちらのように
インストール先を聞かれます。
f:id:sy4310:20200216223453p:plain
特に指定する必要が無ければ、その
ままEnterを押してインストールを
開始させましょう。

f:id:sy4310:20200216224819p:plain

一通りのインストール作業が実行
され、最後にAnacondaを初期化
するかの質問にyesと答えれば
こちらのようになり完了です。
バージョンも確認出来ました。
f:id:sy4310:20200216225729p:plain

Pythonのバージョンも確認出来ま
した。
f:id:sy4310:20200216230808p:plain

2種類のログイン方法

コンテナへのログイン方法は、
下記2種類のコマンドによる
ものがあります。

  • docker exec
  • docker attach

「exec」コマンドについては
先述した通りですが、コンテナ
の中で新しくbashプロセスを
起動するものであり、exitで
ログアウトした後も、コンテナ
自体は起動したままになります。
f:id:sy4310:20200217222450p:plain

それに対して「attach」コマンド
は、標準入出力に接続するもの
であり、exitするとコンテナ自体
が停止します。
f:id:sy4310:20200217224907p:plain

コンテナを起動・停止したいだけの時

毎回docker runでコンテナを起動
させると、その度に新しいコンテナ
が作られるので、いつの間にか
同じコンテナがどんどん増えて
しまいます。
新しいコンテナの作成が必要じゃ
ない時は、こちらの記事にある
ように、「docker start」で起動
し、「docker stop」で停止させ
るようにしましょう。

www.ksakae1216.com

新しいコンテナの作成が必要じゃ
ない時は、こちらの記事にある
ように、「docker start」で起動
し、「docker stop」で停止させ
るようにしましょう。

f:id:sy4310:20200217230223p:plain

Ubuntu+Pythonイメージを作成

ここまでの間に、ベースのUbuntu
イメージにwgetやsudoなどの
コマンドやPython 3.7をインストール
してきました。
ここらで一区切りして、同じ環境
を作る用のDockerイメージを作成
しておく事にします。
「docker commit」コマンドを
使い、「ubuntu1804-python374」
イメージを作成します。
このコマンドを実行して少し待つ
と、こちらのようにイメージが
作成されます。
f:id:sy4310:20200217232307p:plain

イメージの一覧にもちゃんと表示
されている事が分かります。
f:id:sy4310:20200217232505p:plain

ここで、このイメージを使って
コンテナを作成・起動し、期待
通りのものになっているか確認
してみましょう。
まずはコンテナを作成します。
f:id:sy4310:20200217232804p:plain
次にコンテナを起動し、中に
AnacondaとPythonが
インストールされているか
確認してみます。
f:id:sy4310:20200217233201p:plain
バージョンを確認出来たので、
無事に成功したようですね。
ここまで長かった。。

不要なコンテナの削除

既に作成したコンテナを削除
する時は「docker rm」コマンド
を実行します。ここまでに
作成してきたコンテナは下記
の通りになっています。
f:id:sy4310:20200217234211p:plain

最初に作成したubuntu_testは
もう不要なので、これを削除
してみます。この時、対象の
コンテナは停止している必要
があります。

f:id:sy4310:20200217234452p:plain

削除を実行し、コンテナの一覧
からも消えている事を確認
出来ました。

まとめ

また何度か躓きましたが、
イメージ・コンテナの
作成や起動、削除などの
基本操作を一通り学ぶ事が
出来ました。
次回は、もう一つのイメージ
作成方法であるDockerfileに
ついて学んでいきたいと
思います。