Dockerのチュートリアル
Dockerそのものの解説は以下の資料が非常にわかりやすかったです。
www.slideshare.net
初心者がよく使うコマンド
Dockerの解説書を見るたびに「Dokcerコマンド多すぎィ!」という感情を抱くのですが、私(Docker歴2ヶ月の初心者)がよく使うコマンドは、実は10個くらいしかありません。そこで、毎回コマンドをコピペできるようにパターン化してみました。
1. pull: イメージをダウンロードする
DockerHubからイメージをダウンロードするコマンドです。後述のrun
で代用できるので、pull
自体は実はあまり使いません。
docker pull [image_name]
2. build: イメージを作る
Dockerfileという、イメージのレシピを使ってイメージを作成するコマンドです。-t
で、任意のイメージ名をつけられます。最後の引数 .
はDockerfileがあるディレクトリのパスを意味しています。
docker build -t [image_name:tag] .
3. イメージの一覧を見る
イメージの一覧を見ます。
docker images
4. コンテナ化
イメージからコンテナを作成しコマンドを実行します。
--name
でコンテナに名前をつけられます。最後の引数は、コンテナ上で実行するコマンドです。コマンドを省略することもできます。その場合は、イメージごとにデフォルトで指定されているコマンドが実行されます。
docker run --name [container_name] [image_name] [command]
最後の引数はコンテナ上で実行するコマンドである、と上述しました。つまり、/bin/bash
を与えれば、bashが実行されます。その際、-it
オプションを付けることで、いま開いているターミナルを用いて標準入力を与えたり標準出力を得たりすることができます。(本当は違うのですが)-it
オプションは、「コンテナでInTeractiveな操作ができる」というニュアンスで捉えています。
docker run -it --name [container_name] [image_name] /bin/bash
バックグラウンドで動かしたい時は-d
オプションを付けます。例えば、何らかのサーバとして動かす場合です。このサーバにポート指定でアクセスしたい場合は、-p
オプションでポートの設定をする必要があります。[ホスト側のポート番号:コンテナのポート番号
の形式を-p
オプションの引数に渡すことで、ホスト側のポートからコンテナのポートへポートフォワーディングできるようになります。
docker run -d --name [container_name] -p 8080:80 [image_name] [command]
上の例では8080を80にポートフォワーディングしています。 この仕組みを使って、DockerコンテナにSSHでログインすることもできるようになります(後述)
5. コンテナから脱出する
上述のdocker run -it
を実行した結果、ターミナルでコンテナを操作できる状態になります。この状態から脱出し、元のホスト側の環境に戻るには以下の操作をします。
Ctrl p, Ctrl q
コントロールを押しながら「p」を押し、続けてコントロールを押しながら「q」を押します。
一方、SSHログイン先などから抜けるために使うexit
コマンドを使うと、コンテナが落ちてしまいます。
6. コンテナに再度入る
上の操作でコンテナから抜けた後、もう一度コンテナに入るには以下のようにします。
docker attach [container_name]
7. コンテナの一覧を見る
コンテナの一覧を見ます。
docker ps
落ちているコンテナも含めてすべて見る場合は以下のようにします。
docker ps -a
8. コンテナを消す
コンテナを消します。
docker rm -f [container_id]
9. イメージを消す
イメージを消します。
docker rmi [image_name]
以上、よく使うコマンドした。commit
やpush
なんかは、Dockerに慣れてきて自分でDockerイメージを作ったりDockerHubに投稿したりする中級者向けなので、今回は省略させていただきました。
10. おまけ: DockerコンテナにSSHログイン
DockerfileにSSHサーバを22番ポート立ち上げるコマンドを記述しておき、これでイメージを作ります。run
するときに、適当なポート番号を22番にポートフォワーディングすれば、コンテナにSSHログインできるようになります。
Dockerfile
FROM ubuntu:16.04 RUN DEBIAN_FRONTEND=noninteractive apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:hogehoge' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
コンテナ化
docker run -d --name ssh-test -p 20022:22 ssh-test-image
ログイン
ssh root@xxx.xxx.xxx.xxx -p 20022
xxx.xxx.xxx.xxx
はホスト側のIPアドレスと同じになります。
以上、今回はよく使うDockerコマンドをまとめてみました。
良い記事だと思っていただいた方は、SNSでのシェア、ブログからのリンク、「読者になる」ボタンのクリック、「★」ボタンのクリック、よろしくお願いします!