dockerイメージの作り方
# オプションはキャッシュが残らないように。慣れないうちはこれでやる。
docker build --no-cache -t deploy_test2:タグ名 .
dockerコンテナの作り方
# ruby:1.0イメージから、rails_testコンテナを作成し、デタッチドモードで起動する。
$ docker run -it --name rails_test -d ruby:1.0
# コンテナとホスト側の動作、バインドマウントまでさせる方法
$ docker run -it --name コンテナ名 -d -v ホスト側絶対パス:コンテナ側絶対パス:パーミッション イメージ名
# alpineイメージのコンテナにsshログインする方法
# debian系のイメージなら/bin/bashとする
$ docker exec -it コンテナ名 /bin/ash
docker-machineの作り方(dockerリモコンぐらいに考えるとわかりやすいかも)
# dockerをどこに作成するか、その名前(default)
# --driverはdockerを建てる場所。デフォルトではvirtualboxなので、指定しなくても良い。
$ docker-machine create --driver virtualbox default
# defaultのIPアドレスを確認する
$ docker-machine ip default
dockerイメージの削除方法
$ docker rmi -f イメージ名か、イメージID
dockerコンテナの削除方法
$ docker rm -f コンテナ名か、コンテナID
docker-machineで作成したホストの削除方法
$ docker-machine rm ホスト名
確認コマンド
# docker-machineの一覧表示
$ docker-machine ls
# docker-machineで管理するdockerを対象に、dockerコマンドの操作対象を切り替える
$ eval $(docker-machine env docker-machineの名前)
# dockerコマンドの操作対象をローカルに戻す
$ eval $(docker-machine env -u)
# 動作中のコンテナを表示
$ docker ps
dockerfileの奥義
絶対に互換性に泣く。まずは下記からスタートする。
というか、まずは本を読んだ方が良い。
ググりながらやったら詰みました。
・ベースイメージを決める。
・アプリケーションのrootディレクトリを作成する。
・それをワーキングディレクトリとする(HOMEではない)
# このレベルからスタートしてコンテナ上でいろいろ試す。
FROM ruby:2.5.1-alpine
ENV APP_ROOT /usr/src/myapp
WORKDIR $APP_ROOT
COPY Gemfile Gemfile.lock ./
・aptやapkのupdateを行う。必要なら、パッケージリストにURLを追記した上で。
・apt-getなどで必要なパッケージを導入する。
・GemfileとGemfile.lockをコピーする。
・Rubyならbundlerでupdateとinstallする。
・不要なキャッシュやリスト、データを削除する。
・コンテナ起動時に実行したいコマンドを記述する。