電波ビーチ

☆(ゝω・)v

Debian環境をつくる Docker編

Debianが必要になったのでやります。入れる候補はなんでもよくて、実機である必要すらないのでさくらサーバでも別PCでも仮想環境でも構わんのですが、使ったことないっていう理由だけでDockerでやってみます。

Dockerをいれる

たいていDocker for macでインストールするのがふつうっぽいんですが、homebrew-casksearchしたらあったのでこれでぶちこみました。 f:id:or3:20180227090622p:plain 起動するとなんか可愛いのが出て来る f:id:or3:20180227090703p:plain

Docker Cloudってなんやねん、事前のリサーチでは一切出てこなかったぞ、と思ったら、Docker Hubとの連携を密にしたsaasらしいです(わからん)。とりあえずDocker Hubと同じIDが使えるので登録しておく

確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

入ってますな

Docker HubからDockerイメージを取得

docker pull <image name>でいけるらしい。とりあえずDocker Hubで探してみるとオフィシャルのDebianイメージがあったのでいれてみる

docker pull debian後に確認すると

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              1b3ec9d977fb        11 days ago         100MB

よさそうですな

Hello Worldを忘れていた

とりあえずdocker run hello-worldしてなんやかんや出たあとに、コンテナのリストを取得するコマンドdocker ps -aすると、

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
666937145e85        hello-world         "/hello"            4 minutes ago       Exited (0) 4 minutes ago                       silly_bell

勝手にhello-worldイメージをdocker hubから引っ張ってきてそのコンテナを作って動かしてるよ、みたいな感じになってるっぽいです qiita.com 邪魔なhello-world消してやってさっさと次にいきます

Dockerコンテナをつくる

リサーチ中はよくわからなかったのでとりあえずいったれや、というノリでここまできましたが、実際やってみるとここでイメージいれたぞ!次はどうすんだ!ってなりました。手順としては、DockerイメージをつくるそれをもとにDockerコンテナをつくるという流れっぽい。してみるとDockerコンテナはDockerイメージのインスタンス(っぽいもの)ということらしい

とりあえず$ docker run -it debianすることでdebianをベースにしたコンテナが作られる。作成したコンテナやイメージを消したり出たり入ったり停止したり、なんかのコマンドはこちらを参照

qiita.com

ほんまにDebianに入ったのか確認

root@fb7b34a6c5e6:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

よさそうですな

software selectionどこいった

ふつうにDebianいれると最初のコンフィグ?でどんな環境のDebianにするか選択しろと言われるらしい

debian software selection - Google 検索

Dockerでイメージを作ったときはそんなの一切いわれなかった。どういう環境なのか知りたい

調べるとtaskselコマンドで調べられるらしい。やってみると

root@fb7b34a6c5e6:/# tasksel --list-tasks
bash: tasksel: command not found

なるほどね。じゃあこれでどうだ

root@fb7b34a6c5e6:/# apt-get install tasksel
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package tasksel

は???

結局root@fb7b34a6c5e6:/# apt-get updateしたあとにtaskselをインストールしたらいけました。結果はというと

root@fb7b34a6c5e6:/# tasksel --list-tasks
u desktop   Debian desktop environment
u gnome-desktop GNOME
u xfce-desktop  Xfce
u kde-desktop   KDE
u cinnamon-desktop  Cinnamon
u mate-desktop  MATE
u lxde-desktop  LXDE
u web-server    web server
u print-server  print server
u ssh-server    SSH server
u laptop    laptop

uってのはuninstalledなのでつまり最初からなにも入ってません。参考わたしの場合はStarndard System Utilities以外全部いらんので都合がいいです。Starndard System Utilitesの文字が見当たりませんが、調べたらtasksel --task-packages standard | sort して標準システムユーティリティだけをリストで出力できました。なんかやたらたくさん入っててnanoとかpythonとか要るか???? ってなった

taskselで入れたり消したりしたいとき

さきほど使ったtaskselはオプションとか無しでそのまま使うとSoftware SelectionがCUIでできるっぽいので試します。

root@fb7b34a6c5e6:/# tasksel
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Software selection
------------------

You can choose to install one or more of the following predefined collections of software.

  1. Debian desktop environment  3. ... Xfce  5. ... Cinnamon  7. ... LXDE    9. print server  11. laptop
  2. ... GNOME                   4. ... KDE   6. ... MATE      8. web server  10. SSH server

(Enter the items you want to select, separated by spaces.)

Choose software to install: 

インストールだけ選べるっぽいですね。。。試しに何も入れずにEnterしてみても選択が終了するだけで意味なかったです。

ほかに、installremoveオプションで個別にタスクを指定できるらしいです。試してみたんですが、installすると処理が止まってしまいコンテナがフリーズしたっぽい感じになりました(具体的な状態はどう確かめればいいか知らない)。DockerでGUIが欲しければ別の方法がggれば出てくるっぽいのでそちらをやればいいんじゃないですかね。今回は目的じゃないのでやってません

まとめ

Dockerわからん。これで望む環境が構築できたのかもわからん。でもとりあえずDebianは入れれたしこれでパーフェクトならばめっちゃ楽でいい。