Dockerチートシート


DockerHubにログイン

まずこれをしておかないとDockerHubにて公開されているイメージを取ってこれない。
※要DockerHubアカウント

docker login  

Dockerイメージ作成

Dockerfileからイメージを作成する。
Dockerfileの作り方そのものは割愛。

docker build --no-cache=true -t {好きなイメージ名} {Dockerfileがあるディレクトリパス}  

現在ローカルにあるイメージ確認

docker images  

イメージからコンテナ作成

docker run -itd -h {好きなホスト名} -v {ホストのディレクトリ}:{コンテナのディレクトリ} --name {好きなコンテナ名} -p {ホスト側ポート}:{コンテナ側ポート} {イメージ名} {実行コマンド}  

■補足
【vオプション】
ホストのディレクトリとコンテナのディレクトリを共有するオプション
例えば-v /home:/homeとすると、ホストのhomeディレクトリとコンテナのhomeディレクトリの中身が同期される。

【pオプション】
ホスト側にどのポートにアクセスがあった場合、コンテナのどのポートに流すかを設定する。
例えば-p 80:80とすればホストの80ポートへのアクセスはコンテナの80ポートへ流れる。 
複数ポートを設定したい場合は-p 80:80 -p 443:443のように複数指定する事も可能。

また、ホスト側が複数IPアドレスを持っている場合などに-p 192.168.1.1:80:80のようにIPアドレスを指定する事も可能。

【実行コマンド】
Dockerfileにて実行コマンドを指定していた場合は省略可能。 
特定のコマンドを実行したい訳でない場合は/bin/bashを指定しておくと無難。 

コンテナ一覧を確認する

docker ps -a  

-aオプションをつけないと停止しているコンテナは表示されない。

ホストからコンテナに入る

docker exec -it {コンテナ名} {実行シェル}  

■補足
【実行シェル】
どのシェルでログインしたいか。  
分からなければbashにしておくと無難。

コンテナを停止する

docker stop {コンテナ名}  

コンテナを起動する

docker start {コンテナ名}  

コンテナを削除する

コンテナが停止している状態で以下を実行。

docker rm {コンテナ名}  

ローカルのイメージを削除する

該当イメージを利用しているコンテナが存在しない状態で以下を実行。

docker rmi {イメージ名}  

コンテナをバックアップする

docker export {コンテナ名} > {任意バックアップ名}.tar  

バックアップからコンテナをリストアする

コンテナのリストアは、バックアップしたコンテナのイメージを作成するということ。
作成したイメージからコンテナを作ればリストアとなる。

cat {バックアップ名}.tar | docker import - {作成するイメージ名}  
docker run 〜以下略〜  

ホストとコンテナでファイル転送

# ホストからコンテナ  
docker cp {コピー元ファイルパス} {コンテナ名}:{コピー先ファイルパス}  
# コンテナからホスト  
docker cp {コンテナ名}:{コピー元ファイルパス} {コピー先ファイルパス}