git clone https://github.com/spring-guides/gs-spring-boot-docker.git cd gs-spring-boot-docker/complete mvn package #mvn mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar) # gradle mkdir -p build/dependency && (cd build/dependency; jar -xf ../libs/*.jar) docker build -t springio_xxx . docker run -p 8080:8080 -t springio_xxx
| ARG | シェル環境変数をそのまま引き継げるようだ |
| ENV | Dockerに渡す環境変数 |
| WORKDIR | Docker内部での作業ディレクトリ、なかったら作成してくれる。相対パスだと今いる場所から移動 |
| ADD | COPYのほうが良いので非推奨 |
| COPY | ローカル Dockerでコピーする。キャッシュがきくので. . などとやるとローカルのファイル変更があるたびにビルドされるのでファイル指定で |
33306:3306
${HOME}/.aws/credentials:/home/spring/.aws/credentials:ro
| docker stat | コンテナ状態確認 |
| docker exec -it コンテナ名 /bin/bash | 入る |
| 全コンテナ停止 | docker stop $(docker ps -q) |
| 全コンテナ削除 | docker rm $(docker ps -q -a) |
| 停止済みコンテナ削除 | docker container prune |
| 全イメージ削除 | docker rmi $(docker images -q) |
デフォルトのファイル名なら-f不要。-tでイメージ名 ./そこにあるパスから指定されたファイルを探すと言うもの
docker build -f Dockerfile-xxx -t mydocker ./ docker run mydocker
若干時代遅れ感があるが、Windows10以外の場合はこれしかない。仮想マシンを介してDockerを操作する。仮想マシンのIPはデフォルト192.168.99.100になる。アクセスする場合もこのIPを利用する。
docker run -d --name httpd -p 80:80 httpd
GUIツールだが、最近の情報がないのであまり使われてない印象。
docker pull jenkins/jenkins:lts cd /tmp
tfujiinoMacBook-Pro:tmp t_fujii$ docker run -d -v `pwd`/jenkins_home: /var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
/tmpとかじゃないとエラーが出る!
実態はホストの/var/lib/docker/volumes/ボリューム名にある。macの場合は仮想マシン上で動いているため以下のコマンドで接続する。
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
ボリュームはコンテナ停止中だと削除できないので、docker rmした後に削除する。
| ボリューム使用率 概要 | docker system df |
| ボリューム使用率 詳細 | docker system df -v |
| ボリューム一覧 | docker volume ls |
| 未使用のボリューム削除 | docker volume prune |
新しいボリューム(new_volume)を作成して、古いもの(old_volume)からCOPYする。
docker volume create --name new_volume
docker container run --rm -it -v old_volume:/from -v new_volume:/to alpine ash -c "cd /from ; cp -av . /to"
downでコンテナ削除。volumeを定義してなかったらそれごと削除される。 名前を変更する場合などに柔軟性を持たせるために、volumeは定義すべし!
| 設定を確認 | docker-compose config |
| pull | docker-compose pull |
| ビルド | docker-compose build |
| 全部まとめて再起動 | docker-compose restart |
| 個別に再起動 | docker-compose restart サービス名 |
| 全部まとめて実施 | docker-compose up -d |
| 全部まとめてログ表示 | docker-compose logs |
| 作成されたdockerイメージの確認 | docker-compose images |
| Multi stage build | 中間成果物を無くして、イメージスリム化。例えばコンパイル系言語であればビルドイメージはライブラリが肥大化するが成果物だけいただいて、実行ランタイムはコンパクトなものを選べる |
バイナリをダウンロードして古いバイナリを置き換える!
sudo curl -L https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 --output /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
https://takatorix.hatenablog.com/entry/2017/04/27/012516
| Docker Hub | PUBLICに公開されているDockerイメージリポジトリ |
| Docker repository | 公開できないのであればPrivateリポジトリを立てる。AWSなどではAmazon ECRとして提供されている。コンテナでもregistryで提供されている |
| Dockerfile | Dockerコンテナーの構成とDockerイメージの作成を一括で行う。イメージ上でコマンドを実施したりできる |
| Volume Container | 永続データを配置したいときに利用する |
| デーモン起動 | -d |
| ホストのボリュームマウント | -v /var/tmp:/var/www/html |
| ポート | -p 8080:80 |
| 環境変数 | -e foo=var |
docker exec -it コンテナID bash
そのほかにもport, top,などがある。
| 軽くやってみる | docker run -it --name "test" centos /bin/bash | |
| httpdを8080でデーモン起動 | docker run -d -p 8080:80 httpd | |
| jenkins | docker run -p 8080:8080 -p 50000:50000 jenkins | |
| jenkins外部ボリューム | docker run -p 8080:8080 -p 50000:50000 -v /var/tmp:/var/jenkins_home jenkins | |
| Solr4 ボリュームマウント | docker run -p 127.0.0.1:8983:8983 -v /var/tmp:/etc/opt/solr/cores/your-awesome-core:ro 2degrees/solr4 | http://localhost:8983/solr/#/ |
docker pull mysql docker run --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql #停止して削除 docker stop mysql docker rm mysql
mysql -u root -pmysql
docker pull eugeneware/docker-wordpress-nginx docker run -p 80:80 --name docker-wordpress-nginx -d eugeneware/docker-wordpress-nginx
docker export でtarファイルへ docker importでtarファイルからdockerイメージへ
2016/03現在ベータ版だが、ネイティブでDockerを動かせるというもの。Hyper-Vを利用しているためWindows10以降
VirtualBox経由のDockerを操作するがそれをひとまとめにしてくれているツール。
yum install docker-io
systemctl start docker Error starting daemon: Error initializing network controller: Error creating default \"bridge\" "network: package not installed"とでて失敗。OpenVZには入れられないということで終了!
| docker search キーワード | Docker Hubからイメージ検索 |
| docker pull centos | centosイメージを持ってくる |
| docker images | 今ローカルにあるイメージ一覧 |
| docker ps | 動いているDockerプロセス |
| ctrl+p,ctrl+q | 抜ける |
| docker attach [CONTAINER ID] | 再びアタッチ |
| docker run hello-world | 表示するだけ |
| docker run -d -P --name web nginx | web |
| Driverがない | Dockerbuildファイルでインストール |
| SQLSTATE[HY000][2002] No such file or directory | localhostを127.0.0.1 |
DockerImageTrustを有効にしている場合、自作のイメージは署名なしでは実行できない。 export DOCKER_CONTENT_TRUST=0で解消。