#はじめに
これはDocker初心者でDockerに遊ばれている僕が、「Dockerでrstudioを動かすため」(ここ重要)の「Dockerを動かす」部分のメモ書きである。コピペの部分も多いが、メモ書きなので目をつぶっていただけると有難い。
他の人が役に立つかどうかは知らないが,まあ役に立つならそれで良いかなあと。取り敢えず自己満足で書いているので、そこんとこ宜しく。
#参考にしたサイト
@kooohei 氏のDockerコンテナの作成、起動〜停止まで
####Nov/12/20追記分
Imamachi-n氏のDockerコンテナ上でNGSのソフトウェアを実行してみる(Windows10・MacOSXローカル環境編)
@YumaInaura氏のDocker — docker コンテナの中で vim が使えない場合
infoScoop社のDockerFileでDockerイメージを作成してみる
かべぎわ氏の任意の名前のDockerfileでdocker buildする
sagantaf氏の[Docker実践〜稼働中のDockerコンテナをバックアップとしてイメージ化して保存しておく]
(https://sagantaf.hatenablog.com/entry/2018/09/04/190801)
##用語
「イメージ:コンテナが動作するためにベースとなるファイル群。コンテナによってイメージが変更されることはなく不変のもの。Docker Hubから取得可能。CentOSイメージが汎用的なので初心者には使いやすいと思う。
コンテナ:イメージから作成されたインスタンスのようなもの。コンテナが動作することで生成されたファイルは、イメージではなくコンテナに紐づいて管理される。ざっくり言うと、コンテナ=イメージ+差分ファイル。厳密に言えばコンテナには起動中のプロセスも含まれる。」
らしい。
ふむふむ
##Dockerコマンドの基本
取得可能なイメージはDockerHubで確認する。
docker pull images #イメージをローカルにダウンロードする
ダウンロード出来たら、以下のコマンドで確認。
docker images
#以下のように出てくる
REPOSITORY TAG IMAGE ID CREATED SIZE
##基本動作
###イメージを確認
docker images
###コンテナの一覧を確認
#デフォルトは稼働中のコンテナを表示
docker ps
#全てのコンテナを表示
docker ps -a
##作成
###イメージからコンテナの作成
docker run -it images
##自作のDockerfileの起動(Nov/12/20)
docker run -it -p Dockerfile名 /bin/bash
###ログイン状態を抜ける(dettachする)
ログインを抜けるためには{Ctr+P}
,{Ctr+Q}
を順番に押す(これを「dettach(デタッチ)」と呼ぶ)。
dettachしたコンテナを確認する方法は
docker ps
である。
###再度ログインする(attachする)
そして、dettachしたコンテナに再度ログインする状態ことを「attach」と呼び、以下のコマンドを叩く。
docker attach <CONTAINER IDまたはNAME>
を入力する
docker attach container-ID
あるいは
docker attach container-NAME
となる。
###コンテナの中でdockerを終了する
exit
###コンテナを起動する
docker start container-ID
または
docker start container-Name
###コンテナを終了する
ターミナルの中でコンテナを終了する。
docker stop container-ID
または
docker stop container-name
##docker images を削除する
###コンテナ削除
docker rm
###イメージ削除
docker rmi -f
###全削除
コンテナが動いているとイメージを削除できないので, 本当に全削除したいときはコンテナから全削除する。
####コンテナを削除する
docker ps -aq | xargs docker rm
####イメージを削除する
docker images -aq | xargs docker rmi
なんかあれば、また追記する。
##Dockerfileの作り方(Nov/12/20)
これ(http://imamachi-n.hatenablog.com/entry/2018/03/18/142327) を参考にDockerfileを作った(というかほぼまんまコピペした・・・)。
# Base image
FROM debian:9-slim
# Install Miniconda3 & Bioconda
RUN apt-get -qq update && apt-get -qq -y install curl bzip2 \
&& apt-get -qq -y install vim \ #デフォルトではvimが入っていない。
&& curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/miniconda.sh \
&& bash /tmp/miniconda.sh -bfp /usr/local \
&& rm -rf /tmp/miniconda.sh \
&& conda install -y python=3 \
&& conda update conda \
&& conda config --add channels r \
&& conda config --add channels defaults \
&& conda config --add channels conda-forge \
&& conda config --add channels bioconda \
&& apt-get -qq -y remove curl bzip2 \
&& apt-get -qq -y autoremove \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /var/log/dpkg.log \
&& conda clean --all --yes
ENV PATH /opt/conda/bin:$PATH
これを拡張子をつけずにDockerfileで保存するか、自分の保存したい名前で保存する。
そして以下のようにしてbuildする。
#Dockerfileで保存した場合
docker build -t myimage:1.0 .
#自分の保存したい名前で保存した場合
docker build -t myimage:1.0 -f docker_test.txt .
自分がよく使いそうなオプションだけ書く。
Options | 名前 |
---|---|
-t, --tag list | 名前とタグをつけることが出来る 例 name:tag |
|
-f,--file string |Dockerファイルの名前を指定できる (Default is 'PATH/Dockerfile')
例
以下のDockerfileをdemo2と名付けてdocker buildした。
# Build from base image
FROM ubuntu:20.04
# Update base images with latest patches
RUN apt-get update && apt-get upgrade -y
# Install dependencies and pdftotext
RUN apt-get -y install poppler-utils \
&& apt-get -y install python3-pip # python-pip
# Install tool
RUN pip3 install wordcloud
docker build -t name:tag dockerfile_dir/dockerfile docker file_dir
docker build -t demo2:1.0 -f demo2 .
詳しくは
docker build --help
で確認すること。
##dockerimageの保存
他のターミナルを開き、ターミナル状況を確認する。そして、
docker commit コンテナのIDもしくはNAME イメージ名
というようにして保存する。
##Dockerimageのファイル化
バックアップしたイメージはsaveコマンドでファイル化して、Docker環境の無いサーバやNASに保存しておくことができる。現在いるディレクトリに作成される。
docker save イメージ名 -o ファイル名
##Dockerimageのファイルから復旧
docker load test_file.tar
docker images