https://swcarpentry-ja.github.io/2024-05-30-chiba-slides/docker
docker container ls
コマンドを Terminal 内で実行しましょうdocker container ls
で現在実行中の Docker コンテナの一覧を表示します。
docker --help
docker container --help
docker container ls --help
docker --help
を実行し、リストからコマンドを選択しましょう。--help
を入力します。まず今持っている Docker イメージを確認します。
docker image ls
インターネットからの hello-world
イメージの取得
docker image pull hello-world
どこから hello-world
イメージはダウンロードされたのか?
Docker Hub https://hub.docker.com/ からダウンロードされました。
詳細については、後で (Joel さんが) 説明します。
hello-world Docker コンテナー イメージが正常にダウンロードされ、コンピューター上にあるかどうかを確認するには、どのコマンドを使用しますか? (解答を見る前に、これまでの知識を活かしてそれにチャレンジしてみてください。)
Docker イメージからコンテナを作成して実行するには、docker container run
コマンドを使用します。
docker container run hello-world
まずは コンテナを実行 (alpine というイメージで)
docker container run alpine
cat /etc/os-release
というコマンドを alpine イメージのコンテナで実行する。
docker container run alpine cat /etc/os-release
alpine コンテナを実行して、「hello world」メッセージを出力させることはできますか? それを実現するコマンドを提案してください。
コンテナを実行したままにしてログインし、さらに多くのコマンドを試用したい場合はどうすればよいでしょうか? これを行うには -it オプションを使います。
docker container run -it alpine sh
sh は alpine コンテナの中にある /bin/sh コマンドを実行しています。 (alpine コンテナには /bin/bash シェルが無いため)
ubuntu
イメージからコンテナを作り、そのubuntuのバージョンを確認する方法を見つけてください。 また apt-get
というコマンドを ubuntu コンテナ中で見つけてください。 apt-get
というコマンドが見つかったら --help
オプションを apt-get
コマンドに渡してみてください。
docker image pull
コマンドは、インターネットから Docker イメージをダウンロードします。docker image ls
コマンドは、コンピューター上に存在する Docker イメージを一覧表示します。docker container run
コマンドは、イメージからコンテナを作成し、その中でコマンドを実行します。docker container run
コマンドを使用すると、コンテナはデフォルトのアクション、ユーザー指定のアクション、または対話的に使用されるシェルを実行できます。docker image ls
docker image rm イメージのID
docker container ls
docker ps
docker container ls --all
docker container rm コンテナのID
「実行中または停止している可能性のあるコンテナをすべて削除したら」 イメージの削除ができます。 docker image rm hello-world
docker container
下にコンテナを操作および管理するために使用されるサブコマンドがある。docker image
下にイメージを操作および管理するために使用されるサブコマンドがある。docker container ls
または、docker ps
で現在実行中のコンテナに関する情報を知ることができる。Docker Hub(https://hub.docker.com)とは、様々なイメージのダウンロードが出来るウエブサイト
Git・GitHubと同じように、DockerはDocker Hubなし(インターネットに接続なし)でも使えます
pythonのイメージ:https://hub.docker.com/_/python
CONTAINER_IMAGE_NAME:TAG
:
でタグをしてしないと、デフォルト(latest
「最新」)が使われます
でも、「最新」バージョンは常に変わるので、解析を再現したい場合はおすすめしません(latest
以外のタグの使用を推薦)
Docker社が提供しているイメージはこのような形式:CONTAINER_IMAGE_NAME:TAG
それ以外のイメージ(つまり、個人が提供しているイメージ):OWNER/CONTAINER_IMAGE_NAME:TAG
自分のパソコン内で使う場合は特に形式は決まっていませんが、Docker Hubに掲載する場合はOWNER/CONTAINER_IMAGE_NAME:TAG
を使わないといけません
BioCondaはPythonとDockerのバイオインフォ系パッケージのハブ
BioCondaに載っているイメージはBioContainersという組織が提供しています(BioContainersのサイトからも検索は可能ですが、使い勝手があまり良くない)
http://bioconda.github.io/から「Search」で使いたいソフトウェアを検索します
container none
というアイコンをクリック(none
とは嘘です!)
https://quay.io/(Red Hat社が持っているイメージのハブ)に飛びます
タグアイコンをクリックして、イメージのタグを選びます
この部分の内容はこちらです:https://carpentries-incubator.github.io/docker-introduction/creating-container-images/index.html
Dockerfile
の基本的な書き方は以下の通りです:
FROM <EXISTING IMAGE>
RUN <INSTALL CMDS FROM SHELL>
CMD <CMD TO RUN BY DEFAULT>
Pythonをインストールするために、Dockerfile
には何と書けば良いでしょうか?
この部分の内容はこちらです:https://carpentries-incubator.github.io/docker-introduction/advanced-containers/index.html
sum.py
の後に数字を書くと、どうなりますか?docker container run --mount type=bind,source=${PWD},target=/temp alice/alpine-python python3 /temp/sum.py
一般的にこのように書きます:
docker [action] [docker options] [docker container image] [command to run inside]
前のコンテナをインターアクティブに実行して見てください。マウントされたフォルダーに入ることは出来ますか?
今作ったコンテナにインターアクティブモードで入って、コピーしたsum.py
を実行して下さい。