こんにちはー
hr-kです。今回は仮想OSとかを簡単に扱えるツール、dockerの使い方を簡単に紹介しまーす。
dockerってなんぞ?
詳しい説明はdocker公式サイトにお任せしますがここでは簡単に説明しておきましょう。dockerは以下のような仮想環境を簡単に用意できるオープンソースのプラットフォームです。
- 一台のサーバやPC内に簡単に複数のOSを含む環境を用意できる
- 複数のサーバに分割する処理のテストもできる
はい、なんのこっちゃって話ですが、上の二つの性質はこんな時に便利なのです。
- mac使ってるけど、CentOS向けのツールとか使いたいなぁ
- サーバ内で開発してるんだけど、デプロイテスト用にまっさらな何も入ってない環境用意したいな
- 今ある解析環境を汚染せずに、別の解析環境を構築したいな
本当はdocker imageとかcontainerとか色々説明することがあるんですが、この記事では、詳細な仕組みとかはぜーんぶ飛ばして、使い方だけ簡単に見ていきます。
dockerの使い方
dockerのインストール
dockerを使うには、まずお手元のPCやサーバにdockerをインストールしなきゃですね。Windows、Mac、Linux系のそれぞれのOSたちでインストール方法が異なるんですが、インストール自体は超簡単で、公式のインストールページに全部の場合について詳しく書いてます〜。
使い方
インストールできたら次は使い方ですねー。 基本的にdockerはコマンドで動かせます。WindowsならWindows Power Shellなど、Macならterminalなど、Linux系OSでもそれぞれの端末のコマンドラインから動かせます。
イメージを用意する
作りたい環境の種となるdocker imageをdocker hubからダウンロードしまーす。ここではCentOSの最新版をdownloadしてみしょう
$ docker image pull centos:latest latest: Pulling from library/centos 8a29a15cefae: Pull complete Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest
ってな感じでダウンロード完了。
コマンドの使い方は
docker image pull [imageの名前]:[tag]
ですー。
イメージがダウンロードされてるか確認して見よー
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 3 months ago 237MB
centosのlatestがありますね!
イメージからコンテナを作る
ダウンロードしてきたdocker imageはあくまで環境の種なので、この種から実際に僕たちがイジイジできるコンテナというものを作りませう。
$ docker run --name centoslatest -itd 470671670cac /bin/bash
これで作成アンド起動完了(docker runで作成するのは各コンテナにつき初めの一回でいいよ)。コマンドの使い方は
docker run --name [コンテナ名(任意の名前)] -itd [IMAGE ID] [コンテナ内で実行するコマンド]
です。起動してるか確認しましょうねー
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9534131509ed 470671670cac "/bin/bash" 4 minutes ago Up 4 minutes centoslatest
あい、作ったcentoslatestという名前のコンテナが起動していることがわかりますねー
コンテナにログインして作業
せっかく仮想環境作ったので、実際に作ったコンテナに入って中を見てよー
$ docker exec -it centoslatest /bin/bash [root@9534131509ed /]#
あい、dockerのコンテナに入れましたー。コマンドの使い方はこんな感じ。
docker exec -it [コンテナ名] [コンテナ内での実行コマンド]
入ったらそこはもう、最新のCentOSの世界
[root@9534131509ed /]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
コンテナから出るときは普通にexitでOK
[root@9534131509ed /]# exit $
ファイルの行き来
起動しているコンテナ内にファイルをコピーするには、コンテナ入ってない状態でこんな感じ
$ docker cp testfile.txt centoslatest:/data/
使い方は
docker cp [コンテナ内に持っていきたいファイル] [コンテナ名]:[コンテナ内でファイルを置く場所]
ファイルをコンテナから取り出す時にはこんな感じ
$ docker cp centoslatest:/data/test.txt ./data/
使い方は
docker cp [コンテナ名]:[コンテナ内の取り出したいファイルの絶対パス] [取り出したファイルを置く場所]
こんな感じで、dockerコンテナにファイルを入れたり、取り出したりできるのです。
動かしたり止めたり
現在動いているコンテナはdocker ps
コマンドで確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9534131509ed 470671670cac "/bin/bash" 17 minutes ago Up 17 minutes centoslatest
使ってないときに動かしてるのは、無駄に計算容量とかを消費してるだけなので止めましょー。止めるコマンドは
$ docker stop centoslatest
で使い方は
$ docker stop [停止したいコンテナ名]
止まったかどうかdocker ps
で確認してみよー
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
はい、何も表示されないってことは、止まってますね。 止まってるコンテナも含めて確認してみよう。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9534131509ed 470671670cac "/bin/bash" 22 minutes ago Exited (0) 2 minutes ago centoslatest
止まったcentoslatestがありますねぇ〜。
まあ、PCとかサーバの電源落とすと止まったりするので、docker stop
しなくても止まることはあります。
もう一度動かすにはdocker start
$ docker start centoslatest $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9534131509ed 470671670cac "/bin/bash" 25 minutes ago Up 12 seconds centoslatest
はい、動き始めましたー。
コマンドの使い方は
$ docker start [動かしたいコンテナ名]
こんな感じでdocker コンテナは動かしたり止めたりできるのです。
まとめ
今回はdockerの操作でよく使うものを紹介しました
こんな感じで、自分のサーバやPC内に独立した仮想環境を作ってしまえば、解析環境が混ざるとかは起きないです。
BioInfoのツールのみなら最近はこの記事にちょっとだけ書いてますが、condaを用いた環境作成とかがかなり優秀なので、そっちでやっても良いですね。
サーバの環境を複数模擬したい場合にはdocker、解析環境だけ分けて作りときはcondaを活用する、みたいな感じで使い分けられると選択肢も広がるし、いろんなものが見えてくるかもですね。
ではでは〜