クリーンな環境を構築したり、使い捨てしたり、テストに使ってみたりと色々便利なdockerですが、最低限のコマンドのメモです。
インストール
Azure VM上のUbuntu にインストールしてみた。
tyamazoe@vm-ubuntu-1804-test2:~$ uname -a
Linux vm-ubuntu-1804-test2 4.18.0-1020-azure #20~18.04.1-Ubuntu SMP Wed Jun 5 12:43:15 UTC 2019 x86_64 x86_64 x86_64U/Linux GNU/Linux
旧バージョンのアンインストール
$ sudo apt-get remove docker docker-engine docker.io containerd runc
インストール
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb)
sub rsa4096 2017-02-22 [S]
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
バージョン
$ sudo docker --version
Docker version 18.09.6, build 481bc77
コンテナの実行 Hello World
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
#以下省略
コマンド
コンテナ操作
# コンテナを起動してそのコンテナのコンソールに入る
$ sudo docker run -it ubuntu bash
# [Ctrl+p Ctrl+q]でコンテナから抜ける。
# exit でコンテナ終了
#バックグラウンド起動
$ sudo docker run -d -it debian /bin/bash
# コンテナのコンソールに入る
$ sudo docker exec -it [container name] bash
$ sudo docker attach [container_id]
# コンテナ再開、停止
$ docker start [container name]
$ docker stop [container name]
#コンテナ削除
$ docker rm [-f] [container name]
イメージ関連
# イメージ centosのlatestバージョンをダウンロード
# sudo docker pull centos:latest
# イメージ一覧
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zoe/flask-demo 1.0 ecfd357d200c 3 days ago 474MB
ubuntu latest 4c108a37151f 9 days ago 64.2MB
nginx latest 719cd2e3ed04 2 weeks ago 109MB
centos latest 9f38484d220f 3 months ago 202MB
hello-world latest fce289e99eb9 5 months ago 1.84kB
jagregory/pandoc latest 58841db3ebe8 2 years ago 3.05GB
# 実行中のコンテナ
$ sudo docker ps
# 実行履歴一覧
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1f2f0fe87ea zoe/flask-demo:1.0 "bash" 3 days ago Exited (0) 3 days ago cocky_feynman
b053f1969068 nginx "nginx -g 'daemon of…" 3 days ago Exited (0) 3 days ago nginx-cont2
d14448dd5217 centos "bash" 3 weeks ago Exited (127) 3 weeks ago festive_ardinghelli
cedf425ea8f3 jagregory/pandoc "/root/.cabal/bin/pa…" 3 weeks ago Exited (1) 3 weeks ago gifted_buck
1eaa398167b8 hello-world "/hello" 3 weeks ago Exited (0) 3 weeks ago inspiring_nobel
コンテナイメージの作成
UbuntuにPython3とflaskのイメージを作成する場合
Dockerfile
#ベースイメージ
FROM ubuntu:latest
# パッケージのインストール
RUN apt-get update
RUN apt-get install python3 python3-pip -y
RUN pip3 install flask
ビルド
$ sudo docker pull ubuntu
$ sudo docker build . -t zoe/flask-demo:1.0
コンテナ実行
$ sudo docker run -it --rm zoe/flask-demo --name flask-demo1 bash
# ポートフォワードして、ローカルのworkフォルダを/opt/appへマウント
sudo docker run -it -p 5000:5000 -v /home/hoge/work:/opt/app zoe/flask-demo:1:0 bash
これでローカルの workフォルダに作成したflaskのプログラムをコンテナの/opt/appでapplication.py を実行可能。
flaskサンプル
# application.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello flask!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)