Dockerの基本操作(備忘録)
Dockerについて
Dockerは、1コンテナにつき1つのアプリ(実行環境)
Docker Image(ドッカーイメージ)はRegistry(レジストリー)に保存する
保存するレジストリはDockerHUB、もしくはAWSのAmazon Elastic Container Registry (ECR)に保存して管理する
docker Pull
//イメージをレジストリからダウンロード
docker Push
//レジストリに修正したファイルをアップロード
docker Run
//デーモンがレジストリからイメージをダウンロードしてコンテナを作成する
Dockerの基本操作
#DockerHubのアカウント作成
作成したいイメージを探してdocker pullで使用する
もしくはイメージに手を加えて利用することもできる
#Dockerのコマンド
docker run centos
// centos という名前のイメージを起動 実行中のdocker(コンテナ)の一覧が表示
docker ps
// 終了したコンテナも含めて一覧表示
docker ps -a
// コンテナを起動しつつ操作可能にする(環境にログインしたような状態になる)
docker run -it centos
// imageの一覧を表示
docker images
// 自作(編集)したイメージを保存する場合
docker commit
// 起動中のコンテナを exit で終了して docker ps -a で CONTAINER IDを確認
docker commit {{CONTAINER ID}} {REPOSITRY名}
例:docker commit c7827f28ee8d mycentos_with_httpd
#Dockerfileの作成
DockerHubに作成したいイメージがなければ自分で作成することができる
Dockerfileは自前で任意の場所に作成する
DockerComposeのインストール
Docker for Macをインストール済みであれば既にインストールされている
※後にVagrant内、AWS にインストールする方法を記載する(linuxの場合は別途必要になる)
複数のコンテナを組み合わせて1つのアプリケーションとして構成を定義するファイル
#docker-compose.ymlの作成
PHPとMySQLのコンテナを組み合わせた例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
version: "2" services: mysql: image: mysql:5.7 ports: - "3306:3306" volumes: - "./mysql/init:/docker-entrypoint-initdb.d" - "./mysql/data:/var/lib/mysql" environment: - MYSQL_ROOT_PASSWORD=secret phpapp: image: phpapp build: ./build/phpapp volumes: - "./app:/var/www/html" ports: - "8080:80" |
#DockerComposeの説明
docker-compose.yml がある階層まで移動してコマンドを実行する
起動・停止・再起動のコマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 起動 sudo docker-compose up ## バックグラウンド実行なら「-d」を付けてup sudo docker-compose up -d ## サービスを指定して起動するなら sudo docker-compose up nginx # 停止 sudo docker-compose stop ## 停止かつコンテナを削除 sudo docker-compose down ## イメージも合わせて削除 sudo docker-compose down --rmi all # 再起動 sudo docker-compose restart |
起動中のコンテナに入りたい時
1 2 3 4 5 6 |
# docker起動 docker-compose up -d # phpコンテナに入ります docker-compose exec php bash |
補足
2020年7月頃にAmazon ECSに簡単にデプロイできるコマンドができたらしい
別の記事にて使い方Docker + Amazon ECSのデプロイ方法について紹介する予定です