#author("2020-02-27T23:34:44+00:00","default:wikiadmin","wikiadmin") -Dockerやってみよう #contents *コマンド [#obbee8d3] |docker stat|コンテナ状態確認| |docker exec -it コンテナ名 /bin/bash|入る| *インストール [#q4f8be84] -Windows,MacであればDocker toolboxを使うべし -CentOS7であればyum install dockerでOK -Macはbrew cast install docker **Docker build [#fe8774c2] デフォルトのファイル名なら-f不要。-tでイメージ名 ./そこにあるパスから指定されたファイルを探すと言うもの docker build -f Dockerfile-xxx -t mydocker ./ docker run mydocker **Docker toolbox [#p08ffa98] 若干時代遅れ感があるが、Windows10以外の場合はこれしかない。仮想マシンを介してDockerを操作する。仮想マシンのIPはデフォルト192.168.99.100になる。アクセスする場合もこのIPを利用する。 docker run -d --name httpd -p 80:80 httpd **kitematic [#h374fea5] GUIツールだが、最近の情報がないのであまり使われてない印象。 *ミドルウェアを使ってみる [#za418117] **Jenkins [#h49c13f9] 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とかじゃないとエラーが出る! *Docker composer [#k86c8003] |設定を確認|docker-compose config| |pull|docker-compose pull| |ビルド|docker-compose build| |全部まとめて再起動|docker-compose restart| |全部まとめて実施|docker-compose up -d| |全部まとめてログ表示|docker-compose logs| |作成されたdockerイメージの確認|docker-compose images| |Multi stage build|中間成果物を無くして、イメージスリム化| **nginxをローカルボリュームにマウントする [#p5bcb032] https://takatorix.hatenablog.com/entry/2017/04/27/012516 *用語集 [#tffa9306] |Docker Hub|PUBLICに公開されているDockerイメージリポジトリ| |Docker repository|公開できないのであればPrivateリポジトリを立てる。AWSなどではAmazon ECRとして提供されている。コンテナでもregistryで提供されている| |Dockerfile|Dockerコンテナーの構成とDockerイメージの作成を一括で行う。イメージ上でコマンドを実施したりできる| |Volume Container|永続データを配置したいときに利用する| *いろいろ試してみる [#s60bcbdd] **共通手順 [#ncc3e451] +docker pull イメージ名 +docker run オプション イメージ名 **オプション [#bb4e7d07] |デーモン起動|-d| |ホストのボリュームマウント |-v /var/tmp:/var/www/html| |ポート|-p 8080:80| |環境変数|-e foo=var| **Dockerの内部にbashで接続 [#i619e230] docker exec -it コンテナID bash そのほかにもport, top,などがある。 ***様々なミドルウェアを試してみた [#s7918881] |軽くやってみる|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/#/| **MySQL [#u38b30c3] docker pull mysql docker run --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql #停止して削除 docker stop mysql docker rm mysql -削除しないと以下のエラー Error response from daemon: Conflict. The name "mysql" is already in use by container 2b37289bb606. You have to remove (or rename) that container to be able to reuse that name. -接続するにはDockerマシンのIPに対して mysql -u root -pmysql **Wordpress/Nginx [#o8e89459] docker pull eugeneware/docker-wordpress-nginx docker run -p 80:80 --name docker-wordpress-nginx -d eugeneware/docker-wordpress-nginx *ファイルシステムへの保存 [#x66cc831] docker export でtarファイルへ docker importでtarファイルからdockerイメージへ *ツール [#u2310ef7] **Docker for Mac and Windows [#x9b1ab6a] 2016/03現在ベータ版だが、ネイティブでDockerを動かせるというもの。Hyper-Vを利用しているためWindows10以降 **Docker toolbox [#b4dd7743] VirtualBox経由のDockerを操作するがそれをひとまとめにしてくれているツール。 **CentOS6(非推奨) [#haab25f4] yum install docker-io *起動してみる [#c7f820ad] systemctl start docker Error starting daemon: Error initializing network controller: Error creating default \"bridge\" "network: package not installed"とでて失敗。OpenVZには入れられないということで終了! *基本操作 [#q14e67c8] |docker search キーワード|Docker Hubからイメージ検索| |docker pull centos|centosイメージを持ってくる| |docker images|今ローカルにあるイメージ一覧| |docker ps|動いているDockerプロセス| |ctrl+p,ctrl+q|抜ける| |docker attach [CONTAINER ID]|再びアタッチ| **試しにやってみる [#o47dd014] |docker run hello-world|表示するだけ| |docker run -d -P --name web nginx|web| *トラブルシューティング [#gcca1968] **docker: you are not authorized to perform this operation: server returned 401.. [#s21b87b1] DockerImageTrustを有効にしている場合、自作のイメージは署名なしでは実行できない。 export DOCKER_CONTENT_TRUST=0で解消。 *さくらのVPSにインストール [#z332ceea] *Azureの仮想マシンにインストール [#s05af2b0] *Oracle on Docker [#o02464a7] https://github.com/oracle/docker-images