外部からイメージを持ってくる場合
$ docker pull ${imageName}
$ docker run -itd --name ${contenaName} ${imageName or imageID}
-p
: 外部からアクセスされるポート番号:コンテナ側のポート番号
-v
: ホストの絶対パス:コンテナの絶対パス
$ docker exec -it ${contenaName or contenaID} bash
or
$ docker attach ${contenaName or contenaID}
attach
はexit
時、コンテナが停止する
$ docker start ${contenaName or contenaID}
$ docker stop ${contenaName or contenaID}
$ docker rm ${contenaName or contenaID}
$ docker rmi ${imageName or imageID}
自分でイメージを作成する場合
dockerfile: build
の手順書
./dockerfile
FROM ubuntu
CMD echo 'Hello docker world!'
FROM
: imageName
ARG
: 変数定義 -> 代入時: $変数名
RUN
: build時に実行
CMD
: run時に実行
$ docker build -t ${imageName or imageId} ${dockerfileName} ${absolute path}
コンポーズ(イメージ作成からコンテナ起動まで行ってくれる)
Docker Composeのインストール
$ curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-Compose
が使用できるか確認
$ docker-compose --version
Docker Composeを使ってみる
./dockerfile
FROM python:3.6
ARG project_dir=/projects/
ADD src/requirements.txt $project_dir
RUN mkdir /test
VOLUME /test/
ADD src/requiremnts.txt /test/
ARG requirements=/test/requirements.txt
WORKDIR $project_dir
RUN pip install -r $requirements
./docker-compose.yml
version: '3'
services:
flask:
build: .
ports:
- "5000:5000"
volumes:
- "./src:/projects"
tty: true
environment:
TZ: Asia/Tokyo
command: flask run --host 0.0.0.0 --port 5000
./src/app.py
from flask import Flask, jsonify
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.route('/')
def index():
return jsonify({
"message": "Hello flask!"
})
if __name__ == '__main__':
app.run()
./src/requirements.txt
flask
jsonify
$ docker-compose up -d
アクセスできるかホストから確認
$ curl http://localhost:5000
{"message":"Hello flask!"}
参考
Docker | docker build と Dockerfile でイメージをビルドする基本
Python+Flask環境をDockerで構築する
Dockerfileについて
docker-compose.ymlの命令を理解して、よりDockerを有効活用したい!