基本的なDockerコマンドをいくつか示します。
https://github.com/wsargent/docker-cheat-sheet
Linuxに最新のDocker環境をインストールする:
curl -sSL https://get.docker.com/ | sh
OSXでDockerターミナルを起動します
bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'
情報: 名前に「/」が含まれていないコンテナ名は、基本的なパブリックコンテナテンプレートを示します
「/」が含まれるコンテナ名は、次の形式のユーザーコンテナを示します:username / BasicContainer
「:」が含まれるコンテナ名は、基本/ユーザーコンテナのサブバージョンとして通常使用されるタグ
インターネットDockerリポジトリで画像を検索するdocker search ubuntu
インターネットからローカルリポジトリにDockerイメージをダウンロードしますdocker pull ubuntu:14.04
ローカルのDocker画像を一覧表示します:docker images
自作のイメージ(myname / ubuntu:tmpl_1)をバックグラウンドで実行し、コンテナーにMyUbuntuという名前を付けます
docker run -itd --name=MyUbuntu myname/ubuntu:tmpl_1
コンテナで作業するためにアタッチします(後でbashを取得するには2 x Enterを押します)
docker attach MyUbuntu
コンテナを自動的に停止せずにコンテナから離れるには:
CTRL-P + CTRL-Q
コンテナbashで^D(またはexitコマンド)が発行されると、コンテナは停止します。再起動するには、例:
docker start MyUbuntu
実行中のコンテナを一覧表示するdocker ps
すべてのdocker(実行中および停止中)コンテナーのリスト
docker ps -a
コンテナの実行に関する注意:
docker run -t -i
→^P^ Qでデタッチし、dockerattachで再アタッチできますdocker run -i
→^P^Qでは切り離せません。 stdinを混乱させますdocker run
→^P^Qでは切り離せません。クライアントをSIGKILLできます。 dockerattachで再接続できます
トラブルシューティング:
1)dockerコマンドを実行した後にこのエラーメッセージが表示された場合:
Error response from daemon: client is newer than server (client API version: x.xx, server API version: y.yy)
次のコマンドを実行して、バージョンを同期します。
docker-machine upgrade
Public(Internet)プルイメージから新しいローカルDockerイメージを作成する
####COMMITメソッド####
このイメージに基づいてコンテナーを実行するdocker run -t -i ubuntu:14.04 /bin/bash
注:bashプロンプトにあるコンテナIDを覚えておいてください(これに基づいて新しいコンテナIDを作成する必要があります)
例: root @ ba7cbe2cd3ce:/#(ba7cbe2cd3ceはコンテナID)
目的のソフトウェアパッケージをインストールします(apt-get update &&apt-get install…。)
例: apt-get update &&apt-get -y upgrade; apt-get install mc ssh fail2ban nmap ngrep iftop iotop htop
終了したら、exit or ^D
を使用してbashから切断してコンテナーを停止します。
ここで、新しいイメージをローカルに保存します。
docker commit -m "My special container template" -a "My Name" ba7cbe2cd3ce myname/ubuntu:v001
これにより、変更されたコンテナがmyname / ubuntu:v001という名前の新しいイメージとしてローカルに保存されます
確認するには:docker images
####「Dockerfile」メソッド
Dockerfileという特別なファイルを作成するディレクトリを作成します
新しいイメージの作成方法の説明が書き込まれます。mkdir ubuntu_template_001
cd ubuntu_template_001
touch Dockerfile
mcedit Dockerfile
————–コンテンツ—————-
# This is a comment
FROM ubuntu:14.04
MAINTAINER My Name <mmyname @mydomain.com>
RUN apt-get update && apt-get install -y mc ssh fail2ban nmap ngrep iftop iotop htop
RUN apt-get -y install postfix
–ファイルを保存してから、次のコマンドを実行してイメージを作成します。
docker build -t myname/ubuntu_template_001 .
注:コマンドの最後にある「。」は、Dockerfileがどこにあるかを示します。
インストールのすべての出力と最後にイメージIDが次のように表示されます。
—> 8578743d7b30
–作成されたすべての画像を確認します:docker images
結果:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 8578743d7b30 3 minutes ago 290 MB
myname/ubuntu v001 9bc5a639a1de 20 minutes ago 318.6 MB
– ID 8578743d7b30の画像に名前またはタグがないことがわかります。
ここで、名前を付けます:tag
docker tag 8578743d7b30 myname/ubuntu:v002
–画像リストをもう一度確認します:docker images
結果: REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
myname/ubuntu v002 8578743d7b30 16 minutes ago 290 MB
myname/ubuntu v001 9bc5a639a1de 33 minutes ago 318.6 MB
–これで、この新しいイメージに基づいてコンテナを実行できます
docker run -it --name "Server2" myname/ubuntu:v002 bash -c 'service ssh start ; ifconfig eth0; bash'
ローカルリポジトリからの画像の削除docker rmi michel/ubuntu:v002
ローカルDockerシステムからのコンテナーの削除docker rm ContainerName
またはdocker rm ContainerID
実行中の、接続されていないコンテナ内でプログラムを実行するには:
docker exec -t -i ContainerName bash -c 'command'