20190625のdockerに関する記事は24件です。

[AWS ECS]Fargateのcontainerにシェルで入りたい(sshd無しで!)

[AWS ECS]Fargateのcontainerにシェルで入りたい(sshd無しで!)

ecsのFargateいいですね。コンテナ単位でcpuとかメモリとか指定する必要はあれど、elastic beanstalkや ec2ベースのecsクラスタのようにec2を意識せずにクラスタ組めるのはともていい感じだと思います。

・・・が、ec2を意識しない故に、困ったときのsshアクセスができません。これはトラブルシュート時や開発初期はとても困ります。
かといって、docker containerにsshの口を開けるのもなんとも負けた感がします。

Fargateいいけど、docker execできたらなーと思っていましたが、そんなことはみんなが思っていることのようで、
下記のようなissueが数年前から立っておりました。

How to run "docker exec... " command in ECS

すると最近(2019/5/8)

「SSMつかったら、Fargateコンテナのシェルにアクセスできたよ」

というコメントが出てきました!! (参考: https://github.com/aws/containers-roadmap/issues/187#issuecomment-490347856)

セッションマネージャーでawsコンソール(やaws-cli)から、シェルアクセスできるのは知っていたのですが、ec2が見えないfargateに関しては無理だろうと思い込んでいたのですが、読んでみるとできるようです。

これは来た!!とおもい試してみたところ、いろいろ使いづらいところはありつつも成功したのでメモ代わりに残しておきます。

セッションマネージャー

AWS System managerの セッションマネージャーに関しては下記の記事を参照ください。

SSH不要時代がくるか!?AWS Systems Manager セッションマネージャーがリリースされました!

簡単にいうと、awsのコンソールや、cliの環境から、特定のaws内のec2にシェルアクセスができる、というものです。

インスタンスIDなどが必要なことから、実際に見えるEC2でないとできないのかな?と思いこんでいたのですが、上記のissueのコメントを見てみるとどうもそうではないらしかったので試してみます。

手順

Fargate自体の仕組みや、設定に関するところ全体を書くと、関係しない部分が多くなるため、必要な部分のみ抜粋します。

しくみの概要

詳細手順の前に、どのように(EC2の見えない)Fargateコンテナに対して設定するのかの概要です。

前提:セッションマネージャーには、aws内のec2以外でも、 AWSのコンソールから System Managerにアクティベーション処理を行い、 amazon-ssm-agent を起動しておくことで、 任意の環境のホストをSystem Managerから セッションマネージャーの機能を使える用に登録できる。

  1. これを踏まえて、事前にアクティベーションを登録しておいて、 Activation CodeActivatoin Id を取得(これらに関しては後述)しておく
  2. Fargateで動くコンテナのビルド時にDockerfileで、 amazon-ssm-agent をインストールしておく。
  3. Fargetでコンテナが起動する際に、 上記「1.」の Activation CodeActivation Id を使って、自分のコンテナを System Managerに登録する、かつ、amazon-ssm-agent を引数なしで起動する。

これで、セッションマネージャーにFargateのコンテナが登録されてシェルを起動できるようになります。

しくみの詳細

Sysetem Managerにアクティベーション登録をする

AWS System Manager -> アクティベーションから「アクティベーションの作成」を実行する

スクリーンショット 2019-06-25 9.49.14.png

「インスタンス制限」 というのがあり、一つのアクティベーションに対して、最大何個のホストを登録できるかの設定項目があります。
dockerで運用する場合、コンテナが起動する度に違うホスト扱いになり、コンテナを起動するたびに「登録できる残りコンテナ数」が減っていきます。

コンテナ破棄時に、ここの登録済み数をクリアする事ができれば気にしなくても良さそうなのですが、ちょっと方法がわからず、知っている方がいたら教えてほしい(切実)

(また、やらしいことに、 managed ec2以外を対象にする場合、ここのアクティベーションと登録済みインスタンス数によって課金とかにも関わってくるらしく気にせず作りっぱなしとかにもできなさそう(あまり詳しく調べていない)なのがつらいところです)

このアクティベーションを行うことで、下記のような Activation CodeActivation ID が生成されるのでメモします(一回しか出てこないので注意)

スクリーンショット 2019-06-25 23.07.16.png

エージェントのインストール

Fargateで動かすコンテナに amazon-ssm-agent をインストールする。

上記のissueコメントにあるように、

https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html

で、OS毎に agent のインストール方法がのっているので、これにしたがい Dockerfileに追記します。
今回自分の場合は ubuntu だったため、下記のようになります。

Dockerfile

RUN curl https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/amazon-ssm-agent.deb \
    && dpkg -i /tmp/amazon-ssm-agent.deb \
    && cp /etc/amazon/ssm/seelog.xml.template /etc/amazon/ssm/seelog.xml

コンテナの登録と、セッションマネージャー用エージェントの起動

コンテナの登録

Fargateのコンテナ起動時に、上記アクティベーション時のコードと、IDでコンテナをSSMに登録します。

Fargateコンテナからアクセスする必要がある秘匿情報なので、最近使えるようになった、暗号化されたSSMのパラメータストアから取得するといいと思います。

詳細は、下記参照

【祝!】FargateでもECSにごっつ簡単に環境変数に機密情報を渡せるようになりました! | DevelopersIO

SSM_AGENT_CODESSM_AGENT_IDが、それぞれ上記で、メモした Activation CodeActivation IDです。

amazon-ssm-agent -register -code "${SSM_AGENT_CODE}" -id "${SSM_AGENT_ID}" -region "ap-northeast-1"

エージェントの起動

セッションマネージャーからアクセスする際にエージェントが起動していないといけないのでバックグラウンドで起動しておきます。
この際、awsのドキュメントだと、サービスとして動かしているサンプルばかりなのですが、dockerコンテナなので、サービスいれるのもちょっとなと思って、単純にバックグラウンド起動にしています。 (supervisordとかで起動するのもいいかも)

  # agent 起動
  amazon-ssm-agent &

これで、fargateのコンテナが正常に起動すれば準備OKです!

セッションマネージャーからのアクセス

System Managerのセッションマネージャーからセッションの開始を選択し、今登録されたインスタンスID(amazon-ssm-agent -register のログなどから確認してください)を指定します。

スクリーンショット 2019-06-25 23.19.49.png

セッション開始!

下記のようにシェルのセッションが開始されます。

スクリーンショット 2019-06-25 23.23.14.png

この際ユーザが ssm-user というユーザになっているため、 docker containerが root で実行されているといろいろ実行できません。
(例えば、 bin/rails console など)

sudo可能なユーザなので、 Dockerfileで sudo 入れておいてsudoするのがいいと思います。
・・・が、その際、sudoで実行中のコマンドの環境変数は、Fargateで設定した環境変数が設定されていないため、

sudo -E bin/rails c

と、 sudo に、環境変数を保存する、 -E をつけて実行すると実行できるようになります。

この辺よくわかってないですが、コンテナ上で実行されているユーザはrootで、そこに対して環境変数が設定されているのですが、 セッションマネージャーで、ssm-userとして実行する際は、ssm-userの環境に環境変数が引き継がれているが、 sudoで実行するrootの環境変数には何も設定されていないようです。

掃除

料金体系とかあまり詳しくまだ調べられていないのですが マネージドなEC2に対してセッションマネージャーからアクセスするのと違い、少し違う設定が有効になるようです。

とりあえず、Fargateでこの設定を行う場合は、スポットでアクセスする場合に限り、一通り使った後は登録済みインスタンスや、アクティベーション等は手動で削除しています。

最後に

Fargateで唯一困ってたシェルアクセスに関して、結構安全そうな手段が見つかってよかったです。
ですが、やはり本来は、Fargateの機能としてシェルにアクセスしたい感じですよね。

そんな中、つい最近出ていた、Fargateの責任者の方へのインタビューだそうですが、

AWSのコンテナ責任者が語るFargate、ECS、App Mesh、EKS、そしてKubernetes (1/2):AWS Summit Tokyo 2019で聞いた - @IT

また、FargateコンテナにSSHして、内部の情報を確認できるようにするなども予定している

まさにこの機能ですね!!!
早く実現してほしいものですが、それまではこういう方法も便利かも!という記事でした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

HerokuにDockerFileのイメージを使用してリリースする

はじめに

※学んだことアウトプット用です。
複数コンテナリリースや、DBとの連携までは書いていないです。

メリット

dockerで開発することで環境依存問題を解決できる。
リリースもコンテナをプッシュするだけで簡単にできる。

実際にリリースしてみよう

事前にherokuにログイン

heroku container:login

DockerFileのあるディレクトリで

heroku container:push web

イメージがビルドされて、プッシュされる。

そのあと

Heroku container:release web

これでプッシュされたイメージが起動する

補足

Railsの場合はserver.pidがコンテナに取り込まれるとHeroku上で起動できなくなる

いちいちプッシュする際にサーバーを落とすのは面倒なので、対策を打つ。
対策として、.dockerignoreにserver.pidを登録することで、イメージに含まれなくなる
イメージに含まれなくなると無事にコンテナを起動することができる

.dockerignore
pids/server.pid
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker(26) Open jij導入失敗(3)

$ docker run -p 8888:8888 -it continuumio/anaconda3 /bin/bash
(base) root@3a0e0ad78f9f:/# apt update; apt -y upgrade
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Hit:3 http://deb.debian.org/debian stretch Release                       
Get:4 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Get:6 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [499 kB]
Fetched 684 kB in 0s (729 kB/s)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
(base) root@3a0e0ad78f9f:/# apt install -y vim git wget 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
git is already the newest version (1:2.11.0-3+deb9u4).
wget is already the newest version (1.18-5+deb9u3).
The following additional packages will be installed:
  vim-common vim-runtime xxd
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime xxd
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 6734 kB of archives.
After this operation, 31.1 MB of additional disk space will be used.
Get:1 http://security.debian.org/debian-security stretch/updates/main amd64 xxd amd64 2:8.0.0197-4+deb9u3 [132 kB]
Get:2 http://security.debian.org/debian-security stretch/updates/main amd64 vim-common all 2:8.0.0197-4+deb9u3 [159 kB]
Get:3 http://security.debian.org/debian-security stretch/updates/main amd64 vim-runtime all 2:8.0.0197-4+deb9u3 [5409 kB]
Get:4 http://security.debian.org/debian-security stretch/updates/main amd64 vim amd64 2:8.0.0197-4+deb9u3 [1034 kB]
Fetched 6734 kB in 1s (4891 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package xxd.
(Reading database ... 12554 files and directories currently installed.)
Preparing to unpack .../xxd_2%3a8.0.0197-4+deb9u3_amd64.deb ...
Unpacking xxd (2:8.0.0197-4+deb9u3) ...
Selecting previously unselected package vim-common.
Preparing to unpack .../vim-common_2%3a8.0.0197-4+deb9u3_all.deb ...
Unpacking vim-common (2:8.0.0197-4+deb9u3) ...
Selecting previously unselected package vim-runtime.
Preparing to unpack .../vim-runtime_2%3a8.0.0197-4+deb9u3_all.deb ...
Adding 'diversion of /usr/share/vim/vim80/doc/help.txt to /usr/share/vim/vim80/doc/help.txt.vim-tiny by vim-runtime'
Adding 'diversion of /usr/share/vim/vim80/doc/tags to /usr/share/vim/vim80/doc/tags.vim-tiny by vim-runtime'
Unpacking vim-runtime (2:8.0.0197-4+deb9u3) ...
Selecting previously unselected package vim.
Preparing to unpack .../vim_2%3a8.0.0197-4+deb9u3_amd64.deb ...
Unpacking vim (2:8.0.0197-4+deb9u3) ...
Processing triggers for mime-support (3.60) ...
Setting up xxd (2:8.0.0197-4+deb9u3) ...
Setting up vim-common (2:8.0.0197-4+deb9u3) ...
Setting up vim-runtime (2:8.0.0197-4+deb9u3) ...
Setting up vim (2:8.0.0197-4+deb9u3) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode
(base) root@3a0e0ad78f9f:/# pip update
ERROR: unknown command "update"
(base) root@3a0e0ad78f9f:/# pip upgrade
ERROR: unknown command "upgrade"
(base) root@3a0e0ad78f9f:/# pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 3.6MB/s 
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-19.1.1
(base) root@3a0e0ad78f9f:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
--2019-06-25 13:25:05--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T132506Z&X-Amz-Expires=300&X-Amz-Signature=4d7a58b2e4cc6a27efeb5e5963542f7c823a62f0717636e640204a2f76d91e3a&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following]
--2019-06-25 13:25:06--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T132506Z&X-Amz-Expires=300&X-Amz-Signature=4d7a58b2e4cc6a27efeb5e5963542f7c823a62f0717636e640204a2f76d91e3a&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.186.139
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.186.139|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37200120 (35M) [application/octet-stream]
Saving to: ‘cmake-3.14.5-Linux-x86_64.sh’

cmake-3.14.5-Linux-x86_64.sh             100%[=================================================================================>]  35.48M  3.64MB/s    in 10s     

2019-06-25 13:25:17 (3.52 MB/s) - ‘cmake-3.14.5-Linux-x86_64.sh’ saved [37200120/37200120]

(base) root@3a0e0ad78f9f:/# chmod +x cmake-3.14.5-Linux-x86_64.sh
(base) root@3a0e0ad78f9f:/# ./cmake-3.14.5-Linux-x86_64.sh 
CMake Installer Version: 3.14.5, Copyright (c) Kitware
This is a self-extracting archive.
The archive will be extracted to: /

If you want to stop extracting, please press <ctrl-C>.
CMake - Cross Platform Makefile Generator
Copyright 2000-2019 Kitware, Inc. and Contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

* Neither the name of Kitware, Inc. nor the names of Contributors
  may be used to endorse or promote products derived from this
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

The following individuals and institutions are among the Contributors:

* Aaron C. Meadows <cmake@shadowguarddev.com>
* Adriaan de Groot <groot@kde.org>
* Aleksey Avdeev <solo@altlinux.ru>
* Alexander Neundorf <neundorf@kde.org>
* Alexander Smorkalov <alexander.smorkalov@itseez.com>
* Alexey Sokolov <sokolov@google.com>
* Alex Merry <alex.merry@kde.org>
* Alex Turbov <i.zaufi@gmail.com>
* Andreas Pakulat <apaku@gmx.de>
* Andreas Schneider <asn@cryptomilk.org>
* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
* Benjamin Eikel
* Bjoern Ricks <bjoern.ricks@gmail.com>
* Brad Hards <bradh@kde.org>
* Christopher Harvey
* Christoph Grüninger <foss@grueninger.de>
* Clement Creusot <creusot@cs.york.ac.uk>
* Daniel Blezek <blezek@gmail.com>
* Daniel Pfeifer <daniel@pfeifer-mail.de>
* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* Eran Ifrah <eran.ifrah@gmail.com>
* Esben Mose Hansen, Ange Optimization ApS
* Geoffrey Viola <geoffrey.viola@asirobots.com>
* Google Inc
* Gregor Jasny
* Helio Chissini de Castro <helio@kde.org>
* Ilya Lavrenov <ilya.lavrenov@itseez.com>
* Insight Software Consortium <insightsoftwareconsortium.org>
* Jan Woetzel
* Julien Schueller
* Kelly Thompson <kgt@lanl.gov>
* Laurent Montel <montel@kde.org>
* Konstantin Podsvirov <konstantin@podsvirov.pro>
* Mario Bensi <mbensi@ipsquad.net>
* Martin Gräßlin <mgraesslin@kde.org>
* Mathieu Malaterre <mathieu.malaterre@gmail.com>
* Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net>
* Michael Hirsch, Ph.D. <www.scivision.co>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva
* Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com>
* Nicolas Bock <nicolasbock@gmail.com>
* Nicolas Despres <nicolas.despres@gmail.com>
* Nikita Krupen'ko <krnekit@gmail.com>
* NVIDIA Corporation <www.nvidia.com>
* OpenGamma Ltd. <opengamma.com>
* Patrick Stotko <stotko@cs.uni-bonn.de>
* Per Øyvind Karlsen <peroyvind@mandriva.org>
* Peter Collingbourne <peter@pcc.me.uk>
* Petr Gotthard <gotthard@honeywell.com>
* Philip Lowman <philip@yhbt.com>
* Philippe Proulx <pproulx@efficios.com>
* Raffi Enficiaud, Max Planck Society
* Raumfeld <raumfeld.com>
* Roger Leigh <rleigh@codelibre.net>
* Rolf Eike Beer <eike@sf-mail.de>
* Roman Donchenko <roman.donchenko@itseez.com>
* Roman Kharitonov <roman.kharitonov@itseez.com>
* Ruslan Baratov
* Sebastian Holtermann <sebholt@xwmw.org>
* Stephen Kelly <steveire@gmail.com>
* Sylvain Joubert <joubert.sy@gmail.com>
* Thomas Sondergaard <ts@medical-insight.com>
* Tobias Hunger <tobias.hunger@qt.io>
* Todd Gamblin <tgamblin@llnl.gov>
* Tristan Carel
* University of Dundee
* Vadim Zhukov
* Will Dicharry <wdicharry@stellarscience.com>

See version control history for details of individual contributions.

The above copyright and license notice applies to distributions of
CMake in source and binary form.  Third-party software packages supplied
with CMake under compatible licenses provide their own copyright notices
documented in corresponding subdirectories or source files.

------------------------------------------------------------------------------

CMake was initially developed by Kitware with the following sponsorship:

 * National Library of Medicine at the National Institutes of Health
   as part of the Insight Segmentation and Registration Toolkit (ITK).

 * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
   Visualization Initiative.

 * National Alliance for Medical Image Computing (NAMIC) is funded by the
   National Institutes of Health through the NIH Roadmap for Medical Research,
   Grant U54 EB005149.

 * Kitware, Inc.


Do you accept the license? [yN]: 
y
By default the CMake will be installed in:
  "//cmake-3.14.5-Linux-x86_64"
Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64?
Saying no will install in: "/" [Yn]: 
y

Using target directory: //cmake-3.14.5-Linux-x86_64
Extracting, please wait...

Unpacking finished successfully
(base) root@3a0e0ad78f9f:/# mv cmake-3.14.5-Linux-x86_64 /opt
(base) root@3a0e0ad78f9f:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin
(base) root@3a0e0ad78f9f:/#  cmake --version
cmake version 3.14.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).
(base) root@3a0e0ad78f9f:/# pip install openjij
Collecting openjij
  Downloading https://files.pythonhosted.org/packages/32/fc/f7e98f470e1098a7cd9379145978a0aa44c2d6e4efd7e8d6f096f2398192/openjij-0.0.7.tar.gz (80kB)
     |████████████████████████████████| 81kB 1.6MB/s 
Requirement already satisfied: numpy in /opt/conda/lib/python3.7/site-packages (from openjij) (1.16.2)
Requirement already satisfied: requests in /opt/conda/lib/python3.7/site-packages (from openjij) (2.21.0)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (2019.3.9)
Requirement already satisfied: idna<2.9,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (2.8)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (1.24.1)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (3.0.4)
Building wheels for collected packages: openjij
  Building wheel for openjij (setup.py) ... error
  ERROR: Complete output from command /opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-5p9fk6s8 --python-tag cp37:
  ERROR: running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/openjij
  copying openjij/__init__.py -> build/lib.linux-x86_64-3.7/openjij
  copying openjij/__version.py -> build/lib.linux-x86_64-3.7/openjij
  copying openjij/utils.py -> build/lib.linux-x86_64-3.7/openjij
  creating build/lib.linux-x86_64-3.7/openjij/model
  copying openjij/model/model.py -> build/lib.linux-x86_64-3.7/openjij/model
  copying openjij/model/__init__.py -> build/lib.linux-x86_64-3.7/openjij/model
  copying openjij/model/chimera_model.py -> build/lib.linux-x86_64-3.7/openjij/model
  copying openjij/model/king_graph.py -> build/lib.linux-x86_64-3.7/openjij/model
  creating build/lib.linux-x86_64-3.7/openjij/sampler
  copying openjij/sampler/gpu_sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler
  copying openjij/sampler/__init__.py -> build/lib.linux-x86_64-3.7/openjij/sampler
  copying openjij/sampler/sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler
  copying openjij/sampler/response.py -> build/lib.linux-x86_64-3.7/openjij/sampler
  copying openjij/sampler/cmos_annealer.py -> build/lib.linux-x86_64-3.7/openjij/sampler
  running build_ext
  <__main__.CMakeExtension('cxxjij') at 0x7f112c511d68> cxxjij
  CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
  CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
  CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
  -- Configuring incomplete, errors occurred!
  See also "/tmp/pip-install-1r99cy0b/openjij/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 126, in <module>
      zip_safe=False
    File "/opt/conda/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
      return distutils.core.setup(**attrs)
    File "/opt/conda/lib/python3.7/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/opt/conda/lib/python3.7/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/opt/conda/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 192, in run
      self.run_command('build')
    File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/opt/conda/lib/python3.7/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 42, in run
      self.build_extension(ext)
    File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 69, in build_extension
      subprocess.check_call(['cmake', ext.sourcedir] + cmake_kwargs, cwd=self.build_temp, env=env)
    File "/opt/conda/lib/python3.7/subprocess.py", line 347, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-1r99cy0b/openjij', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-1r99cy0b/openjij/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/opt/conda/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
  ----------------------------------------
  ERROR: Failed building wheel for openjij
  Running setup.py clean for openjij
Failed to build openjij
Installing collected packages: openjij
  Running setup.py install for openjij ... error
    ERROR: Complete output from command /opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-395yudmz/install-record.txt --single-version-externally-managed --compile:
    ERROR: running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/openjij
    copying openjij/__init__.py -> build/lib.linux-x86_64-3.7/openjij
    copying openjij/__version.py -> build/lib.linux-x86_64-3.7/openjij
    copying openjij/utils.py -> build/lib.linux-x86_64-3.7/openjij
    creating build/lib.linux-x86_64-3.7/openjij/model
    copying openjij/model/model.py -> build/lib.linux-x86_64-3.7/openjij/model
    copying openjij/model/__init__.py -> build/lib.linux-x86_64-3.7/openjij/model
    copying openjij/model/chimera_model.py -> build/lib.linux-x86_64-3.7/openjij/model
    copying openjij/model/king_graph.py -> build/lib.linux-x86_64-3.7/openjij/model
    creating build/lib.linux-x86_64-3.7/openjij/sampler
    copying openjij/sampler/gpu_sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler
    copying openjij/sampler/__init__.py -> build/lib.linux-x86_64-3.7/openjij/sampler
    copying openjij/sampler/sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler
    copying openjij/sampler/response.py -> build/lib.linux-x86_64-3.7/openjij/sampler
    copying openjij/sampler/cmos_annealer.py -> build/lib.linux-x86_64-3.7/openjij/sampler
    running build_ext
    <__main__.CMakeExtension('cxxjij') at 0x7f57b7965da0> cxxjij
    CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
    -- Configuring incomplete, errors occurred!
    See also "/tmp/pip-install-1r99cy0b/openjij/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 126, in <module>
        zip_safe=False
      File "/opt/conda/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
        return distutils.core.setup(**attrs)
      File "/opt/conda/lib/python3.7/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/opt/conda/lib/python3.7/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/opt/conda/lib/python3.7/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/opt/conda/lib/python3.7/distutils/command/install.py", line 545, in run
        self.run_command('build')
      File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/opt/conda/lib/python3.7/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 42, in run
        self.build_extension(ext)
      File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 69, in build_extension
        subprocess.check_call(['cmake', ext.sourcedir] + cmake_kwargs, cwd=self.build_temp, env=env)
      File "/opt/conda/lib/python3.7/subprocess.py", line 347, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-1r99cy0b/openjij', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-1r99cy0b/openjij/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/opt/conda/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
    ----------------------------------------
ERROR: Command "/opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-395yudmz/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-1r99cy0b/openjij/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Rails x Docker環境にテストDBを構築する

Docker上でRailsアプリを開発するにあたり、テスト用のDBと開発用DBをそれぞれ構築する必要があったのでそのときの構築手順を記載。

前提

以下のようなDockerファイルでRailsアプリケーションを構築しているとする。

Dockerfile
FROM ruby:2.6
RUN apt-get update -qq && apt-get install -y nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install

COPY . /myapp

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

RailsアプリケーションのDB設定を以下のようになっているとする。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV.fetch('DB_USERNAME', 'root') %>
  password: <%= ENV.fetch('DB_PASSWORD', 'pass') %>

development:
  <<: *default
  host: db
  database: myapp_development

test:
  <<: *default
  host: test-db
  database: myapp_test

production:
  <<: *default
  database: myapp_production

Dockerの設定方法

DBのコンテナ名はdatabase.ymlで設定したhostと一緒にする。

今回の場合、開発用DBのdockerコンテナは'db', テスト用DBのdockerコンテナは'test-db'とする。

MYSQL_USERとMYSQL_PASSWORDはdatabase.ymlで設定したユーザー名とパスワードと一致させる必要がある。

MYSQL_ROOT_PASSWORDはroot用パスワード。設定が必須。

MYSQL_DATABASEはdatabase.ymlで設定したdatabaseと一緒にする。

docker-compose.yml
version: '3'
services:
  web:
    build: .
    env_file: development.env
    ports:
      - '3001:3000'
    volumes:
      - .:/myapp
    depends_on:
      - db
      - test-db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'pass'
      MYSQL_USER: 'webapp'
      MYSQL_PASSWORD: 'test'
      MYSQL_DATABASE: myapp_development
    ports:
      - '3306:3306'

  test-db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'pass'
      MYSQL_USER: 'webapp'
      MYSQL_PASSWORD: 'test'
      MYSQL_DATABASE: myapp_test
    ports:
      - '3307:3306' # ローカルPCから接続するために設定

docker-compose.ymlに直接記述してもいいけど、環境変数は外出ししておく。
今回は、webappというユーザーがtestというパスワードでDBに接続できるような設定にする。↓

development.env
DB_USERNAME=webapp
DB_PASSWORD=test

接続確認

webのコンテナ名がdocker-rails_web_1という名前で立ち上がっている前提。

$ docker exec -it $(docker ps -f name=docker-rails_web_1 -q) /bin/bash

[docker] # rails c -e test
irb(main):001:0> ENV['RAILS_ENV']
=> "test"

[docker] # rails c
irb(main):001:0> ENV['RAILS_ENV']
=> "development"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

コンテナでC言語の開発環境を構築する

この記事について

C言語の開発環境には様々な依存ライブラリをインストールする必要があります。そのため開発者それぞれの環境を統一するのが大変です。これまで環境を統一するためには、

  • 開発者全員が同じマシンの開発環境を使って開発
  • 開発環境構築手順書を作成し、配布する
  • 開発環境のVMイメージを配布する

のような面倒なことをする必要がありました。
でも、今はコンテナという便利な物があります。
筆者もこれまでAWSのEC2上に開発&試験環境を作り、開発者へ提供していました。現在はDockerfileやDockerイメージを提供しています。ここではDockerfileとイメージの作成し、その利用方法を説明します。

前提

Docker for Mac/Windowsなど,Dockerコンテナが動作する環境がインストール済みである事。あと、ほんの少しDockerやLinuxの知識が必要です。
尚、この記事ではmac上での作業内容を記載しています。Windowsで作業する場合はパス等、適宜読み替えてください。

ゴール

この記事では、DockerコンテナのCentOS上で次の事ができるようになります。

  1. viでC言語のソースが書ける
  2. gcc,makeを使って、C言語のプログラムがコンパイルできる
  3. コンパイル済みの実行ファイルが実行できる
  4. コンパイル済みの実行ファイルがgdbでデバッグできる
  5. (おまけ)java,pythonも使える

Dokerfile作成

dokerファイルはコンテナイメージを作るための設計図です。
コンテナを使う以前は、OSやライブラリ等のインストールを手作業で行っていました。その手順をメモする替わりにDockerfileに書いておけば、簡単に再現できます。
これぞまさしく Infrastructure as Code(IaC) の第一歩ですね。

まずイメージを作る場所を決める

まず、イメージを作る場所を決めます。そこにDockerfileを作成/配置します。

> cd ~/docker/

Dockerfile

完成版はこちら(Dockerfile)から
Dockerfileにいろいろ記載してきます。

ベースイメージ

好きなOSを選んでください。
ここでは開発環境としてCentOS 7を選びます。

From centos:7

ワーキングディレクトリ

インストール作業するディレクトリを指定します。

WORKDIR /root

モジュールのインスール

yum で好きなパッケージをインストールしてください。
C言語で開発するなら、yumのgroupinstallが便利です。イメージが大きくなりますが、開発環境なら問題ないでしょう。

RUN yum -y update && \
    yum -y groupinstall "Development Tools"

その他はご自由に!
こちら(Dockerfile)には、普通に使いそうなものを記載しています。

イメージへファイルの取り込み

ホストPCのファイルシステムからイメージ内へファイルを取り込みます。

COPY .bashrc /root/

今回はshell実行時に環境変数が設定された状態にしたいので、.bashrcをイメージに追加しています。
必要なファイルがあったら
 COPY [ホストPCのファイル] [Dockerイメージ内の位置]
で追加してください。

Dockerイメージ作成

Dockerファイルのあるディレクトリ(ここでは ~/docker/)に移動してビルドします。

> cd ~/docker/
> docker build -t c_dev_env .

ちょっと時間がかかります。

> docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
c_dev_env                 latest              aa8cc7f4372f        About an hour ago   1.45GB

これでDockerイメージ「c_dev_env」の完成です。

参考
DockerHubに登録(push)するためには、タグ(-tオプション)に[organization]を付加する必要があります。
docker build -t [organization]/c_dev_env .

Dockerコンテナ実行

この記事で一番重要な内容部分です。gdbコマンドがシステムコールを使用しているため、適切なオプションを付けないと実行できません。

docker run -it --name "my_dev_env" --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" c_dev_env /bin/bash

オプション、パラメタの説明

オプション/パラメタ 説明
-i (--interactive)stdinを使用する
-t ttyを有効にする          
--name 名前をつける。ここでは"my_dev_env"
--cap-add=SYS_PTRACE Linux Capability ptrace()システムコールを許可。 (参考)Man page of Capabilities
--security-opt="seccomp=unconfined" seccompという仕組みでもシステムコールが制限されているため、それを回避。(参考)seccompプロファイルを使ってdockerのシステムコールを制御
パラメタ1 イメージ名。ここでは c_dev_env を指定
パラメタ2 実行コマンド。ここでは/bin/bash を指定

-v [ホストPCのディレクトリ]:[コンテナのディレクトリ] で、マウントしておくと便利です。ホストPCの慣れたエディタで開発できます。

> docker run -it --name "my_dev_env" --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" c_dev /bin/bash
bash-4.2# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
bash-4.2#

これで実行環境が完成しました。

プログラム作成&実行

それでは簡単なプログラムを作って、実行してみましょう。
Dockerイメージ内 /root/sampleの下へ

bash-4.2# cd /root
bash-4.2# mkdir sample
bash-4.2# cd sample
bash-4.2# vi hello.c

プログラム作成 hello.c

hello.c
#include <stdio.h>

int main(void)
{
  int sum = 0;
  sum++;
  printf("Hello, World!\n");
  printf("sum = %d\n", sum );
  return 0;
}

そしてコンパイル
gcc -g -o hello hello.c
-g:デバッグオプションを忘れずに!

bash-4.2# gcc -g -o hello hello.c
bash-4.2# ls -la
total 24
drwxr-xr-x 2 root root 4096 Jun 23 14:24 .
dr-xr-x--- 1 root root 4096 Jun 23 14:23 ..
-rwxr-xr-x 1 root root 9528 Jun 23 14:24 hello
-rw-r--r-- 1 root root  136 Jun 23 14:24 hello.c
bash-4.2# ./hello
Hello, World!
sum = 1

ちゃんと実行できています。

デバッグ

今度は、gdbでデバッグしてみましょう

bash-4.2# gdb hello
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7
〜 省略 〜
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/sample/hello...done.
(gdb) 

エラーもなくプロンプトが出てきました。
続いて、ブレークポイント設定&ステップ実行

(gdb) l <---リスト表示
1   #include <stdio.h>
2
3   int main(void)
4   {
5     int sum = 0;
6     sum++;
7     printf("Hello, World!\n");
8     printf("sum = %d\n", sum );
9     return 0;
10  }
(gdb) b 6  <---6行目にブレークポイント設定
Breakpoint 1 at 0x40056c: file hello.c, line 6.
(gdb) r   <---実行
Starting program: /root/sample/hello

Breakpoint 1, main () at hello.c:6
6     sum++;  <---ブレークポイントで止まった!
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.5.x86_64
(gdb) n   <---ステップ実行
7     printf("Hello, World!\n");
(gdb) p sum <---変数内容表示
$2 = 1

ブレークポイント設定、ステップ実行問題なくできています。

Dockerコンテナから抜ける

最後に、DockerコンテナのLinuxから抜けるには Ctrl+p ,Ctrl+qです。
もう一度つなぐ時は、 docker attach [タグ名]

> docker attach my_dev_env
bash-4.2#

まとめ

Infrastructure as Code(IaC) は大規模システムの環境構築、特にパブリッククラウドやコンテナオーケストレーション環境では必須の技術要素です。しかし、こんな身近な環境でも体感できる事に、少し感動しました。(当たり前なのですが)

  • インストール手順書をDockerfileで書く
  • 環境構築手順書をPlaybookに書く

これもInfrastructure as Code(IaC)の重要な要素であり、これだけでもトイル(
SRE サイトリライアビリティエンジニアリング 5章)
を確実に減らすとことができる気がします。ただし、Dockerfile職人とPlaybook職人による属人化には気をつけて。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dockerにmake

Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6

Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bc

cmake versin 11以上が必要らしい。

# apt install cmake
# cmake --version
cmake version 3.10.2

そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba

# apt remove cmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1
  libuv1 multiarch-support publicsuffix
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  cmake
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 17.3 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 17342 files and directories currently installed.)
Removing cmake (3.10.2-1ubuntu2) ...
root@02b32b9272ce:/# apt install wget
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1
  multiarch-support
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  wget
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 316 kB of archives.
After this operation, 954 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB]
Fetched 316 kB in 2s (158 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package wget.
(Reading database ... 17329 files and directories currently installed.)
Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ...
Unpacking wget (1.19.4-1ubuntu2.2) ...
Setting up wget (1.19.4-1ubuntu2.2) ...
root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
--2019-06-25 11:08:07--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:08--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37200120 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.sh'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.48M  4.21MB/s    in 8.3s    

2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120]

root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
--2019-06-25 11:08:30--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:30--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37191648 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.47M  5.26MB/s    in 7.7s    

2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648]

root@02b32b9272ce:/# ls *.sh
cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ls -al *.sh
-rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh 
CMake Installer Version: 3.14.5, Copyright (c) Kitware
This is a self-extracting archive.
The archive will be extracted to: /

If you want to stop extracting, please press <ctrl-C>.
CMake - Cross Platform Makefile Generator
Copyright 2000-2019 Kitware, Inc. and Contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

* Neither the name of Kitware, Inc. nor the names of Contributors
  may be used to endorse or promote products derived from this
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

The following individuals and institutions are among the Contributors:

* Aaron C. Meadows <cmake@shadowguarddev.com>
* Adriaan de Groot <groot@kde.org>
* Aleksey Avdeev <solo@altlinux.ru>
* Alexander Neundorf <neundorf@kde.org>
* Alexander Smorkalov <alexander.smorkalov@itseez.com>
* Alexey Sokolov <sokolov@google.com>
* Alex Merry <alex.merry@kde.org>
* Alex Turbov <i.zaufi@gmail.com>
* Andreas Pakulat <apaku@gmx.de>
* Andreas Schneider <asn@cryptomilk.org>
* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
* Benjamin Eikel
* Bjoern Ricks <bjoern.ricks@gmail.com>
* Brad Hards <bradh@kde.org>
* Christopher Harvey
* Christoph Grüninger <foss@grueninger.de>
* Clement Creusot <creusot@cs.york.ac.uk>
* Daniel Blezek <blezek@gmail.com>
* Daniel Pfeifer <daniel@pfeifer-mail.de>
* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* Eran Ifrah <eran.ifrah@gmail.com>
* Esben Mose Hansen, Ange Optimization ApS
* Geoffrey Viola <geoffrey.viola@asirobots.com>
* Google Inc
* Gregor Jasny
* Helio Chissini de Castro <helio@kde.org>
* Ilya Lavrenov <ilya.lavrenov@itseez.com>
* Insight Software Consortium <insightsoftwareconsortium.org>
* Jan Woetzel
* Julien Schueller
* Kelly Thompson <kgt@lanl.gov>
* Laurent Montel <montel@kde.org>
* Konstantin Podsvirov <konstantin@podsvirov.pro>
* Mario Bensi <mbensi@ipsquad.net>
* Martin Gräßlin <mgraesslin@kde.org>
* Mathieu Malaterre <mathieu.malaterre@gmail.com>
* Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net>
* Michael Hirsch, Ph.D. <www.scivision.co>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva
* Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com>
* Nicolas Bock <nicolasbock@gmail.com>
* Nicolas Despres <nicolas.despres@gmail.com>
* Nikita Krupen'ko <krnekit@gmail.com>
* NVIDIA Corporation <www.nvidia.com>
* OpenGamma Ltd. <opengamma.com>
* Patrick Stotko <stotko@cs.uni-bonn.de>
* Per Øyvind Karlsen <peroyvind@mandriva.org>
* Peter Collingbourne <peter@pcc.me.uk>
* Petr Gotthard <gotthard@honeywell.com>
* Philip Lowman <philip@yhbt.com>
* Philippe Proulx <pproulx@efficios.com>
* Raffi Enficiaud, Max Planck Society
* Raumfeld <raumfeld.com>
* Roger Leigh <rleigh@codelibre.net>
* Rolf Eike Beer <eike@sf-mail.de>
* Roman Donchenko <roman.donchenko@itseez.com>
* Roman Kharitonov <roman.kharitonov@itseez.com>
* Ruslan Baratov
* Sebastian Holtermann <sebholt@xwmw.org>
* Stephen Kelly <steveire@gmail.com>
* Sylvain Joubert <joubert.sy@gmail.com>
* Thomas Sondergaard <ts@medical-insight.com>
* Tobias Hunger <tobias.hunger@qt.io>
* Todd Gamblin <tgamblin@llnl.gov>
* Tristan Carel
* University of Dundee
* Vadim Zhukov
* Will Dicharry <wdicharry@stellarscience.com>

See version control history for details of individual contributions.

The above copyright and license notice applies to distributions of
CMake in source and binary form.  Third-party software packages supplied
with CMake under compatible licenses provide their own copyright notices
documented in corresponding subdirectories or source files.

------------------------------------------------------------------------------

CMake was initially developed by Kitware with the following sponsorship:

 * National Library of Medicine at the National Institutes of Health
   as part of the Insight Segmentation and Registration Toolkit (ITK).

 * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
   Visualization Initiative.

 * National Alliance for Medical Image Computing (NAMIC) is funded by the
   National Institutes of Health through the NIH Roadmap for Medical Research,
   Grant U54 EB005149.

 * Kitware, Inc.


Do you accept the license? [yN]: 
y
By default the CMake will be installed in:
  "//cmake-3.14.5-Linux-x86_64"
Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64?
Saying no will install in: "/" [Yn]: 
y

Using target directory: //cmake-3.14.5-Linux-x86_64
Extracting, please wait...

Unpacking finished successfully
root@02b32b9272ce:/# ls
bin                           cmake-3.14.5-Linux-x86_64.tar.gz  lib    opt   sbin  usr
boot                          dev                               lib64  proc  srv   var
cmake-3.14.5-Linux-x86_64     etc                               media  root  sys
cmake-3.14.5-Linux-x86_64.sh  home                              mnt    run   tmp
root@02b32b9272ce:/# pwd
/
root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt
root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin
root@02b32b9272ce:/# cmake --version
cmake version 3.14.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dockerにcmake

Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6

Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bc

cmake versin 11以上が必要らしい。

# apt install cmake
# cmake --version
cmake version 3.10.2

そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba

# apt remove cmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1
  libuv1 multiarch-support publicsuffix
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  cmake
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 17.3 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 17342 files and directories currently installed.)
Removing cmake (3.10.2-1ubuntu2) ...
root@02b32b9272ce:/# apt install wget
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1
  multiarch-support
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  wget
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 316 kB of archives.
After this operation, 954 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB]
Fetched 316 kB in 2s (158 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package wget.
(Reading database ... 17329 files and directories currently installed.)
Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ...
Unpacking wget (1.19.4-1ubuntu2.2) ...
Setting up wget (1.19.4-1ubuntu2.2) ...
root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
--2019-06-25 11:08:07--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:08--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37200120 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.sh'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.48M  4.21MB/s    in 8.3s    

2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120]

root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
--2019-06-25 11:08:30--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:30--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37191648 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.47M  5.26MB/s    in 7.7s    

2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648]

root@02b32b9272ce:/# ls *.sh
cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ls -al *.sh
-rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh 
CMake Installer Version: 3.14.5, Copyright (c) Kitware
This is a self-extracting archive.
The archive will be extracted to: /

If you want to stop extracting, please press <ctrl-C>.
CMake - Cross Platform Makefile Generator
Copyright 2000-2019 Kitware, Inc. and Contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

* Neither the name of Kitware, Inc. nor the names of Contributors
  may be used to endorse or promote products derived from this
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

The following individuals and institutions are among the Contributors:

* Aaron C. Meadows <cmake@shadowguarddev.com>
* Adriaan de Groot <groot@kde.org>
* Aleksey Avdeev <solo@altlinux.ru>
* Alexander Neundorf <neundorf@kde.org>
* Alexander Smorkalov <alexander.smorkalov@itseez.com>
* Alexey Sokolov <sokolov@google.com>
* Alex Merry <alex.merry@kde.org>
* Alex Turbov <i.zaufi@gmail.com>
* Andreas Pakulat <apaku@gmx.de>
* Andreas Schneider <asn@cryptomilk.org>
* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
* Benjamin Eikel
* Bjoern Ricks <bjoern.ricks@gmail.com>
* Brad Hards <bradh@kde.org>
* Christopher Harvey
* Christoph Grüninger <foss@grueninger.de>
* Clement Creusot <creusot@cs.york.ac.uk>
* Daniel Blezek <blezek@gmail.com>
* Daniel Pfeifer <daniel@pfeifer-mail.de>
* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* Eran Ifrah <eran.ifrah@gmail.com>
* Esben Mose Hansen, Ange Optimization ApS
* Geoffrey Viola <geoffrey.viola@asirobots.com>
* Google Inc
* Gregor Jasny
* Helio Chissini de Castro <helio@kde.org>
* Ilya Lavrenov <ilya.lavrenov@itseez.com>
* Insight Software Consortium <insightsoftwareconsortium.org>
* Jan Woetzel
* Julien Schueller
* Kelly Thompson <kgt@lanl.gov>
* Laurent Montel <montel@kde.org>
* Konstantin Podsvirov <konstantin@podsvirov.pro>
* Mario Bensi <mbensi@ipsquad.net>
* Martin Gräßlin <mgraesslin@kde.org>
* Mathieu Malaterre <mathieu.malaterre@gmail.com>
* Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net>
* Michael Hirsch, Ph.D. <www.scivision.co>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva
* Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com>
* Nicolas Bock <nicolasbock@gmail.com>
* Nicolas Despres <nicolas.despres@gmail.com>
* Nikita Krupen'ko <krnekit@gmail.com>
* NVIDIA Corporation <www.nvidia.com>
* OpenGamma Ltd. <opengamma.com>
* Patrick Stotko <stotko@cs.uni-bonn.de>
* Per Øyvind Karlsen <peroyvind@mandriva.org>
* Peter Collingbourne <peter@pcc.me.uk>
* Petr Gotthard <gotthard@honeywell.com>
* Philip Lowman <philip@yhbt.com>
* Philippe Proulx <pproulx@efficios.com>
* Raffi Enficiaud, Max Planck Society
* Raumfeld <raumfeld.com>
* Roger Leigh <rleigh@codelibre.net>
* Rolf Eike Beer <eike@sf-mail.de>
* Roman Donchenko <roman.donchenko@itseez.com>
* Roman Kharitonov <roman.kharitonov@itseez.com>
* Ruslan Baratov
* Sebastian Holtermann <sebholt@xwmw.org>
* Stephen Kelly <steveire@gmail.com>
* Sylvain Joubert <joubert.sy@gmail.com>
* Thomas Sondergaard <ts@medical-insight.com>
* Tobias Hunger <tobias.hunger@qt.io>
* Todd Gamblin <tgamblin@llnl.gov>
* Tristan Carel
* University of Dundee
* Vadim Zhukov
* Will Dicharry <wdicharry@stellarscience.com>

See version control history for details of individual contributions.

The above copyright and license notice applies to distributions of
CMake in source and binary form.  Third-party software packages supplied
with CMake under compatible licenses provide their own copyright notices
documented in corresponding subdirectories or source files.

------------------------------------------------------------------------------

CMake was initially developed by Kitware with the following sponsorship:

 * National Library of Medicine at the National Institutes of Health
   as part of the Insight Segmentation and Registration Toolkit (ITK).

 * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
   Visualization Initiative.

 * National Alliance for Medical Image Computing (NAMIC) is funded by the
   National Institutes of Health through the NIH Roadmap for Medical Research,
   Grant U54 EB005149.

 * Kitware, Inc.


Do you accept the license? [yN]: 
y
By default the CMake will be installed in:
  "//cmake-3.14.5-Linux-x86_64"
Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64?
Saying no will install in: "/" [Yn]: 
y

Using target directory: //cmake-3.14.5-Linux-x86_64
Extracting, please wait...

Unpacking finished successfully
root@02b32b9272ce:/# ls
bin                           cmake-3.14.5-Linux-x86_64.tar.gz  lib    opt   sbin  usr
boot                          dev                               lib64  proc  srv   var
cmake-3.14.5-Linux-x86_64     etc                               media  root  sys
cmake-3.14.5-Linux-x86_64.sh  home                              mnt    run   tmp
root@02b32b9272ce:/# pwd
/
root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt
root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin
root@02b32b9272ce:/# cmake --version
cmake version 3.14.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6

Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bc

OpenJij チュートリアル
https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker(25) dockerにcmake

Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6

Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bc

cmake versin 11以上が必要らしい。

# apt install cmake
# cmake --version
cmake version 3.10.2

そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba

# apt remove cmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1
  libuv1 multiarch-support publicsuffix
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  cmake
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 17.3 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 17342 files and directories currently installed.)
Removing cmake (3.10.2-1ubuntu2) ...
root@02b32b9272ce:/# apt install wget
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3
  libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1
  multiarch-support
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  wget
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 316 kB of archives.
After this operation, 954 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB]
Fetched 316 kB in 2s (158 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package wget.
(Reading database ... 17329 files and directories currently installed.)
Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ...
Unpacking wget (1.19.4-1ubuntu2.2) ...
Setting up wget (1.19.4-1ubuntu2.2) ...
root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
--2019-06-25 11:08:07--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:08--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37200120 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.sh'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.48M  4.21MB/s    in 8.3s    

2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120]

root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
--2019-06-25 11:08:30--  https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following]
--2019-06-25 11:08:30--  https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37191648 (35M) [application/octet-stream]
Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz'

cmake-3.14.5-Linux-x86_ 100%[============================>]  35.47M  5.26MB/s    in 7.7s    

2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648]

root@02b32b9272ce:/# ls *.sh
cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ls -al *.sh
-rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh
root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh 
CMake Installer Version: 3.14.5, Copyright (c) Kitware
This is a self-extracting archive.
The archive will be extracted to: /

If you want to stop extracting, please press <ctrl-C>.
CMake - Cross Platform Makefile Generator
Copyright 2000-2019 Kitware, Inc. and Contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

* Neither the name of Kitware, Inc. nor the names of Contributors
  may be used to endorse or promote products derived from this
  software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

The following individuals and institutions are among the Contributors:

* Aaron C. Meadows <cmake@shadowguarddev.com>
* Adriaan de Groot <groot@kde.org>
* Aleksey Avdeev <solo@altlinux.ru>
* Alexander Neundorf <neundorf@kde.org>
* Alexander Smorkalov <alexander.smorkalov@itseez.com>
* Alexey Sokolov <sokolov@google.com>
* Alex Merry <alex.merry@kde.org>
* Alex Turbov <i.zaufi@gmail.com>
* Andreas Pakulat <apaku@gmx.de>
* Andreas Schneider <asn@cryptomilk.org>
* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
* Benjamin Eikel
* Bjoern Ricks <bjoern.ricks@gmail.com>
* Brad Hards <bradh@kde.org>
* Christopher Harvey
* Christoph Grüninger <foss@grueninger.de>
* Clement Creusot <creusot@cs.york.ac.uk>
* Daniel Blezek <blezek@gmail.com>
* Daniel Pfeifer <daniel@pfeifer-mail.de>
* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* Eran Ifrah <eran.ifrah@gmail.com>
* Esben Mose Hansen, Ange Optimization ApS
* Geoffrey Viola <geoffrey.viola@asirobots.com>
* Google Inc
* Gregor Jasny
* Helio Chissini de Castro <helio@kde.org>
* Ilya Lavrenov <ilya.lavrenov@itseez.com>
* Insight Software Consortium <insightsoftwareconsortium.org>
* Jan Woetzel
* Julien Schueller
* Kelly Thompson <kgt@lanl.gov>
* Laurent Montel <montel@kde.org>
* Konstantin Podsvirov <konstantin@podsvirov.pro>
* Mario Bensi <mbensi@ipsquad.net>
* Martin Gräßlin <mgraesslin@kde.org>
* Mathieu Malaterre <mathieu.malaterre@gmail.com>
* Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net>
* Michael Hirsch, Ph.D. <www.scivision.co>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva
* Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com>
* Nicolas Bock <nicolasbock@gmail.com>
* Nicolas Despres <nicolas.despres@gmail.com>
* Nikita Krupen'ko <krnekit@gmail.com>
* NVIDIA Corporation <www.nvidia.com>
* OpenGamma Ltd. <opengamma.com>
* Patrick Stotko <stotko@cs.uni-bonn.de>
* Per Øyvind Karlsen <peroyvind@mandriva.org>
* Peter Collingbourne <peter@pcc.me.uk>
* Petr Gotthard <gotthard@honeywell.com>
* Philip Lowman <philip@yhbt.com>
* Philippe Proulx <pproulx@efficios.com>
* Raffi Enficiaud, Max Planck Society
* Raumfeld <raumfeld.com>
* Roger Leigh <rleigh@codelibre.net>
* Rolf Eike Beer <eike@sf-mail.de>
* Roman Donchenko <roman.donchenko@itseez.com>
* Roman Kharitonov <roman.kharitonov@itseez.com>
* Ruslan Baratov
* Sebastian Holtermann <sebholt@xwmw.org>
* Stephen Kelly <steveire@gmail.com>
* Sylvain Joubert <joubert.sy@gmail.com>
* Thomas Sondergaard <ts@medical-insight.com>
* Tobias Hunger <tobias.hunger@qt.io>
* Todd Gamblin <tgamblin@llnl.gov>
* Tristan Carel
* University of Dundee
* Vadim Zhukov
* Will Dicharry <wdicharry@stellarscience.com>

See version control history for details of individual contributions.

The above copyright and license notice applies to distributions of
CMake in source and binary form.  Third-party software packages supplied
with CMake under compatible licenses provide their own copyright notices
documented in corresponding subdirectories or source files.

------------------------------------------------------------------------------

CMake was initially developed by Kitware with the following sponsorship:

 * National Library of Medicine at the National Institutes of Health
   as part of the Insight Segmentation and Registration Toolkit (ITK).

 * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
   Visualization Initiative.

 * National Alliance for Medical Image Computing (NAMIC) is funded by the
   National Institutes of Health through the NIH Roadmap for Medical Research,
   Grant U54 EB005149.

 * Kitware, Inc.


Do you accept the license? [yN]: 
y
By default the CMake will be installed in:
  "//cmake-3.14.5-Linux-x86_64"
Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64?
Saying no will install in: "/" [Yn]: 
y

Using target directory: //cmake-3.14.5-Linux-x86_64
Extracting, please wait...

Unpacking finished successfully
root@02b32b9272ce:/# ls
bin                           cmake-3.14.5-Linux-x86_64.tar.gz  lib    opt   sbin  usr
boot                          dev                               lib64  proc  srv   var
cmake-3.14.5-Linux-x86_64     etc                               media  root  sys
cmake-3.14.5-Linux-x86_64.sh  home                              mnt    run   tmp
root@02b32b9272ce:/# pwd
/
root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt
root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin
root@02b32b9272ce:/# cmake --version
cmake version 3.14.5

CMake suite maintained and supported by Kitware (kitware.com/cmake).

参考資料(reference)

Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6

Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bc

OpenJij チュートリアル
https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GithubやGitlabのアカウント名はハイフンで終わってはいけない

大半の方は関係がない話になりますが、GithubやGitlabのアカウント名のお話です。タイトルの通りアカウント名がハイフンで終わる、例えば「ko-he-」というアカウントの場合、いろいろと不都合が出るのでやめましょうという内容です。

不都合その1:GithubでGithub Pagesを作る場合(多分Gitlabも)

Githubには静的なサイトを公開できるGithub Pagesという機能があります。この機能を

  • ユーザー名: ko-he-
  • リポジトリ名: testgithubpage

のリポジトリで使用するとhttps://ko-he-.github.io/testgithubpage/というURLで静的なサイトを公開できます。
しかしながらこのページにアクセスするとFirefoxからのアクセスでは

dns.PNG

のように、「潜在的なセキュリティリスクあり」となってしまいます。

不都合その2:GitlabのDockerレジストリを使用する場合

GitlabはリポジトリのDockerレジストリが付いています。特にプライベートリポジトリでの開発の時はDocker Hubで公開するわけにはいかないためとても重宝するのですが、これを「ko-」というアカウントで利用すると、リポジトリからレジストリの画面に移動するときに

dns2.PNG

のようにステータスコード500が返ってきて利用できません。

解決策と原因

解決策は基本的にはユーザ名を変更するしかありません。Github、Gitlabそれぞれ

から変更できます。ただし、ユーザ名を変更する場合、リポジトリ名も変更されてしまうので注意が必要です。
それ以外であれば、適当なグループを作成して、その中でプロジェクトを作成し開発するという手もあります。

原因ははっきりとはわかりませんでしたが、不都合その1:GithubでGithub Pagesを作る場合の時に

dns3.PNG

のように無効な証明書と判断されてしまっていることが怪しそうです。
もう少し調べるとドメイン名のルールでは「ラベルの先頭と末尾の文字をハイフンとするのは不可」となっているため今回のko-he-.github.ioはルール違反ということになります。
ということで、ここら辺が怪しいのですが、GitlabのDockerレジストリの場合とは直接的な関係はなさそうであり、結局原因ははっきりしませんでした。

まとめ

アカウント名が「ko-he-」のように最後がハイフンだと起こる不具合を紹介しました。
ただし、Githubに関しては以前は「ko-he-」といったアカウントを作ることができたのですが、現在ではGithubではユーザ名にバリデーションをかけるようになっていて「ko-he-」のようなアカウントは作成できなくなっています。Gitlabに関してはこの記事執筆時点では作成可能だったので気を付けましょう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

マイグレーションについて

前職で、「マイグレーションについて調べてみて。」と言われたけど、結局何を調べて答えたのか忘れてメモもしてなくて。改めて調べてみました。

本記事、間違ってるよ!! な点がありましたら、コメントにてご指摘ください。

Migration とは何者か

【現時点での理解】
  複数人で開発していて、データベースが勝手に書き換えられるような環境での開発で、
 全員がおんなじ状態のDBを使えるようにする仕組み?

 ソースコードに対するバージョンコントローラの Git 、
 データベースに対するバージョンコントローラの Migration

 みたいなものでしょうか。

PHP/Laravel の場合

Ruby on Rails の場合

Docker の場合

参考記事

teratailでの質問
Laravelドキュメント
Railsの記事

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel初心者】ルーティングとコントローラーの基礎知識

はじめに

こんにちは。てりーと申します!
プログラミング歴が4ヶ月目に入ろうとしているエンジニアです。

今月からLaravelを触り始めたので、備忘録がてら記事の投稿をします。
ルーティングとコントローラについての基礎知識をさらっとまとめました。

何かご指摘やアドバイス、感想を言って頂けると幸いです。

参考文献

「PHPプレームワーク Laravel入門」
 2章 ルーティングとコントローラ

ルーティング

ルーティングに関する情報は「routes」にまとまっています。

■ 一般的なwebサイト
webサーバーの公開フォルダにファイルを用意しておいて、そこにアクセスしたら表示される。

■ Laravel
アドレスに割り付けられたプログラムが実行される。その際の関連付けを行うのがルーティングです。
例:「○○にアクセスすると,××という処理を施される」

web.php

このファイルが一般的なwebサイトにアクセスする際に使うルーティングです。

web.php
<?php
Route::get('/', function () {
   return view('welcome');
});

'/'の部分は第1引数に割り当てられるアドレスを指します。
function () {......}の部分はそれによって呼び起こされる処理が入ります。

function () {
return view('welcome');
});

では、「resouces/view」フォルダにある「welcome.blader.php」をレンダリングして表示しています。

コントローラー

具体的な処理を実装するために用意されているのがコントローラです。
LaravelはMVCと呼ばれるアーキティクチャーで、それぞれが

M:model データ処理を担当
V:view 画面処理担当。表示用のテンプレートなど
C:controller 全体の制御担当。

となっています。

aritsanコマンドでコントローラー作成

php artisan make:controller コントローラー名

「app/Http/controller」フォルダ内に作成される。

アクション追加

HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
  アクション
  }

class HelloController extends Controller
controllerのクラスを継承

{ アクション}
アクションメソットはここに入れる。

web.php
Route::get('hello','HelloController@index')

ルート情報の設定。
Route::get('hello','コントローラー名@アクション名')

まとめ

Qiita初投稿は自分の備忘録として使わせていただきました。
Laravelに慣れていないので、概念的な所を掴むのに苦労しています。

次はビューの部分をかじりつつ、実際にbladeテンプレートを作成してみたいと思います。

最後までご拝読ありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EmbulkとFake-s3とDockerの組み合わせ

概要

Embulkを使用して、ローカル環境にあるファイルを取り込んでいたが、そのファイルをs3から取り込む必要が出てきた。開発環境で実際のs3を使うのが良い手ではないため、fake-s3を使うことにした。
Dockerの中のfake-s3の設定とEmbulkのs3プラグインの設定を本記事に記載しておきます。

Fake-s3

Fake-s3とは?
https://github.com/jubos/fake-s3

Fake S3 is a lightweight server that responds to the same API of Amazon S3.

APIがほぼ一緒。実はAWS CLIでの操作も可能。

さて、Dockerのコンテナを作って、そこでfake-s3を起動させる。

fake-s3の最新バージョンはLicenseが必要。(有料)

お金がもったいないためもっと低いバージョンをインストールする

RUN gem install fakes3 -v 0.2.5

fake-s3のルートディレクトリーが必要なので、それを作成する

RUN mkdir -p /fakes3_root

/fakes3_rootのしたにあるディレクトリーがバケットになるので(下記のように)、事前に作っといても良い。

  • fakes3_root
    • bucket_name_1
    • bucket_name_2
RUN mkdir -p /fakes3_root/test_bucket

最後は下記のラインをDockerfileにたす。ルートとポートを指定してfake-s3を起動させる

# run s3
CMD [ "fakes3", "-r", "/fakes3_root", "-p", "4567" ]

接続できるようにポートを開ける必要がある (docker-compose用)

expose:
   - 4567
ports:
   - 4567:4567 

これでコンテナを起動して、ブラウザーから http://127.0.0.1:4567 をアクセスすると、XMLが表示される

<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>123</ID>
<DisplayName>FakeS3</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>bucket_name_1</Name>
<CreationDate>2019-06-24T08:54:00.000Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket_name_2</Name>
<CreationDate>2019-06-24T08:54:00.000Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>

これでfake-s3が動いている状態。API又はCLIを使って、ファイルをアップロードすることが可能。

注意点

  • コンテナをビルドする前にバケットの下にファイルを置いといても、それが認識されない。fake-s3を起動してからファイルをアップロードするしかないみたい。
  • コンテナの中でAWS CLIをインストールして、gzipファイルをアップロードしようとするとエラーになる。(エラー内容がおかしい (Syntax error)、おそらくfake-s3のバージョンが最新ではないのが原因)自分はコンテナの外からアップロードするようにした。

Embulk

s3からファイルを取り込むプラグインが存在する。それがembulk-input-s3というプラグイン。
https://github.com/embulk/embulk-input-s3

実際のs3とfake-s3、どちらを使っても設定はほとんど一緒だがfake-s3が認証を問わない。AccessとSecret Keyの値はなんでも良い。
そして今回faka-s3が別のコンテナで動いているからproxyを設定する必要がある。

Embulkのyml.liquidファイルの設定が下記になる

in:
  type: s3
  bucket: {{ bucket }}
  path_prefix: {{ path_prefix }} 
  endpoint: {{ endpoint }} 
  auth_method: anonymous
  http_proxy:
    host: fake-s3
    port: 4567

bucket: 自分のバケット名
path_prefix: お好きにどうぞ
endpoint: はfake-s3の場合に http://fake-s3:4567 になる
host: fake-s3 は自分のコンテナの名前
auth_method: basicの場合はAccess/Secret Keyはなんでもいい、anonymousもそのまま動く。ただし、instanceを設定してみた時は unable to load credentials というエラーが出た。インスタンスのメソッドを諦めた。

おまけ

これでとりあえずEmbulkで別コンテナからS3プラグインを使ってファイルを取り込むようになった。
問題は色々あったが、それは多分バージョンが低いのが原因。
無料でローカルでシミュレーションができたからよしとする。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

マイクロサービスでは環境によって変わる変数は環境変数を直接書いた方が良いと思ったという話

About

タイトルだけを見ると何を当たり前の事をと思われると思いますが
Ruby on Railsではdevelopmentやproductionでの変数を切り替える方法がいくつかあります。

プログラム内で分岐する

def switch_var
  case Rails.env
  when 'production' then 'var of production'
  when 'development' then 'var of development'
  else 'default var'
  end
end

こんなコードを書いている人もいると思います。
私も昔書いていましたが、何度か変数の変更が入ると変更すべきコードを探すのが億劫になります。

dotenv-rails

https://github.com/bkeepers/dotenv
.envファイルを読み込む事で各環境での変数を定義します。
ただ、.envはgitへのコミット非推奨な割に
dotenvとrailsが密になってしまいstaging環境やproduction環境を構築する際に窮屈さを感じました。
ただ、ローカル環境においてはdocker-composeと.envを組み合わせるという方法はアリだと思います。

config設定用のgemを利用する

他にも色々ありますが、yamlでconfigを管理する様なgemがあります。
それなりに便利なので一時期使っていましたが、
結局gemに依存するとメンテナンスコストもかかってしまうので
特にマイクロサービスレベルでの環境変数程度で有ればgemは不要だと私は思いました。

環境変数をアプリケーションに渡す

test, development環境

Docker前提で作っているのでdocker-composeで渡します。
CI上でもdocker-compose.ymlを専用に作っておいてそちらを利用しています。

version: '3'
services:
  web:
    environment:
      - RAILS_ENV
      - RACK_ENV
      - AWS_BUCKET_NAME=xxxx
      - AWS_ACCESS_KEY_ID=xxxx
      - AWS_SECRET_ACCESS_KEY=xxxx

何も書かないとhostの環境変数が使われます。

production環境

マイクロサービスをTerraformで定義しています。
ECSのタスク定義で渡します。

ecs.tf
resource "aws_ecs_task_definition" "task" {
  container_definitions = data.template_file.service_container_definition.rendered
}

data "template_file" "service_container_definition" {
  template = file("./templates/container_definitions.json.tpl")
}
container_definitions.json.tpl
[
  {
    "environment": [
      {
        "name": "RAILS_ENV",
        "value": "production"
      },
      {
        "name": "RACK_ENV",
        "value": "production"
      },
      {
        "name": "AWS_BUCKET_NAME",
        "value": "xxxx"
      },
      {
        "name": "AWS_ACCESS_KEY_ID",
        "value": "xxxx"
      },
      {
        "name": "AWS_SECRET_ACCESS_KEY",
        "value": "xxxx"
      }
    ]
  }
]

実際にはアプリケーションケーションの規模によって
最適なツールが有るのかも知れませんが
マイクロサービスにおいてはこういう形で渡した方が見通しも良くなっていると思いました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

今日のdocker error: 動作止まる

macOS

$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
kaizenjapan/qc-nakamori   latest              5186ef78791c        3 days ago          235MB
kaizenjapan/qc-nakamori   <none>              0b0b4bb6b179        3 days ago          194MB
ubuntu                    latest              4c108a37151f        6 days ago          64.2MB
kaizenjapan/100pon        latest              07d217d26151        5 months ago        20.4GB
continuumio/anaconda3     latest              69acfdf1121f        5 months ago        3.72GB
nginx                     latest              7042885a156a        5 months ago        109MB
kaizenjapan/gccv850src    latest              5e61526ac5aa        6 months ago        2.3GB
kaizejpanan/gccv850src    latest              48a9ecda4099        6 months ago        1.15GB
gcc                       latest              48a9ecda4099        6 months ago        1.15GB
centos                    latest              1e1148e4cc2c        6 months ago        202MB

docker rmi xxxでエラーが出る。

macOS
$ docker ps -a

で出たものを

macOS
$ docker rm xxxxx

で消していった。
2つ目までは成功。
3つ目で反応が10分しても20分してもない。

OS再起動して少し作業してたら、

macOS
$ docker ps -a

で結果が出てこない。

その前少しは, docker rmi, docker rmが動いた。

今日のdocker error: Error response from daemon: Bad response from Docker engine
https://qiita.com/kaizen_nagoya/items/c360b30b66b18b16d679

macOS
$ ps -ax
...
  721 ttys001    0:00.03 login -pf administrator
  723 ttys001    0:00.04 -bash
 1376 ttys001    0:00.49 docker rmi 07d217d26151
  829 ttys002    0:00.03 login -pf administrator
  830 ttys002    0:01.18 -bash
 1378 ttys002    0:00.26 docker ps -a
 1299 ttys003    0:00.02 login -pf administrator
 1300 ttys003    0:00.03 -bash
 1522 ttys003    0:00.00 ps -ax

あれ、docker rmiも終わっていないらしい。

macOS
$ kill 1376
$ kill 1378

grepしてみる。

macOS
ps -ax | grep docker
   88 ??         0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd
 1255 ??         0:00.31 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0
 1256 ??         0:00.03 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl
 1257 ??         0:03.51 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.mac.host.internal,docker.for.mac.localhost --gateway-names gateway.docker.internal,docker.for.mac.gateway.internal,docker.for.mac.http.internal --vm-names docker-for-desktop --listen-backlog 32 --mtu 1500 --allowed-bind-addresses 0.0.0.0 --http /Users/administrator/Library/Group Containers/group.com.docker/http_proxy.json --dhcp /Users/administrator/Library/Group Containers/group.com.docker/dhcp.json --port-max-idle-time 300 --max-connections 2000 --gateway-ip 192.168.65.1 --host-ip 192.168.65.2 --lowest-ip 192.168.65.3 --highest-ip 192.168.65.254 --log-destination asl --udpv4-forwards 123:127.0.0.1:54159 --gc-compact-interval 1800
 1258 ??         0:00.55 com.docker.driver.amd64-linux -addr fd:3 -debug
 1264 ??       256:41.44 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
macOS
KM-S05:~ administrator$ kill 1378
KM-S05:~ administrator$ lo;; 1264
-bash: syntax error near unexpected token `;;'
KM-S05:~ administrator$ kill 1264
KM-S05:~ administrator$ kill 1258
KM-S05:~ administrator$ kill 1257
KM-S05:~ administrator$ docker images
^C
KM-S05:~ administrator$ kill 1255
KM-S05:~ administrator$ kill 88
-bash: kill: (88) - Operation not permitted
KM-S05:~ administrator$ kill -9 88
-bash: kill: (88) - Operation not permitted
KM-S05:~ administrator$ sudo kill -9 88
Password:
KM-S05:~ administrator$ ps -ax | grep docker
 1264 ??       262:07.11 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
 1631 ttys003    0:00.00 grep docker

dockerfatalerror.png

macOS
KM-S05:~ administrator$ kill 1264
KM-S05:~ administrator$ ps -ax | grep docker
 1264 ??       263:34.57 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
 1642 ttys003    0:00.00 grep docker
KM-S05:~ administrator$ kill -9 1264
KM-S05:~ administrator$ ps -ax | grep docker
 1644 ttys003    0:00.00 grep docker

なんとか消えた。

macOS
$ docker images
Error response from daemon: Bad response from Docker engine

今度はこっち。何分で消えるかを測定するかどうか。と思ったら1分でエラーは出なくなった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker(22) 今日のdocker error: 動作止まる

macOS

$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
kaizenjapan/qc-nakamori   latest              5186ef78791c        3 days ago          235MB
kaizenjapan/qc-nakamori   <none>              0b0b4bb6b179        3 days ago          194MB
ubuntu                    latest              4c108a37151f        6 days ago          64.2MB
kaizenjapan/100pon        latest              07d217d26151        5 months ago        20.4GB
continuumio/anaconda3     latest              69acfdf1121f        5 months ago        3.72GB
nginx                     latest              7042885a156a        5 months ago        109MB
kaizenjapan/gccv850src    latest              5e61526ac5aa        6 months ago        2.3GB
kaizejpanan/gccv850src    latest              48a9ecda4099        6 months ago        1.15GB
gcc                       latest              48a9ecda4099        6 months ago        1.15GB
centos                    latest              1e1148e4cc2c        6 months ago        202MB

docker rmi xxxでエラーが出る。

macOS
$ docker ps -a

で出たものを

macOS
$ docker rm xxxxx

で消していった。
2つ目までは成功。
3つ目で反応が10分しても20分してもない。

OS再起動して少し作業してたら、

macOS
$ docker ps -a

で結果が出てこない。

その前少しは, docker rmi, docker rmが動いた。

今日のdocker error: Error response from daemon: Bad response from Docker engine
https://qiita.com/kaizen_nagoya/items/c360b30b66b18b16d679

macOS
$ ps -ax
...
  721 ttys001    0:00.03 login -pf administrator
  723 ttys001    0:00.04 -bash
 1376 ttys001    0:00.49 docker rmi 07d217d26151
  829 ttys002    0:00.03 login -pf administrator
  830 ttys002    0:01.18 -bash
 1378 ttys002    0:00.26 docker ps -a
 1299 ttys003    0:00.02 login -pf administrator
 1300 ttys003    0:00.03 -bash
 1522 ttys003    0:00.00 ps -ax

あれ、docker rmiも終わっていないらしい。

macOS
$ kill 1376
$ kill 1378

grepしてみる。

macOS
ps -ax | grep docker
   88 ??         0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd
 1255 ??         0:00.31 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0
 1256 ??         0:00.03 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl
 1257 ??         0:03.51 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.mac.host.internal,docker.for.mac.localhost --gateway-names gateway.docker.internal,docker.for.mac.gateway.internal,docker.for.mac.http.internal --vm-names docker-for-desktop --listen-backlog 32 --mtu 1500 --allowed-bind-addresses 0.0.0.0 --http /Users/administrator/Library/Group Containers/group.com.docker/http_proxy.json --dhcp /Users/administrator/Library/Group Containers/group.com.docker/dhcp.json --port-max-idle-time 300 --max-connections 2000 --gateway-ip 192.168.65.1 --host-ip 192.168.65.2 --lowest-ip 192.168.65.3 --highest-ip 192.168.65.254 --log-destination asl --udpv4-forwards 123:127.0.0.1:54159 --gc-compact-interval 1800
 1258 ??         0:00.55 com.docker.driver.amd64-linux -addr fd:3 -debug
 1264 ??       256:41.44 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
macOS
KM-S05:~ administrator$ kill 1378
KM-S05:~ administrator$ lo;; 1264
-bash: syntax error near unexpected token `;;'
KM-S05:~ administrator$ kill 1264
KM-S05:~ administrator$ kill 1258
KM-S05:~ administrator$ kill 1257
KM-S05:~ administrator$ docker images
^C
KM-S05:~ administrator$ kill 1255
KM-S05:~ administrator$ kill 88
-bash: kill: (88) - Operation not permitted
KM-S05:~ administrator$ kill -9 88
-bash: kill: (88) - Operation not permitted
KM-S05:~ administrator$ sudo kill -9 88
Password:
KM-S05:~ administrator$ ps -ax | grep docker
 1264 ??       262:07.11 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
 1631 ttys003    0:00.00 grep docker

dockerfatalerror.png

macOS
KM-S05:~ administrator$ kill 1264
KM-S05:~ administrator$ ps -ax | grep docker
 1264 ??       263:34.57 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
 1642 ttys003    0:00.00 grep docker
KM-S05:~ administrator$ kill -9 1264
KM-S05:~ administrator$ ps -ax | grep docker
 1644 ttys003    0:00.00 grep docker

なんとか消えた。

macOS
$ docker images
Error response from daemon: Bad response from Docker engine

今度はこっち。何分で消えるかを測定するかどうか。と思ったら1分でエラーは出なくなった。

文書履歴(document history)

ver. 0.01 初稿 20190625 午後
ver. 0.02 HAZOP追記 20190625 夕
このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker-composeを使用しないコンテナ作成~起動(Rocket.Chat編)

Dockerと言えばあたり前のようにdocker-composeが使用されていますが
もっと基礎から学びたい!そんな内容です。

環境

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ docker --version
Docker version 1.13.1, build b2f74b2/1.13.1

なおsudoは面倒なので書いていません。
上手に読み替えてください。

目次



Dockerインストール

epelとかiusとかリポジトリ拡張は不要。
まずはホストサーバがオンラインであることを確認します。

$ ping google.com -c 3
PING google.com (216.58.197.174) 56(84) bytes of data.
64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=1 ttl=49 time=59.7 ms
64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=2 ttl=49 time=50.1 ms
64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=3 ttl=49 time=47.6 ms

pingが届かない = オフラインであれば、/etc/resolv.confを編集するとか
/sbin/ip route add default via xxxxでゲートウェイ設定するとよいです。

さっそくDockerをインストールします。
本項ではdocker-composeについては触れませんが
今後のために最初から入れておいたほうが良いと思います。

$ yum install docker docker-compose
$ systemctl start docker
$ systemctl enable docker

続いてSELinuxfirewalldを容赦なく止めます。
使いこなせるとカッコいいですね。

$ getenforce
Enforcing
$ setenfoce 0
$ getenforce
Permissive
$ vim /etc/selinux/config
----------------------------------------------------------------------
  # This file controls the state of SELinux on the system.
  # SELINUX= can take one of these three values:
  #     enforcing - SELinux security policy is enforced.
  #     permissive - SELinux prints warnings instead of enforcing.
  #     disabled - No SELinux policy is loaded.
- SELINUX=enforcing
+ SELINUX=disabled
  # SELINUXTYPE= can take one of three values:
----------------------------------------------------------------------

$ systemctl stop firewalld
$ systemctl disable firewalld

ここまでたどり着いたら準備完了です。
最後に状況を確認しておきます。

$ docker --version
Docker version 1.13.1, build b2f74b2/1.13.1

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE


Rocket.Chatを起動する

試しにslackライクなChatツール、Rocket.Chatを起動します。


Rocket.Chatの構成を知る

ぐぐる。
Docker ComposeでRocket.Chatを立ち上げる

Rocket.Chatは以下の2つのimageから成り立つことがわかります。

  • Rocket.Chat 本体
  • mongoDB


mongoDBのDB領域を作る(Volume)

mongoDB用の領域をホストサーバに作成します。
これをしないとChatのログがコンテナの中だけに保存されてしまい、
コンテナの破棄に伴ってログも消えてしまいます。

普段は専用のLVを作成しますが、そこはややこしくなるので割愛。
今回は単純に/var配下にディレクトリを作成するだけにします。

$ mkdir -p /var/data/rocketchat_db


mongoDBのコンテナを作る

mongoDBのイメージをdocker hubから探します。

$ docker search mongo
INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mongo                               MongoDB document databases provide high av...   5967      [OK]
docker.io   docker.io/mongo-express                       Web-based MongoDB admin interface, written...   468       [OK]
docker.io   docker.io/tutum/mongodb                       MongoDB Docker image ? listens in port 270...   226                  [OK]
:

今回は公式イメージのdocker.io/mongoを使います。
mongo:tag

本記事執筆時点でmongo:3.4.21が最新でした。
docekr pullでイメージを取得します。

$ docker pull mongo:3.4.21
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mongo     3.4.21              0a8d98121dec        5 days ago          426 MB

コンテナを作成するにあたり、mongoDBが要求するオプションを
mongo:descriptionから学びます。

Connect to MongoDB from another Docker container

mongoDBはデフォルトで「27017」ポートを使用するらしいです。
今回は他にmongoDBを使用しているコンテナが無いのでこのままにしておきます。

Customize configuration without configuration file

オプション--smallfilesを付与するとmongoDBを小さいサイズで運用できます。
「"小さいサイズ"ってなんだ?」は以下を参照してください。

Setting WiredTiger cache size limits

MongoDBが使用するキャッシュサイズを指定できます。
なんとdocker側の機能でメモリを指定(--memory string)しても効かないらしいです。
実運用する場合は指定が必須なのかもしれませんね。

今回は--wiredTigerCacheSizeGB 1.5で1.5GBにおさめます。
メモリ+キャッシュが合計2GBぐらいになる目安です。

Using a custom MongoDB configuration file

mongoDBのconfigファイルをホストサーバに用意しておくことも可能です。
今回は必要なオプションは全てコンテナ作成時に引数で渡すので不要です。

Environment Variables

スーパーユーザ、パスワードを指定できます。
これはインスタンス構築時のみ有効で後からは変更できません。

試しに以下のとおり設定してみます。

-e MONGO_INITDB_ROOT_USERNAME=rcadmin \
-e MONGO_INITDB_ROOT_PASSWORD=p@55w0rd

またMONGO_INITDB_DATABASEを指定するとデータベース名を指定できるらしいですが
恐らくRocket.ChatアプリがDBを作成するのでココは指定する必要はないです。

注意したいのがコンテナ作成時の構文です。

$ docker container create [オプション] image名 [COMMAND]

dockerコマンドのオプションはimageの前に指定します。
imageの後ろに指定するとCOMMAND扱いとなってしまいます。


ざっと見た感じこんなところでした。
より詳しくはmongoDBのホームページを見るべきでしょう。

上記を踏まえ、以下のようにコンテナを作成します。

$ docker container create \
 --name rocketchat_db \
 --volume=/var/data/rocketchat_db:/data/db \
 -e MONGO_INITDB_ROOT_USERNAME=rcadmin \
 -e MONGO_INITDB_ROOT_PASSWORD=p@55w0rd \
 mongo:3.4.21 \
 --smallfiles \
 --wiredTigerCacheSizeGB 1.5

$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   9 seconds ago       Created                                 rocketchat_db

無事にコンテナ作成完了しました。


Rocket.Chatのコンテナを作る

rocket.chatのイメージをdocker hubから探します。

$ docker search rocket.chat
INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/rocket.chat                         The Complete Open Source Chat Solution          433       [OK]
docker.io   docker.io/rocketchat/rocket.chat              Official Rocket.Chat docker deployment ima...   170                  [OK]
docker.io   docker.io/rocketchat/rocket.chat.enterprise   Rocket.Chat Enterprise                          2
docker.io   docker.io/monolitme/rocket.chat               FIGapp customization to RocketChat              1                    [OK]
:

Qiitaに投稿されている記事を見ると3分の1ぐらいの方が
docker.io/rocketchat/rocket.chatを使用していました。

Rocket.Chatの公開場所は以下の2つが存在するようです。

  • rocket.chat
  • rocketchat/rocket.chat

公式(OFFICIAL)のdocker.io/rocket.chatの方が
マニュアルが充実しているのでこちらを採用します。

rocket.chat:tag

本記事執筆時点でrocket.chat:1.1.2が最新でした。
docekr pullでイメージを取得します。

$ docker pull rocket.chat:1.1.2
$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/rocket.chat   1.1.2               a4180953b9e4        5 hours ago         696 MB
docker.io/mongo         3.4.21              0a8d98121dec        6 days ago          426 MB

コンテナを作成するにあたり、rocket.chatが要求するオプションを
rocket.chat:descriptionから学びます。

First, start an instance of mongo:

これはもうやったのでスキップ

Then start Rocket.Chat linked to this mongo instance:

起動時に先に作ったmongoDBとlinkするだけのようです。

This will start a Rocket.Chat instance listening on the default Meteor port of 3000 on the container.

デフォルトでは3000ポートらしいです。
特に希望は無いので3000ポートのまま運用します。
念の為、-p 3000:3000で明示的にホストの3000ポートと結びつけることにしました。

Then, access it via http://localhost in a browser. Replace localhost in ROOT_URL with your own domain name if you are hosting at your own domain.
If you're using a third party Mongo provider, or working with Kubernetes, you need to override the MONGO_URL environment variable:

k8sもしくはサードパーティ製のmongoDBを使用する場合は
mongoDBのURLを指定しないといけないらしいです。
今回は同じdockerホスト上でlink接続するので不要です。


思ったよりもオプションが少ないですね。
が、Rocket.Chat自体を調べていると以下の記事を発見しました。

Docker Composeを使ったRocketChatのインストールと基本的な使い方 (1/3)

この記事のdocker-composeで使用するYAMLファイルを参照すると
以下のように環境変数を与えています。

rocketchat:
  # コンテナイメージを指定(image:コンテナイメージ名:タグ名)
  image: rocketchat/rocket.chat:latest
  # 環境変数を設定
  environment:
    # MongoDB(db)のURLを指定
    - MONGO_URL=mongodb://db:27017/rocketchat
    # RocketChatのURL(ここではホスト名をlocalhostとしています)
    - ROOT_URL=http://localhost
    # アカウントのメールアドレスのドメインチェックを無効化
    - Accounts_UseDNSDomainCheck=false
  # MongoDB(db)へのリンクを指定
  links:
    - db:db
  # RocketChatのポートを設定
  ports:
    - 3000:3000

このROOT_URLというのが問題のようです。
今回はホストサーバと同じIPアドレスを指定しておきます。


上記を踏まえ、以下のようにコンテナを作成します。

$ docker container create \
  --name rocketchat \
  -p 3000:3000 \
  --link rocketchat_db \
  -e ROOT_URL=http://192.168.10.100 \
  rocket.chat:1.1.2
$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
e408b03cc6e9        rocket.chat:1.1.2   "node main.js"           11 seconds ago       Created                                 rocketchat
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   About a minute ago   Created                                 rocketchat_db

無事にコンテナ作成完了しました。


Rocket.Chatを起動する

作成済みのコンテナを確認します。

$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
e408b03cc6e9        rocket.chat:1.1.2   "node main.js"           6 minutes ago       Created                                 rocketchat
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   7 minutes ago       Created                                 rocketchat_db

Rocket.Chatのマニュアルに従い、mongo -> rocket.chatの順に起動します。
まずはmongoDB

$ docker container start rocketchat_db
$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
e408b03cc6e9        rocket.chat:1.1.2   "node main.js"           7 minutes ago       Created                                 rocketchat
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   9 minutes ago       Up 23 seconds       27017/tcp           rocketchat_db

STATUSUpに変わりました。
続いてRocket.chatを起動します。

$ docker container start rocketchat
Error response from daemon: driver failed programming external connectivity on endpoint rocketchat (51314050dba540e3430e0685ec5b643b9e43c2a495e469b2154ee7760b6c7692):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.3:3000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1))
Error: failed to start containers: rocketchat

エラーが出てしまいました。内容を確認します。
どうやらiptablesによるフォワーディングを仕掛けようとしたところ失敗した様子。

ぐぐるとdockerデーモンの再起動で復活したという情報がありました。
Dockerコンテナがiptablesのエラーで立ち上がらなくなった

$ docker container stop rocketchat_db
$ systemctl restart docker
$ docker ps -a
$ docker container start rocketchat_db
$ docker container start rocketchat

起動確認をしてみます。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
e408b03cc6e9        rocket.chat:1.1.2   "node main.js"           19 minutes ago      Exited (1) 3 minutes ago                       rocketchat
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   20 minutes ago      Up 3 minutes               27017/tcp           rocketchat_db

起動時にエラーはでなかったですがExited(1)になっています。
別の問題で起動できていないようです。

docker logsコマンドで標準出力を確認してみます。

$ docker logs rocketchat
/app/bundle/programs/server/node_modules/fibers/future.js:313
                                                throw(ex);
                                                ^
MongoNetworkError: failed to connect to server [db:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND db db:27017]
    at Pool.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/topologies/server.js:564:11)
    at emitOne (events.js:116:13)
    at Pool.emit (events.js:211:7)
    at Connection.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:317:12)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at Connection.emit (events.js:214:7)
    at Socket.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/connection.js:246:50)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

getaddressinfo ENOTFOUND dbと出ています。
どうやらmongoDBとの接続周りで失敗しているようです。

Rocket.Chatコンテナ作成時の--linkオプションを編集します。
rocketchat_dbコンテナがdbであると認識付けるため
--link rocketchat_db:dbとします。

$ docker container rm rocketchat
$ docker container create \
  --name rocketchat \
  -p 3000:3000 \
  --link rocketchat_db:db \
  -e ROOT_URL=http://192.168.10.100 \
  rocket.chat:1.1.2

$ docker container start rocketchat
$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS               NAMES
5a7f04dc0611        rocket.chat:1.1.2   "node main.js"           About a minute ago   Exited (1) 2 seconds ago                        rocketchat
052a9dd76d9a        mongo:3.4.21        "docker-entrypoint..."   2 minutes ago        Up 17 seconds               27017/tcp           rocketchat_db

まだ駄目でした。ログを確認してみます。

$ docker logs rocketchat
/app/bundle/programs/server/node_modules/fibers/future.js:313
                                                throw(ex);
                                                ^
MongoError: not authorized on meteor to execute command { listIndexes: "users", cursor: {} }
    at queryCallback (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/cursor.js:248:25)
    at /app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:532:18
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)

先程とログが違います。少し進んだようです。

次のログはmongoDB上のエラーです。
not authorizedなのでmongoDB上でのコマンド実行に失敗したようです。

関連しそうなのはmongoDB構築時に指定したROOT_USERNAMEROOT_PASSWORDです。
一度これらを指定しないで起動してみます。

$ docker container stop rocketchat_db
$ docker container rm rocketchat_db
$ docker container rm rocketchat
$ docker container create \
  --name rocketchat_db \
  --volume=/var/data/rocketchat_db:/data/db \
  mongo:3.4.21 \
  --smallfiles \
  --wiredTigerCacheSizeGB 1.5

$ docker container create \
  --name rocketchat \
  -p 3000:3000 \
  --link rocketchat_db:db \
  -e ROOT_URL=http://192.168.10.100 \
  rocket.chat:1.1.2

$ docker container start rocketchat_db
$ docker container start rocketchat
$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
ada86161fc8b        rocket.chat:1.1.2   "node main.js"           37 seconds ago      Up 7 seconds                0.0.0.0:3000->3000/tcp   rocketchat
91bee011502c        mongo:3.4.21        "docker-entrypoint..."   3 minutes ago       Up 2 minutes                27017/tcp                db
555eb5e21cd6        mongo:3.4.21        "docker-entrypoint..."   52 minutes ago      Exited (0) 11 minutes ago                            rocketchat_db

無事に起動しました。
ブラウザから「 http://192.168.10.100:3000 」にアクセスしてみます。


…が、応答が返りません。
まだ問題が有るようです。

Rocket.Chat側のログを確認します。

$ docker logs rocketchat
? server.js:207 System ? error
? +---------------------------------------------------------------------------+
? |                                SERVER ERROR                               |
? +---------------------------------------------------------------------------+
? |                                                                           |
? |  Rocket.Chat Version: 1.1.2                                               |
? |       NodeJS Version: 8.11.4 - x64                                        |
? |      MongoDB Version: 3.4.21                                              |
? |       MongoDB Engine: wiredTiger                                          |
? |             Platform: linux                                               |
? |         Process Port: 3000                                                |
? |             Site URL: http://192.168.10.100                               |
? |     ReplicaSet OpLog: Disabled                                            |
? |          Commit Hash: aece97e1a0                                          |
? |        Commit Branch: HEAD                                                |
? |                                                                           |
? |  OPLOG / REPLICASET IS REQUIRED TO RUN ROCKET.CHAT, MORE INFORMATION AT:  |
? |  https://go.rocket.chat/i/oplog-required                                  |
? |                                                                           |
? +---------------------------------------------------------------------------+

カッコいいログが出ていました。

OPLOG / REPLICASET IS REQUIRED TO RUN ROCKET.CHAT, MORE INFORMATION AT:

これが怪しそうです。
エラーダイアログに記載されたURLを確認します。
https://rocket.chat/docs/installation/manual-installation/mongo-replicas/

Rocket.Chat uses the MongoDB replica set to improve performance via Meteor Oplog tailing.

replica setが必須なようです。
--replSet rs1を指定することでmongoDBをreplica setされた状態で起動します。

Start the MongoDB shell and initiate the replica set:

mongoDBにログインし、replica setを初期化する必要があるようです。
このあたりはmongoDBのマニュアルを見ると書いてあります。

The output of the command should look like this:
Note the “ok” value should be 1. Any other value, i.e. 93, means something is wrong.

okの値が1になれば大丈夫だそうです。

Reconfigure and restart Rocket.Chat service
After you configured replica set, you MUST add the MONGO_OPLOG_URL environment variable to the service definition and restart Rocket.Chat server.

replica setを準備したあとはRocket.Chat側に
環境変数MONGO_OPLOG_URLを設定する必要があるとのことです。
MONGO_OPELOG_URLの設定は以下のとおりのようです。

MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01

localhostはmongoDBのことのようなのでrocketchat_dbとします。
もちろんdbでも良いです。

まずはRocket.ChatとmongoDBを一度削除します。

$ docker container stop rocketchat
$ docker container stop rocketchat_db
$ docker container rm rocketchat
$ docker container rm rocketchat_db
$ rm -rf /var/data/rocketchat_db/*

続いてDBをrpelica setを有効にして起動します。

$ docker container create \
  --name rocketchat_db \
  --volume=/var/data/rocketchat_db:/data/db \
  mongo:3.4.21 \
  --smallfiles \
  --wiredTigerCacheSizeGB 1.5 \
  --replSet rs1
$ docker container start rocketchat_db

ここでDBに接続しreplica setの初期化を行います。
しかし、ホストサーバにmongoが無いためクライアント接続ができません。

しょうがないのでコンテナにdocker execで接続し、
コンテナ内からmongoDBに接続します。

$ docker exec -it rocketchat_db /bin/bash
root@161ebb19a7bd:/# mongo 
> rs.status()
{
        "info" : "run rs.initiate(...) if not yet done for the set",
        "ok" : 0,
        "errmsg" : "no replset config has been received",
        "code" : 94,
        "codeName" : "NotYetInitialized"
}

codeName:NotYetInitializedは初期化されていないことを示しています。
ここでreplica setを初期化します。

> rs.initiate()
{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "161ebb19a7bd:27017",
        "ok" : 1
}

先に調べたとおりok:1でしたので大丈夫そうです。

rs1:SECONDARY> rs.status()
{
        "set" : "rs1",
        "date" : ISODate("2019-06-19T07:06:28.872Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1560927987, 1),
                        "t" : NumberLong(1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1560927987, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1560927987, 1),
                        "t" : NumberLong(1)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "161ebb19a7bd:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 1740,
                        "optime" : {
                                "ts" : Timestamp(1560927987, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2019-06-19T07:06:27Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "could not find member to sync from",
                        "electionTime" : Timestamp(1560927985, 2),
                        "electionDate" : ISODate("2019-06-19T07:06:25Z"),
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                }
        ],
        "ok" : 1
}
> exit
root@161ebb19a7bd:/# exit

続いてRocket.Chatを起動します。

$ docker container create \
  --name rocketchat \
  -p 3000:3000
  --link rocketchat_db:db \
  -e ROOT_URL=http://192.168.10.100 \
  -e MONGO_OPLOG_URL=mongodb://rocketchat_db:27017/local?replSet=rs1 \
  rocket.chat:1.1.2
$ docker container start rocketchat
$ docker container list --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
aead98b431c5        rocket.chat:1.1.2   "node main.js"           About an hour ago   Up About an hour    0.0.0.0:3000->3000/tcp   rocketchat
9a507773cfe9        mongo:3.4.21        "docker-entrypoint..."   About an hour ago   Up About an hour    27017/tcp                rocketchat_db

無事にブラウザからアクセスできました。
念の為、Rocket.Chatのログも確認します。

$ docker logs rocketchat
? +----------------------------------------------+
? |                SERVER RUNNING                |
? +----------------------------------------------+
? |                                              |
? |  Rocket.Chat Version: 1.1.2                  |
? |       NodeJS Version: 8.11.4 - x64           |
? |      MongoDB Version: 3.4.21                 |
? |       MongoDB Engine: wiredTiger             |
? |             Platform: linux                  |
? |         Process Port: 3000                   |
? |             Site URL: http://192.168.10.100  |
? |     ReplicaSet OpLog: Enabled                |
? |          Commit Hash: aece97e1a0             |
? |        Commit Branch: HEAD                   |
? |                                              |
? +----------------------------------------------+

無事に起動できました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

今日のdocker error: Error response from daemon: Bad response from Docker engine

macOS
$docker rmi xxxxx

なかなか終わらない。

macOS
$ docker rm yyyyy

別のまどでついつい。

Mac OSのほかのアプリもぴったりとまった。
電源ボタンを長押ししてosを再起動。

macOS
$ docker images
Error response from daemon: Bad response from Docker engine
$ docker ps -a
Error response from daemon: Bad response from Docker engine

docker が起動していないのかと画面の一番上のくじらわんをクリックしてみた。

スクリーンショット 2019-06-25 11.38.40.png

念のためにrestart。

でも同じ。

$ ps -ax
  PID TTY           TIME CMD
    1 ??         0:03.98 /sbin/launchd
   41 ??         0:00.70 /usr/libexec/UserEventAgent (System)
   42 ??         0:00.24 /usr/sbin/syslogd
   44 ??         0:00.17 /Applications/ESET Endpoint Antivirus.app/Contents/MacOS/esets_ctl
   45 ??         0:00.06 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
   46 ??         0:01.49 /usr/libexec/kextd
   47 ??         0:01.75 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
   49 ??         0:00.09 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
   52 ??         0:00.15 /System/Library/CoreServices/appleeventsd --server
   53 ??         0:00.74 /usr/libexec/configd
   54 ??         0:00.15 /System/Library/CoreServices/powerd.bundle/powerd
   55 ??         0:00.21 /usr/libexec/mobileassetd
   60 ??         0:00.43 /usr/libexec/logd
   64 ??         0:00.49 /usr/libexec/airportd
   66 ??         0:00.25 /usr/libexec/warmd
   67 ??         0:02.93 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
   72 ??         0:00.03 /System/Library/CoreServices/iconservicesd
   73 ??         0:00.06 /System/Library/CoreServices/iconservicesagent
   75 ??         0:00.15 /usr/libexec/diskarbitrationd
   78 ??         0:00.48 /usr/libexec/coreduetd
   79 ??         0:00.05 /usr/libexec/wdhelper
   84 ??         0:03.06 /usr/libexec/opendirectoryd
   85 ??         0:00.09 /usr/sbin/wirelessproxd
   87 ??         0:00.46 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd
   88 ??         0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd
   89 ??         0:00.02 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbstated
   90 ??         0:02.01 /System/Library/CoreServices/launchservicesd
   91 ??         0:00.04 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
   92 ??         0:00.36 /usr/sbin/securityd -i
   96 ??         0:00.18 /usr/libexec/DuetHeuristic-BM
   97 ??         0:01.01 /usr/libexec/displaypolicyd -k 1
   98 ??         0:00.37 /usr/sbin/blued
   99 ??         0:00.03 autofsd
  101 ??         0:00.10 /System/Library/PrivateFrameworks/Heimdal.framework/Helpers/kdc
  103 ??         0:02.61 /Applications/ESET Remote Administrator Agent.app/Contents/MacOS/ERAAgent
  104 ??         0:00.11 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond
  105 ??         0:02.08 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console
  106 ??         0:00.04 /System/Library/CoreServices/logind
  107 ??         0:00.01 /usr/sbin/KernelEventAgent
  110 ??         0:02.70 /usr/libexec/hidd
  111 ??         0:00.34 /usr/libexec/corebrightnessd --launchd
  112 ??         0:00.17 /usr/libexec/AirPlayXPCHelper
  113 ??         0:01.60 /usr/libexec/amfid
  114 ??         0:00.94 /usr/sbin/notifyd
  115 ??         0:00.74 /usr/sbin/distnoted daemon
  116 ??         0:00.44 /System/Library/CoreServices/coreservicesd
  117 ??         0:00.19 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd
  119 ??         0:00.04 aslmanager
  120 ??         0:00.76 /usr/sbin/cfprefsd daemon
  138 ??         0:05.62 /usr/libexec/sandboxd
  162 ??         0:16.26 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon
  165 ??         0:00.24 /usr/sbin/coreaudiod
  166 ??         0:00.05 /System/Library/PrivateFrameworks/CoreSymbolication.framework/coresymbolicationd
  169 ??         0:00.03 /System/Library/Frameworks/PCSC.framework/Versions/A/XPCServices/com.apple.ctkpcscd.xpc/Contents/MacOS/com.apple.ctkpcscd
  171 ??         0:02.00 /usr/libexec/trustd
  172 ??         0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -s
  173 ??         0:00.21 /usr/sbin/ocspd
  174 ??         0:00.25 /usr/sbin/mDNSResponder
  189 ??         0:00.01 /usr/libexec/watchdogd
  196 ??         0:00.02 /usr/sbin/systemstats --xpc
  197 ??         0:00.06 /System/Library/Frameworks/CoreAudio.framework/Versions/A/XPCServices/com.apple.audio.DriverHelper.xpc/Contents/MacOS/com.apple.audio.DriverHelper
  199 ??         0:00.07 /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Support/awdd
  200 ??         0:00.19 /usr/libexec/locationd
  203 ??         0:00.25 /usr/libexec/symptomsd
  204 ??         0:00.33 /usr/libexec/lsd runAsRoot
  206 ??         0:00.08 /usr/sbin/mDNSResponderHelper
  208 ??         0:00.07 /System/Library/PrivateFrameworks/AmbientDisplay.framework/Versions/A/XPCServices/com.apple.AmbientDisplayAgent.xpc/Contents/MacOS/com.apple.AmbientDisplayAgent
  210 ??         0:00.05 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMServer
  211 ??         0:00.02 /System/Library/CoreServices/CrashReporterSupportHelper server-init
  214 ??         0:00.16 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/com.apple.CodeSigningHelper.xpc/Contents/MacOS/com.apple.CodeSigningHelper
  228 ??         0:00.20 /usr/libexec/nsurlsessiond --privileged
  229 ??         0:00.07 /usr/libexec/nehelper
  230 ??         0:00.06 /usr/libexec/usbd
  231 ??         0:00.02 /usr/libexec/thermald
  233 ??         0:00.02 /System/Library/CryptoTokenKit/com.apple.ifdreader.slotd/Contents/MacOS/com.apple.ifdreader
  234 ??         0:00.27 /Applications/.esets/Contents/MacOS/esets_daemon
  235 ??         0:25.40 /Applications/.esets/Contents/MacOS/esets_daemon --scan-process
  236 ??         0:00.06 /usr/libexec/securityd_service
  238 ??         0:00.07 /System/Library/CoreServices/sharedfilelistd --enable-legacy-services
  240 ??         0:00.84 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores
  245 ??         0:03.13 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd
  246 ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d
  247 ??         0:00.07 /usr/libexec/secinitd
  250 ??         0:00.06 /usr/libexec/findmydeviced
  251 ??         0:00.25 /usr/sbin/spindump
  252 ??         0:00.04 /System/Library/CoreServices/SubmitDiagInfo server-init
  253 ??         0:00.07 /usr/sbin/systemsoundserverd
  254 ??         0:00.03 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd system
  255 ??         0:00.02 /usr/libexec/InternetSharing
  257 ??         0:00.01 /usr/libexec/smd
  258 ??         0:00.04 /usr/sbin/netbiosd
  259 ??         0:00.06 sysmond
  261 ??         0:00.03 /System/Library/PrivateFrameworks/AccountPolicy.framework/XPCServices/com.apple.AccountPolicyHelper.xpc/Contents/MacOS/com.apple.AccountPolicyHelper
  263 ??         0:00.04 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
  265 ??         0:00.03 /usr/libexec/nsurlstoraged
  271 ??         0:00.05 /Applications/.esets/Contents/MacOS/esets_kac
  283 ??         0:00.03 /Applications/.esets/Contents/MacOS/esets_fcor
  284 ??         0:00.05 /Applications/.esets/Contents/MacOS/esets_mac
  285 ??         0:04.19 /Applications/.esets/Contents/MacOS/esets_proxy
  311 ??         0:17.39 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated
  312 ??         0:00.04 /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Resources/suhelperd
  320 ??         0:00.06 /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift
  321 ??         0:10.95 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-scan -c MDSSyncScanWorker -m com.apple.metadata.mds.scan
  331 ??         0:00.81 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  332 ??         0:00.79 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  333 ??         0:00.76 /usr/sbin/cfprefsd agent
  334 ??         0:00.46 /usr/libexec/lsd
  335 ??         0:00.11 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  336 ??         0:00.02 /usr/sbin/cfprefsd agent
  337 ??         0:00.04 /usr/libexec/lsd
  342 ??         0:00.01 /System/Library/Frameworks/GSS.framework/Helpers/com.apple.GSSCred
  345 ??         0:00.49 /usr/libexec/UserEventAgent (Aqua)
  347 ??         0:02.47 /usr/sbin/distnoted agent
  349 ??         0:00.31 /System/Library/Frameworks/CoreTelephony.framework/Support/CommCenter -L
  350 ??         0:01.20 /usr/libexec/trustd --agent
  351 ??         0:03.01 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_53261
  352 ??         0:00.24 /System/Library/CoreServices/sharedfilelistd
  354 ??         0:00.09 /usr/libexec/secd
  355 ??         0:04.97 /Applications/Microsoft Word.app/Contents/MacOS/Microsoft Word -psn_0_57358
  356 ??         0:00.31 /System/Library/PrivateFrameworks/TelephonyUtilities.framework/callservicesd
  357 ??         0:00.03 /usr/sbin/WirelessRadioManagerd
  358 ??         0:01.81 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_61455
  359 ??         0:00.20 /System/Library/PrivateFrameworks/IDS.framework/identityservicesd.app/Contents/MacOS/identityservicesd
  360 ??         0:00.12 /System/Library/PrivateFrameworks/IMCore.framework/imagent.app/Contents/MacOS/imagent
  361 ??         0:00.17 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd
  364 ??         0:00.19 /System/Library/Frameworks/Accounts.framework/Versions/A/Support/accountsd
  365 ??         0:02.62 /Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader -psn_0_69649
  367 ??         0:00.07 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/IMDPersistenceAgent.xpc/Contents/MacOS/IMDPersistenceAgent
  368 ??         0:06.54 /Applications/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_73746
  369 ??         0:00.61 /Applications/System Preferences.app/Contents/MacOS/System Preferences -psn_0_77843
  372 ??         0:00.32 /usr/sbin/usernoted
  373 ??         0:00.46 /Applications/Calculator.app/Contents/MacOS/Calculator -psn_0_86037
  374 ??         0:00.08 /System/Library/Frameworks/AddressBook.framework/Executables/ContactsAccountsService
  375 ??         0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/KeychainSyncingOverIDSProxy.bundle/Contents/MacOS/KeychainSyncingOverIDSProxy
  376 ??         0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/CloudKeychainProxy.bundle/Contents/MacOS/CloudKeychainProxy
  378 ??         0:00.51 /usr/libexec/secinitd
  379 ??         0:00.07 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent
  381 ??         0:00.45 /usr/libexec/nsurlstoraged
  383 ??         0:00.09 /usr/libexec/fmfd
  384 ??         0:02.88 /Applications/Utilities/Keychain Access.app/Contents/MacOS/Keychain Access -psn_0_102425
  385 ??         0:00.09 /System/Library/PrivateFrameworks/UserActivity.framework/Agents/useractivityd
  386 ??         0:00.08 /System/Library/PrivateFrameworks/AOSKit.framework/Versions/A/XPCServices/com.apple.iCloudHelper.xpc/Contents/MacOS/com.apple.iCloudHelper
  387 ??         0:00.35 /usr/libexec/sharingd
  388 ??         0:00.02 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent
  390 ??         0:00.01 /usr/libexec/taskgated -s
  391 ??         0:01.66 /Applications/TextEdit.app/Contents/MacOS/TextEdit -psn_0_114716
  392 ??         0:03.29 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
  394 ??         0:00.80 /System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer
  395 ??         0:01.18 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
  396 ??         0:00.04 /usr/libexec/pboard
  399 ??         0:00.41 /usr/libexec/nsurlsessiond
  400 ??         0:00.56 /Applications/Epson Software/Event Manager.app/Contents/Resources/Assistants/Event Manager/EEventManager.app/Contents/MacOS/EEventManager
  401 ??         0:00.14 /usr/libexec/networkserviceproxy
  403 ??         0:00.90 /System/Library/PrivateFrameworks/CalendarAgent.framework/Executables/CalendarAgent
  405 ??         0:02.01 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/fontd
  407 ??         0:00.02 /System/Library/PrivateFrameworks/CoreFollowUp.framework/Versions/A/Support/followupd
  408 ??         0:00.07 /System/Library/PrivateFrameworks/PhotoAnalysis.framework/Versions/A/Support/photoanalysisd
  409 ??         0:00.35 /System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/SafariBookmarksSyncAgent
  411 ??         0:00.09 /System/Library/PrivateFrameworks/CloudDocsDaemon.framework/Versions/A/Support/bird
  412 ??         0:00.17 /System/Library/PrivateFrameworks/CacheDelete.framework/deleted
  415 ??         0:00.03 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
  419 ??         0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  420 ??         0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  421 ??         0:00.22 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  422 ??         0:00.62 /usr/libexec/pkd
  423 ??         0:00.18 /System/Library/CoreServices/iconservicesagent
  424 ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp
  425 ??         0:00.86 /System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight
  427 ??         0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -tw
  429 ??         0:00.06 /usr/libexec/AssetCache/AssetCache
  430 ??         0:00.04 /System/Library/CoreServices/backupd.bundle/Contents/Resources/TMCacheDelete
  431 ??         0:00.04 /System/Library/PrivateFrameworks/GeoServices.framework/geodMachServiceBridge
  432 ??         0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/installd
  433 ??         0:00.24 /System/Library/CoreServices/cloudphotosd.app/Contents/MacOS/cloudphotosd
  434 ??         0:00.10 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storedownloadd
  435 ??         0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/system_installd
  436 ??         0:00.03 /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Support/com.apple.quicklook.ThumbnailsAgent
  437 ??         0:00.34 /System/Library/PrivateFrameworks/CalendarNotification.framework/Versions/A/XPCServices/CalNCService.xpc/Contents/MacOS/CalNCService
  439 ??         0:00.07 /usr/libexec/swcd
  440 ??         0:00.03 /usr/libexec/trustd --agent
  443 ??         0:00.68 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.History.xpc/Contents/MacOS/com.apple.Safari.History
  444 ??         0:00.35 /System/Library/PrivateFrameworks/CloudKitDaemon.framework/Support/cloudd
  446 ??         0:00.22 /System/Library/PrivateFrameworks/CoreParsec.framework/parsecd
  448 ??         0:00.14 /System/Library/CoreServices/CoreServicesUIAgent.app/Contents/MacOS/CoreServicesUIAgent
  449 ??         0:00.62 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeassetd
  450 ??         0:00.03 /usr/libexec/trustd --agent
  452 ??         0:00.27 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
  453 ??         0:00.55 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeaccountd
  454 ??         0:00.17 /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/XPCServices/com.apple.geod.xpc/Contents/MacOS/com.apple.geod
  457 ??         0:00.08 /System/Library/CoreServices/pbs
  458 ??         0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storelegacy
  459 ??         0:00.09 /usr/libexec/videosubscriptionsd
  460 ??         0:00.04 /usr/sbin/filecoordinationd
  463 ??         0:00.08 /System/Library/PrivateFrameworks/CloudPhotoServices.framework/Versions/A/Frameworks/CloudPhotosConfigurationXPC.framework/Versions/A/XPCServices/com.apple.CloudPhotosConfiguration.xpc/Contents/M
  464 ??         0:00.09 /System/Library/PrivateFrameworks/AssistantServices.framework/assistantd
  466 ??         0:00.12 /System/Library/CoreServices/FolderActionsDispatcher.app/Contents/MacOS/FolderActionsDispatcher
  468 ??         0:00.02 /usr/libexec/spindump_agent
  471 ??         0:00.03 /System/Library/CoreServices/SocialPushAgent.app/Contents/MacOS/SocialPushAgent
  474 ??         0:00.60 /Library/Printers/Canon/CUPS_SFP/BackGrounder/Canon CUPSSFP BackGrounder.app/Contents/MacOS/Canon CUPSSFP BackGrounder
  476 ??         0:05.92 /Library/Application Support/EPSON/Scanner/ScannerMonitor/Epson Scanner Monitor.app/Contents/MacOS/Epson Scanner Monitor
  477 ??         0:00.78 /System/Library/CoreServices/NotificationCenter.app/Contents/MacOS/NotificationCenter
  478 ??         0:00.12 /System/Library/Frameworks/InputMethodKit.framework/Resources/imklaunchagent
  480 ??         0:00.26 /System/Library/Image Capture/Support/icdd
  481 ??         0:00.16 /Library/Printers/Brother/Utilities/Server/LOGINserver.app/Contents/MacOS/LOGINserver
  482 ??         0:00.11 /System/Library/CoreServices/AppleIDAuthAgent
  484 ??         0:00.11 /Applications/Epson Software/Epson Low Ink Reminder.app/Contents/EpsonLowInkReminderAgent.app/Contents/MacOS/EpsonLowInkReminderAgent
  487 ??         0:00.04 /System/Library/PrivateFrameworks/AskPermission.framework/Versions/A/Resources/askpermissiond
  488 ??         0:00.14 /System/Library/CoreServices/AirPlayUIAgent.app/Contents/MacOS/AirPlayUIAgent --launchd
  489 ??         0:00.09 /System/Library/CoreServices/cloudpaird
  491 ??         0:00.13 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbagent.app/Contents/MacOS/nbagent
  493 ??         0:00.12 /System/Library/CoreServices/WiFiAgent.app/Contents/MacOS/WiFiAgent
  494 ??         0:00.13 /System/Library/CoreServices/diagnostics_agent
  495 ??         0:00.19 /System/Library/PrivateFrameworks/PassKitCore.framework/passd
  497 ??         0:00.22 /System/Library/PrivateFrameworks/MessagesKit.framework/Resources/soagent.app/Contents/MacOS/soagent
  501 ??         0:00.12 /System/Library/CoreServices/Menu Extras/TextInput.menu/Contents/SharedSupport/TISwitcher.app/Contents/MacOS/TISwitcher
  502 ??         0:00.01 /System/Library/PrivateFrameworks/InstallerDiagnostics.framework/Versions/A/Resources/installerdiagd
  508 ??         0:00.12 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/Support/akd
  510 ??         0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService
  511 ??         0:00.05 /System/Library/CoreServices/mapspushd
  513 ??         0:00.06 /System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy
  514 ??         0:00.05 /System/Library/PrivateFrameworks/CallHistory.framework/Support/CallHistoryPluginHelper
  517 ??         0:00.04 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/maspushagent
  518 ??         0:00.07 /usr/libexec/keyboardservicesd
  520 ??         0:00.15 /usr/sbin/cupsd -l
  521 ??         0:00.23 /System/Library/CoreServices/ScopedBookmarkAgent
  522 ??         0:00.05 /System/Library/PrivateFrameworks/PhotoLibraryPrivate.framework/Versions/A/Support/photolibraryd
  523 ??         0:00.07 /Applications/iTunes.app/Contents/MacOS/iTunesHelper.app/Contents/MacOS/iTunesHelper
  525 ??         0:00.20 /Applications/VMware Fusion.app/Contents/Library/VMware Fusion Start Menu.app/Contents/MacOS/VMware Fusion Start Menu
  527 ??         0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
  528 ??         0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking
  530 ??         0:00.05 /usr/libexec/WiFiVelocityAgent
  531 ??         0:00.06 /usr/libexec/wifivelocityd
  533 ??         0:00.93 /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/com.apple.appkit.xpc.openAndSavePanelService.xpc/Contents/MacOS/com.apple.appkit.xpc.openAndSavePanelService
  534 ??         0:00.34 /Applications/.esets/Contents/MacOS/esets_sci --scheduler --priority=normal --startup -- /etc /sbin /usr/sbin /bin /usr/bin
  536 ??         0:00.08 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary
  538 ??         0:00.08 /System/Library/PrivateFrameworks/PrintingPrivate.framework/Versions/A/PrintUITool
  542 ??         0:00.05 /Users/administrator/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app/Contents/MacOS/Android File Transfer Agent
  543 ??         0:00.10 /Library/Printers/Brother/Utilities/Server/USBserver.app/Contents/MacOS/USBserver
  544 ??         0:00.05 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService
  545 ??         0:00.01 /System/Library/PrivateFrameworks/StoreXPCServices.framework/Versions/A/XPCServices/com.apple.appstore.PluginXPCService.xpc/Contents/MacOS/com.apple.appstore.PluginXPCService
  548 ??         0:00.11 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer launchd
  549 ??         0:00.04 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Versions/A/printtool agent
  551 ??         0:00.03 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/XPCServices/com.apple.hiservices-xpcservice.xpc/Contents/MacOS/com.apple.hiservices-
  552 ??         0:00.16 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeuid.app/Contents/MacOS/storeuid
  553 ??         0:00.10 /Library/Printers/Brother/Utilities/Server/NETserver.app/Contents/MacOS/NETserver
  558 ??         0:00.06 /System/Library/PrivateFrameworks/ContactsAgent.framework/Executables/ContactsAgent
  559 ??         0:00.08 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
  565 ??         0:01.74 /System/Library/Services/AppleSpell.service/Contents/MacOS/AppleSpell
  571 ??         0:00.49 /System/Library/PreferencePanes/Sound.prefPane/Contents/XPCServices/com.apple.preference.sound.remoteservice.xpc/Contents/MacOS/com.apple.preference.sound.remoteservice
  574 ??         0:00.03 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdate_notify_agent
  590 ??         0:00.08 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder
  591 ??         0:00.05 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
  635 ??         0:00.50 /System/Library/Input Methods/JapaneseIM.app/Contents/PlugIns/JapaneseIM.appex/Contents/MacOS/JapaneseIM
  645 ??         0:00.57 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/AdobeCrashReporter.framework/Versions/A/AdobeCRDaemon.app/Contents/MacOS/AdobeCRDaemon 365 AdobeReader 19.010.20098 /Applications/Ado
  666 ??         0:02.51 /Applications/Docker.app/Contents/MacOS/Docker
  670 ??         0:00.86 /Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app/Contents/MacOS/RdrCEF "/Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app" --locale=ja-jp 
  672 ??         0:00.04 /usr/libexec/gamecontrollerd
  674 ??         0:00.36 /Applications/Microsoft Word.app/Contents/SharedSupport/Office365ServiceV2.app/Contents/MacOS/Office365ServiceV2
  675 ??         0:01.82 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/RdrCEF Helper.app/Contents/MacOS/RdrCEF Helper --type=renderer --disable-browser-side-navigation --disable-gpu-compositing --service-
  677 ??         0:00.08 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeinappd
  683 ??         0:03.38 /Users/administrator/Library/Application Support/Adobe/com.adobe.ARMDCHelper/Adobe Acrobat Updater.app/Contents/MacOS/Acrobat Updater -psn_0_335954
  700 ??         0:00.02 /usr/libexec/loginitemregisterd
  702 ??         0:00.07 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0
  703 ??         0:00.04 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl
  704 ??         0:00.23 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.m
  705 ??         0:00.18 com.docker.driver.amd64-linux -addr fd:3 -debug
  711 ??         0:00.00 (Acrobat Update H)
  716 ??         0:00.04 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMCompiler 2
  719 ??         0:28.49 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 11f6bb5c-ae3f-42b4
  722 ??         0:00.02 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper
  796 ??         0:00.07 /usr/libexec/syspolicyd
  798 ??         0:00.21 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker -c MDSImporterWorker -m com.apple.mdworker.shared
  799 ??         0:00.08 /System/Library/PrivateFrameworks/CoreSuggestions.framework/Versions/A/Support/suggestd
  721 ttys001    0:00.03 login -pf administrator
  723 ttys001    0:00.02 -bash
  801 ttys001    0:00.01 ps -ax

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker(21) 今日のdocker error: Error response from daemon: Bad response from Docker engine

macOS
$docker rmi xxxxx

なかなか終わらない。

macOS
$ docker rm yyyyy

別のまどでついつい。

Mac OSのほかのアプリもぴったりとまった。
電源ボタンを長押ししてosを再起動。

macOS
$ docker images
Error response from daemon: Bad response from Docker engine
$ docker ps -a
Error response from daemon: Bad response from Docker engine

docker が起動していないのかと画面の一番上のくじらわんをクリックしてみた。

スクリーンショット 2019-06-25 11.38.40.png

念のためにrestart。

でも同じ。

$ ps -ax
  PID TTY           TIME CMD
    1 ??         0:03.98 /sbin/launchd
   41 ??         0:00.70 /usr/libexec/UserEventAgent (System)
   42 ??         0:00.24 /usr/sbin/syslogd
   44 ??         0:00.17 /Applications/ESET Endpoint Antivirus.app/Contents/MacOS/esets_ctl
   45 ??         0:00.06 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
   46 ??         0:01.49 /usr/libexec/kextd
   47 ??         0:01.75 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
   49 ??         0:00.09 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
   52 ??         0:00.15 /System/Library/CoreServices/appleeventsd --server
   53 ??         0:00.74 /usr/libexec/configd
   54 ??         0:00.15 /System/Library/CoreServices/powerd.bundle/powerd
   55 ??         0:00.21 /usr/libexec/mobileassetd
   60 ??         0:00.43 /usr/libexec/logd
   64 ??         0:00.49 /usr/libexec/airportd
   66 ??         0:00.25 /usr/libexec/warmd
   67 ??         0:02.93 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
   72 ??         0:00.03 /System/Library/CoreServices/iconservicesd
   73 ??         0:00.06 /System/Library/CoreServices/iconservicesagent
   75 ??         0:00.15 /usr/libexec/diskarbitrationd
   78 ??         0:00.48 /usr/libexec/coreduetd
   79 ??         0:00.05 /usr/libexec/wdhelper
   84 ??         0:03.06 /usr/libexec/opendirectoryd
   85 ??         0:00.09 /usr/sbin/wirelessproxd
   87 ??         0:00.46 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd
   88 ??         0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd
   89 ??         0:00.02 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbstated
   90 ??         0:02.01 /System/Library/CoreServices/launchservicesd
   91 ??         0:00.04 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
   92 ??         0:00.36 /usr/sbin/securityd -i
   96 ??         0:00.18 /usr/libexec/DuetHeuristic-BM
   97 ??         0:01.01 /usr/libexec/displaypolicyd -k 1
   98 ??         0:00.37 /usr/sbin/blued
   99 ??         0:00.03 autofsd
  101 ??         0:00.10 /System/Library/PrivateFrameworks/Heimdal.framework/Helpers/kdc
  103 ??         0:02.61 /Applications/ESET Remote Administrator Agent.app/Contents/MacOS/ERAAgent
  104 ??         0:00.11 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond
  105 ??         0:02.08 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console
  106 ??         0:00.04 /System/Library/CoreServices/logind
  107 ??         0:00.01 /usr/sbin/KernelEventAgent
  110 ??         0:02.70 /usr/libexec/hidd
  111 ??         0:00.34 /usr/libexec/corebrightnessd --launchd
  112 ??         0:00.17 /usr/libexec/AirPlayXPCHelper
  113 ??         0:01.60 /usr/libexec/amfid
  114 ??         0:00.94 /usr/sbin/notifyd
  115 ??         0:00.74 /usr/sbin/distnoted daemon
  116 ??         0:00.44 /System/Library/CoreServices/coreservicesd
  117 ??         0:00.19 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd
  119 ??         0:00.04 aslmanager
  120 ??         0:00.76 /usr/sbin/cfprefsd daemon
  138 ??         0:05.62 /usr/libexec/sandboxd
  162 ??         0:16.26 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon
  165 ??         0:00.24 /usr/sbin/coreaudiod
  166 ??         0:00.05 /System/Library/PrivateFrameworks/CoreSymbolication.framework/coresymbolicationd
  169 ??         0:00.03 /System/Library/Frameworks/PCSC.framework/Versions/A/XPCServices/com.apple.ctkpcscd.xpc/Contents/MacOS/com.apple.ctkpcscd
  171 ??         0:02.00 /usr/libexec/trustd
  172 ??         0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -s
  173 ??         0:00.21 /usr/sbin/ocspd
  174 ??         0:00.25 /usr/sbin/mDNSResponder
  189 ??         0:00.01 /usr/libexec/watchdogd
  196 ??         0:00.02 /usr/sbin/systemstats --xpc
  197 ??         0:00.06 /System/Library/Frameworks/CoreAudio.framework/Versions/A/XPCServices/com.apple.audio.DriverHelper.xpc/Contents/MacOS/com.apple.audio.DriverHelper
  199 ??         0:00.07 /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Support/awdd
  200 ??         0:00.19 /usr/libexec/locationd
  203 ??         0:00.25 /usr/libexec/symptomsd
  204 ??         0:00.33 /usr/libexec/lsd runAsRoot
  206 ??         0:00.08 /usr/sbin/mDNSResponderHelper
  208 ??         0:00.07 /System/Library/PrivateFrameworks/AmbientDisplay.framework/Versions/A/XPCServices/com.apple.AmbientDisplayAgent.xpc/Contents/MacOS/com.apple.AmbientDisplayAgent
  210 ??         0:00.05 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMServer
  211 ??         0:00.02 /System/Library/CoreServices/CrashReporterSupportHelper server-init
  214 ??         0:00.16 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/com.apple.CodeSigningHelper.xpc/Contents/MacOS/com.apple.CodeSigningHelper
  228 ??         0:00.20 /usr/libexec/nsurlsessiond --privileged
  229 ??         0:00.07 /usr/libexec/nehelper
  230 ??         0:00.06 /usr/libexec/usbd
  231 ??         0:00.02 /usr/libexec/thermald
  233 ??         0:00.02 /System/Library/CryptoTokenKit/com.apple.ifdreader.slotd/Contents/MacOS/com.apple.ifdreader
  234 ??         0:00.27 /Applications/.esets/Contents/MacOS/esets_daemon
  235 ??         0:25.40 /Applications/.esets/Contents/MacOS/esets_daemon --scan-process
  236 ??         0:00.06 /usr/libexec/securityd_service
  238 ??         0:00.07 /System/Library/CoreServices/sharedfilelistd --enable-legacy-services
  240 ??         0:00.84 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores
  245 ??         0:03.13 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd
  246 ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d
  247 ??         0:00.07 /usr/libexec/secinitd
  250 ??         0:00.06 /usr/libexec/findmydeviced
  251 ??         0:00.25 /usr/sbin/spindump
  252 ??         0:00.04 /System/Library/CoreServices/SubmitDiagInfo server-init
  253 ??         0:00.07 /usr/sbin/systemsoundserverd
  254 ??         0:00.03 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd system
  255 ??         0:00.02 /usr/libexec/InternetSharing
  257 ??         0:00.01 /usr/libexec/smd
  258 ??         0:00.04 /usr/sbin/netbiosd
  259 ??         0:00.06 sysmond
  261 ??         0:00.03 /System/Library/PrivateFrameworks/AccountPolicy.framework/XPCServices/com.apple.AccountPolicyHelper.xpc/Contents/MacOS/com.apple.AccountPolicyHelper
  263 ??         0:00.04 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
  265 ??         0:00.03 /usr/libexec/nsurlstoraged
  271 ??         0:00.05 /Applications/.esets/Contents/MacOS/esets_kac
  283 ??         0:00.03 /Applications/.esets/Contents/MacOS/esets_fcor
  284 ??         0:00.05 /Applications/.esets/Contents/MacOS/esets_mac
  285 ??         0:04.19 /Applications/.esets/Contents/MacOS/esets_proxy
  311 ??         0:17.39 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated
  312 ??         0:00.04 /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Resources/suhelperd
  320 ??         0:00.06 /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift
  321 ??         0:10.95 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-scan -c MDSSyncScanWorker -m com.apple.metadata.mds.scan
  331 ??         0:00.81 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  332 ??         0:00.79 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  333 ??         0:00.76 /usr/sbin/cfprefsd agent
  334 ??         0:00.46 /usr/libexec/lsd
  335 ??         0:00.11 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing
  336 ??         0:00.02 /usr/sbin/cfprefsd agent
  337 ??         0:00.04 /usr/libexec/lsd
  342 ??         0:00.01 /System/Library/Frameworks/GSS.framework/Helpers/com.apple.GSSCred
  345 ??         0:00.49 /usr/libexec/UserEventAgent (Aqua)
  347 ??         0:02.47 /usr/sbin/distnoted agent
  349 ??         0:00.31 /System/Library/Frameworks/CoreTelephony.framework/Support/CommCenter -L
  350 ??         0:01.20 /usr/libexec/trustd --agent
  351 ??         0:03.01 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_53261
  352 ??         0:00.24 /System/Library/CoreServices/sharedfilelistd
  354 ??         0:00.09 /usr/libexec/secd
  355 ??         0:04.97 /Applications/Microsoft Word.app/Contents/MacOS/Microsoft Word -psn_0_57358
  356 ??         0:00.31 /System/Library/PrivateFrameworks/TelephonyUtilities.framework/callservicesd
  357 ??         0:00.03 /usr/sbin/WirelessRadioManagerd
  358 ??         0:01.81 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_61455
  359 ??         0:00.20 /System/Library/PrivateFrameworks/IDS.framework/identityservicesd.app/Contents/MacOS/identityservicesd
  360 ??         0:00.12 /System/Library/PrivateFrameworks/IMCore.framework/imagent.app/Contents/MacOS/imagent
  361 ??         0:00.17 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd
  364 ??         0:00.19 /System/Library/Frameworks/Accounts.framework/Versions/A/Support/accountsd
  365 ??         0:02.62 /Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader -psn_0_69649
  367 ??         0:00.07 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/IMDPersistenceAgent.xpc/Contents/MacOS/IMDPersistenceAgent
  368 ??         0:06.54 /Applications/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_73746
  369 ??         0:00.61 /Applications/System Preferences.app/Contents/MacOS/System Preferences -psn_0_77843
  372 ??         0:00.32 /usr/sbin/usernoted
  373 ??         0:00.46 /Applications/Calculator.app/Contents/MacOS/Calculator -psn_0_86037
  374 ??         0:00.08 /System/Library/Frameworks/AddressBook.framework/Executables/ContactsAccountsService
  375 ??         0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/KeychainSyncingOverIDSProxy.bundle/Contents/MacOS/KeychainSyncingOverIDSProxy
  376 ??         0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/CloudKeychainProxy.bundle/Contents/MacOS/CloudKeychainProxy
  378 ??         0:00.51 /usr/libexec/secinitd
  379 ??         0:00.07 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent
  381 ??         0:00.45 /usr/libexec/nsurlstoraged
  383 ??         0:00.09 /usr/libexec/fmfd
  384 ??         0:02.88 /Applications/Utilities/Keychain Access.app/Contents/MacOS/Keychain Access -psn_0_102425
  385 ??         0:00.09 /System/Library/PrivateFrameworks/UserActivity.framework/Agents/useractivityd
  386 ??         0:00.08 /System/Library/PrivateFrameworks/AOSKit.framework/Versions/A/XPCServices/com.apple.iCloudHelper.xpc/Contents/MacOS/com.apple.iCloudHelper
  387 ??         0:00.35 /usr/libexec/sharingd
  388 ??         0:00.02 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent
  390 ??         0:00.01 /usr/libexec/taskgated -s
  391 ??         0:01.66 /Applications/TextEdit.app/Contents/MacOS/TextEdit -psn_0_114716
  392 ??         0:03.29 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
  394 ??         0:00.80 /System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer
  395 ??         0:01.18 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
  396 ??         0:00.04 /usr/libexec/pboard
  399 ??         0:00.41 /usr/libexec/nsurlsessiond
  400 ??         0:00.56 /Applications/Epson Software/Event Manager.app/Contents/Resources/Assistants/Event Manager/EEventManager.app/Contents/MacOS/EEventManager
  401 ??         0:00.14 /usr/libexec/networkserviceproxy
  403 ??         0:00.90 /System/Library/PrivateFrameworks/CalendarAgent.framework/Executables/CalendarAgent
  405 ??         0:02.01 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/fontd
  407 ??         0:00.02 /System/Library/PrivateFrameworks/CoreFollowUp.framework/Versions/A/Support/followupd
  408 ??         0:00.07 /System/Library/PrivateFrameworks/PhotoAnalysis.framework/Versions/A/Support/photoanalysisd
  409 ??         0:00.35 /System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/SafariBookmarksSyncAgent
  411 ??         0:00.09 /System/Library/PrivateFrameworks/CloudDocsDaemon.framework/Versions/A/Support/bird
  412 ??         0:00.17 /System/Library/PrivateFrameworks/CacheDelete.framework/deleted
  415 ??         0:00.03 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd
  419 ??         0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  420 ??         0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  421 ??         0:00.22 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles
  422 ??         0:00.62 /usr/libexec/pkd
  423 ??         0:00.18 /System/Library/CoreServices/iconservicesagent
  424 ??         0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp
  425 ??         0:00.86 /System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight
  427 ??         0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -tw
  429 ??         0:00.06 /usr/libexec/AssetCache/AssetCache
  430 ??         0:00.04 /System/Library/CoreServices/backupd.bundle/Contents/Resources/TMCacheDelete
  431 ??         0:00.04 /System/Library/PrivateFrameworks/GeoServices.framework/geodMachServiceBridge
  432 ??         0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/installd
  433 ??         0:00.24 /System/Library/CoreServices/cloudphotosd.app/Contents/MacOS/cloudphotosd
  434 ??         0:00.10 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storedownloadd
  435 ??         0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/system_installd
  436 ??         0:00.03 /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Support/com.apple.quicklook.ThumbnailsAgent
  437 ??         0:00.34 /System/Library/PrivateFrameworks/CalendarNotification.framework/Versions/A/XPCServices/CalNCService.xpc/Contents/MacOS/CalNCService
  439 ??         0:00.07 /usr/libexec/swcd
  440 ??         0:00.03 /usr/libexec/trustd --agent
  443 ??         0:00.68 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.History.xpc/Contents/MacOS/com.apple.Safari.History
  444 ??         0:00.35 /System/Library/PrivateFrameworks/CloudKitDaemon.framework/Support/cloudd
  446 ??         0:00.22 /System/Library/PrivateFrameworks/CoreParsec.framework/parsecd
  448 ??         0:00.14 /System/Library/CoreServices/CoreServicesUIAgent.app/Contents/MacOS/CoreServicesUIAgent
  449 ??         0:00.62 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeassetd
  450 ??         0:00.03 /usr/libexec/trustd --agent
  452 ??         0:00.27 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra
  453 ??         0:00.55 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeaccountd
  454 ??         0:00.17 /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/XPCServices/com.apple.geod.xpc/Contents/MacOS/com.apple.geod
  457 ??         0:00.08 /System/Library/CoreServices/pbs
  458 ??         0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storelegacy
  459 ??         0:00.09 /usr/libexec/videosubscriptionsd
  460 ??         0:00.04 /usr/sbin/filecoordinationd
  463 ??         0:00.08 /System/Library/PrivateFrameworks/CloudPhotoServices.framework/Versions/A/Frameworks/CloudPhotosConfigurationXPC.framework/Versions/A/XPCServices/com.apple.CloudPhotosConfiguration.xpc/Contents/M
  464 ??         0:00.09 /System/Library/PrivateFrameworks/AssistantServices.framework/assistantd
  466 ??         0:00.12 /System/Library/CoreServices/FolderActionsDispatcher.app/Contents/MacOS/FolderActionsDispatcher
  468 ??         0:00.02 /usr/libexec/spindump_agent
  471 ??         0:00.03 /System/Library/CoreServices/SocialPushAgent.app/Contents/MacOS/SocialPushAgent
  474 ??         0:00.60 /Library/Printers/Canon/CUPS_SFP/BackGrounder/Canon CUPSSFP BackGrounder.app/Contents/MacOS/Canon CUPSSFP BackGrounder
  476 ??         0:05.92 /Library/Application Support/EPSON/Scanner/ScannerMonitor/Epson Scanner Monitor.app/Contents/MacOS/Epson Scanner Monitor
  477 ??         0:00.78 /System/Library/CoreServices/NotificationCenter.app/Contents/MacOS/NotificationCenter
  478 ??         0:00.12 /System/Library/Frameworks/InputMethodKit.framework/Resources/imklaunchagent
  480 ??         0:00.26 /System/Library/Image Capture/Support/icdd
  481 ??         0:00.16 /Library/Printers/Brother/Utilities/Server/LOGINserver.app/Contents/MacOS/LOGINserver
  482 ??         0:00.11 /System/Library/CoreServices/AppleIDAuthAgent
  484 ??         0:00.11 /Applications/Epson Software/Epson Low Ink Reminder.app/Contents/EpsonLowInkReminderAgent.app/Contents/MacOS/EpsonLowInkReminderAgent
  487 ??         0:00.04 /System/Library/PrivateFrameworks/AskPermission.framework/Versions/A/Resources/askpermissiond
  488 ??         0:00.14 /System/Library/CoreServices/AirPlayUIAgent.app/Contents/MacOS/AirPlayUIAgent --launchd
  489 ??         0:00.09 /System/Library/CoreServices/cloudpaird
  491 ??         0:00.13 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbagent.app/Contents/MacOS/nbagent
  493 ??         0:00.12 /System/Library/CoreServices/WiFiAgent.app/Contents/MacOS/WiFiAgent
  494 ??         0:00.13 /System/Library/CoreServices/diagnostics_agent
  495 ??         0:00.19 /System/Library/PrivateFrameworks/PassKitCore.framework/passd
  497 ??         0:00.22 /System/Library/PrivateFrameworks/MessagesKit.framework/Resources/soagent.app/Contents/MacOS/soagent
  501 ??         0:00.12 /System/Library/CoreServices/Menu Extras/TextInput.menu/Contents/SharedSupport/TISwitcher.app/Contents/MacOS/TISwitcher
  502 ??         0:00.01 /System/Library/PrivateFrameworks/InstallerDiagnostics.framework/Versions/A/Resources/installerdiagd
  508 ??         0:00.12 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/Support/akd
  510 ??         0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService
  511 ??         0:00.05 /System/Library/CoreServices/mapspushd
  513 ??         0:00.06 /System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy
  514 ??         0:00.05 /System/Library/PrivateFrameworks/CallHistory.framework/Support/CallHistoryPluginHelper
  517 ??         0:00.04 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/maspushagent
  518 ??         0:00.07 /usr/libexec/keyboardservicesd
  520 ??         0:00.15 /usr/sbin/cupsd -l
  521 ??         0:00.23 /System/Library/CoreServices/ScopedBookmarkAgent
  522 ??         0:00.05 /System/Library/PrivateFrameworks/PhotoLibraryPrivate.framework/Versions/A/Support/photolibraryd
  523 ??         0:00.07 /Applications/iTunes.app/Contents/MacOS/iTunesHelper.app/Contents/MacOS/iTunesHelper
  525 ??         0:00.20 /Applications/VMware Fusion.app/Contents/Library/VMware Fusion Start Menu.app/Contents/MacOS/VMware Fusion Start Menu
  527 ??         0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
  528 ??         0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking
  530 ??         0:00.05 /usr/libexec/WiFiVelocityAgent
  531 ??         0:00.06 /usr/libexec/wifivelocityd
  533 ??         0:00.93 /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/com.apple.appkit.xpc.openAndSavePanelService.xpc/Contents/MacOS/com.apple.appkit.xpc.openAndSavePanelService
  534 ??         0:00.34 /Applications/.esets/Contents/MacOS/esets_sci --scheduler --priority=normal --startup -- /etc /sbin /usr/sbin /bin /usr/bin
  536 ??         0:00.08 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary
  538 ??         0:00.08 /System/Library/PrivateFrameworks/PrintingPrivate.framework/Versions/A/PrintUITool
  542 ??         0:00.05 /Users/administrator/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app/Contents/MacOS/Android File Transfer Agent
  543 ??         0:00.10 /Library/Printers/Brother/Utilities/Server/USBserver.app/Contents/MacOS/USBserver
  544 ??         0:00.05 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService
  545 ??         0:00.01 /System/Library/PrivateFrameworks/StoreXPCServices.framework/Versions/A/XPCServices/com.apple.appstore.PluginXPCService.xpc/Contents/MacOS/com.apple.appstore.PluginXPCService
  548 ??         0:00.11 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer launchd
  549 ??         0:00.04 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Versions/A/printtool agent
  551 ??         0:00.03 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/XPCServices/com.apple.hiservices-xpcservice.xpc/Contents/MacOS/com.apple.hiservices-
  552 ??         0:00.16 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeuid.app/Contents/MacOS/storeuid
  553 ??         0:00.10 /Library/Printers/Brother/Utilities/Server/NETserver.app/Contents/MacOS/NETserver
  558 ??         0:00.06 /System/Library/PrivateFrameworks/ContactsAgent.framework/Executables/ContactsAgent
  559 ??         0:00.08 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
  565 ??         0:01.74 /System/Library/Services/AppleSpell.service/Contents/MacOS/AppleSpell
  571 ??         0:00.49 /System/Library/PreferencePanes/Sound.prefPane/Contents/XPCServices/com.apple.preference.sound.remoteservice.xpc/Contents/MacOS/com.apple.preference.sound.remoteservice
  574 ??         0:00.03 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdate_notify_agent
  590 ??         0:00.08 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder
  591 ??         0:00.05 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService
  635 ??         0:00.50 /System/Library/Input Methods/JapaneseIM.app/Contents/PlugIns/JapaneseIM.appex/Contents/MacOS/JapaneseIM
  645 ??         0:00.57 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/AdobeCrashReporter.framework/Versions/A/AdobeCRDaemon.app/Contents/MacOS/AdobeCRDaemon 365 AdobeReader 19.010.20098 /Applications/Ado
  666 ??         0:02.51 /Applications/Docker.app/Contents/MacOS/Docker
  670 ??         0:00.86 /Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app/Contents/MacOS/RdrCEF "/Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app" --locale=ja-jp 
  672 ??         0:00.04 /usr/libexec/gamecontrollerd
  674 ??         0:00.36 /Applications/Microsoft Word.app/Contents/SharedSupport/Office365ServiceV2.app/Contents/MacOS/Office365ServiceV2
  675 ??         0:01.82 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/RdrCEF Helper.app/Contents/MacOS/RdrCEF Helper --type=renderer --disable-browser-side-navigation --disable-gpu-compositing --service-
  677 ??         0:00.08 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeinappd
  683 ??         0:03.38 /Users/administrator/Library/Application Support/Adobe/com.adobe.ARMDCHelper/Adobe Acrobat Updater.app/Contents/MacOS/Acrobat Updater -psn_0_335954
  700 ??         0:00.02 /usr/libexec/loginitemregisterd
  702 ??         0:00.07 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0
  703 ??         0:00.04 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl
  704 ??         0:00.23 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.m
  705 ??         0:00.18 com.docker.driver.amd64-linux -addr fd:3 -debug
  711 ??         0:00.00 (Acrobat Update H)
  716 ??         0:00.04 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMCompiler 2
  719 ??         0:28.49 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 11f6bb5c-ae3f-42b4
  722 ??         0:00.02 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper
  796 ??         0:00.07 /usr/libexec/syspolicyd
  798 ??         0:00.21 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker -c MDSImporterWorker -m com.apple.mdworker.shared
  799 ??         0:00.08 /System/Library/PrivateFrameworks/CoreSuggestions.framework/Versions/A/Support/suggestd
  721 ttys001    0:00.03 login -pf administrator
  723 ttys001    0:00.02 -bash
  801 ttys001    0:00.01 ps -ax

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Docker] Vueでaxiosを使うときにbaseurlを設定する方法

はじめまして、普段はproduct managerをやっているtatsukenと申します。
研修の一環でvue.js、expressを書くことがあったので、そのことを中心にまとめていきたいと思います

はじめに

フロントエンドとapiをdockerで別々のサーバーとして立ち上げているときに、フロントからいちいちエンドポイントを指定するのが面倒だったので、いろいろ調べたmemo

何をするのか

vueからaxiosを用いてapiリクエストを行う際、いちいちURLを指定するのは面倒。

sample.js
import Axios from 'axios'
async getAmount() {
        try {
            const res = await Axios.get(`http://localhost:8081/hoge`);
            console.log(res.data);
        } catch (error) {
            console.log(error);
        }
    }

このように毎回http://localhost:8081/hogeというようにurlを指定するのは面倒
できれば/hogeというように簡潔にエンドポイントを指定したい

解決策

まずdocker-compose.ymlでvueプロジェクトのdockerイメージ以下のenvironmentVUE_APP_API_ENDPOINT: http://http://localhost:任意のport番号を追加する

docker-compose.yml
services:
  web:
   ...
    environment:
       VUE_APP_API_ENDPOINT: http://localhost:8081 //任意のport番号を指定
   ...

vueプロジェクト内のmain.jsに以下を追記

main.js
import Axios from 'axios'
Axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT;

これで以下のように簡潔に書けるようになります

sample.js
import Axios from 'axios'
async getAmount() {
        try {
            const res = await Axios.get(`/hoge`);
            console.log(res.data);
        } catch (error) {
            console.log(error);
        }
    }

最後に

エンドポイントへのリクエストが増えれば増えるほどURLの指定は面倒になってくるので、よければ試してみてください。
なにか間違いなどありましたら指摘していただけると幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【構築】CentOS7+VPN+docker:Nuxt.js+wordpress環境構築(コンテナセットアップ編)

これはなに?

こんにちわ!ナギちゃんだよー☆
きょーは前回セットアップしたVPSをつかってdocker-composeでチンするだけのお手軽タピオカ時短コンテナをたてるよー!

はい。

長いので

に分割されています。


これはなんですか?

Nuxt+Wordpress+開発用コンテナ群をつくります。開発用コンテナはVPN接続時しか見れないすぐれもの!

なにがめんどくさいですか?

docker勉強用にはじめたものの地雷を多数ふんでしまい満身創痍になりました。勉強用ならもっと簡単なところからはじめたほうがよかった・・・

Let's encrypt

みんなやってるから簡単だろー?とか思ったら地味にめんどくさかったです。
たしかにぐぐるといろいろな手段があるようで

◆nginxコンテナ+https-portalコンテナ
・https-portalというLet's Encryptの取得+更新をすべて自動でやってくれるコンテナがある
・https-portalのnginx > webapp用のnginx > webappというめんどい経路になる
・(いじった範囲では)https-portalのnginx用confをこちらで操作するとうまくうごきませんでした
・(いじった範囲では)用意されている変数でリダイレクト先指定するとURLにいらないものがつくのでリネームがめんどそう

◆nginx-proxyコンテナ+docker-letsencrypt-nginx-proxy-companionコンテナ
・nginx-proxyというコンテナ群を監視し自動でproxyしてくれるコンテナがある
・nginx~companionというLet's Encryptの取得+更新をすべて自動でやってくれるコンテナがある
・開発用コンテナもまざるので自動でproxyとかやってほしくない(設定をしらべるのもめんどう)

◆nginxコンテナ+certbotコンテナ
・certbotがうごくだけの公式コンテナがある(自動更新などはない)
・certbot動作時は外部Port80で通信できる必要がある + 同じ外部ポート指定で動作するコンテナは作れない
・(初回)ssl証明書がない > nginxが起動しない > nginxコンテナ終了
・(初回)nginxが起動しない> certbotが認証できない(上とあわせてデッドロック)
・ただしcertbotはhttp://xxxx/.well-known/acme-challenge/にのみアクセスできれば認証できる

◆1つのコンテナにnginx+certbotインストール
・上とほぼ同様で、さらにnginxコンテナに余分なものがついてしまう

というかんじになります。
多くの人が悩んでいるようで、自作イメージを配布されている方もいるのですが、何が入っているかわからないイメージは使用しないは鉄則そうなのと、初回さえどうにかなれば綺麗にすみそうということで、今回は3番目でいくことにします。

ネットワーク設定

portsを指定したコンテナは、グローバルで公開され、firewalldによるブロックは効きません
たとえば「firewalldで80,443のみ許容」していても、「mariadbコンテナのportsを3306」のように指定すると、なにごともなくyourdomain:3306で外部からアクセスできてしまいます。これはdockerがiptablesを直接操作するためのようです。
(とはいえiptablesをみると、firewalldで設定したポートスキャンのあたりは残っているようなので、firewalldで設定する意味がまったくないわけではないようです)

docker-composeであげたコンテナ群はymlに書いておけば自動でbridgeされるので、とりあえずコンテナ間でさえ通信できれば良いコンテナにはportsを一切指定しないようにします。ports:80のように内部だけ設定していても、30000以上の任意のポートに割り振られるので外部に穴があいていることに変わりはないはずです。
また、特定のIPアドレスのみ許容したいコンテナは、左辺にIPアドレスまで指定できます(ex:192.168.1.252:3306:3306
コンテナ間の接続もなにやってるかわからなくてかなり怖いので、実運用するならもっと勉強しなければなりませんね・・・。

VMと同等なCentOSコンテナ

開発用コンテナとして、Nuxtが動作し、sshで直接ログインでき、sudoもsystemctlも使えるなど、ほぼVMのように使えるものを目指しました。
コンテナのアンチパターンであがってそうな感じですが、VSCode Remote Developmentが正式にリリースされたので、今後そこそこ需要あるのでは?とも思います。
とはいえsystemctlやssh用rsaファイルの権限あたりで慣れていないのでかなり疲れました・・・。けっきょく/sbin/initで起動しつつbashコマンドもやる方法が見つけられなかったので nuxtのセットアップはshにまとめておいてあとでdocker execする・・・という風にしています。


じゅんび?

ディレクトリ作成

作業するためのディレクトリと、コンテナ内部のデータを保存するディレクトリを作成します

コンテナ作成作業ディレクトリ

コンテナをつくるためのもろもろ材料を置く作業用ディレクトリを作成します。
前回作成した環境であれば、ユーザにはsudo+docker権限があるので、ログインしたユーザでそのまま作業ができます。好きなところに以下のようにディレクトリを作成し、これから記述していく各Dockerfileやconfを設置してください。

/container
|   #dockerまとめて設定ファイル
├── docker-compose.yml
|
|   #プロキシ用nginxコンテナ用ディレクトリ
├── /nginx
|   └── nginx.conf
|
|   #certbot動かすコンテナ用ディレクトリ
├── /certbot
|
|   #Nuxtで作成されたアプリの公開用コンテナ用ディレクトリ
├── /webapp
|   └── Dockerfile
|
|
|   #wordpressコンテナ用ディレクトリ
├── /wordpress
|
|   #wordpress用mariadbコンテナ用ディレクトリ
├── /wordpress_db
|   └── my.conf
|
|   #Nuxtで開発するためのCentOSコンテナ用ディレクトリ
└── /webapp_dev
    ├── Dockerfile
    ├── sshd.conf
    ├── id_rsa.pub
    └── startup_nuxt.sh

ssh
[user01@hostname ~]# mkdir container
[user01@hostname ~]# mkdir container/nginx
[user01@hostname ~]# mkdir container/certbot
[user01@hostname ~]# mkdir container/webapp
[user01@hostname ~]# mkdir container/webapp_dev
[user01@hostname ~]# mkdir container/wordpress
[user01@hostname ~]# mkdir container/wordpress_db

※なんとなくぜんぶ作っていますが、いらない(なにもファイルいれない)ディレクトリもあるのでお好みで

コンテナ内部からホスト側ディレクトリを参照するもの

コンテナてきには、外部データは最小限にしたいのですが、今回は

  • SSL証明書ファイル一式: 先述の理由もあり、コンテナ起動時に存在していないと初回起動できないため
  • Wordpressのファイル一式: wordpressの設定は永続化してほしいため 
  • データベースのイメージ: wordpress記事を保存するため

としました。ほかは

  • 公開用/開発用ファイルはコンテナ起動時にgithubからcloneし、本体には残さないようにします
  • それぞれのディレクトリは、慣習的に楽かなぁと思い、ホストにインストールしたときと同じような位置にしています
  • が、普段はインストール時につくられるものが存在しないので、ホスト側にディレクトリを作成する必要があります
ssh
[user01@hostname ~]# sudo mkdir /etc/letsencrypt
[user01@hostname ~]# sudo mkdir /var/www
[user01@hostname ~]# sudo mkdir /var/lib/mysql
[user01@hostname ~]# sudo mkdir /var/www
[user01@hostname ~]# sudo mkdir /var/www/html
[user01@hostname ~]# sudo mkdir /var/www/html/wordpress

初回certbot

先述したように、SSL用ファイルがないとnginxを起動できません。この初回起動のために、certbotコンテナを準備して、SSL認証用ファイルを生成します。成功すれば、IMPORTANT NOTES:Congratulations!の表示とともに、etc/letsencryptディレクトリにいろいろなファイルができているはずです。
なお、このcertbotイメージは今後も使っていくので削除する必要はありません。

ssh
[user01@hostname ~]# docker image pull certbot/certbot
[user01@hostname ~]# docker run --rm -p 443:443 -p 80:80 --name certbot-certonly -v "/etc/letsencrypt:/etc/letsencrypt"  certbot/certbot certonly -n -m "${メールアドレス}" -d ${ドメイン} --standalone --agree-tos

githubリポジトリ作成

webappコンテナがファイルをDLするためにつくっておきます。この段階では空でもかまいません。
プライベートリポジトリの場合は、cloneするのに認証が必要となるので、githubのSettings > Developer settings > Personal access tokensからアクセストークンを作成してください。https://${ユーザ名}:1234567890awsedrftgyhujikolp@github.com/${ユーザ名}/${リポジトリ名}みたいなやつが生成できれば、このURLからダウンロードすることができます。


docker-compose

ながくなりましたが、やっとメインとなるdocker-composeをかいてみます。YAMLとかさわったことがなくて病むる。

docker-compose.yml
version: '3'
services:
  nginx:
    image: nginx:1.17.0-alpine
    container_name: nginx
    restart: always
    ports:
      - "${グローバルIP}:80:80"
      - "${グローバルIP}:443:443"
    depends_on:
       - wordpress
    volumes:
    - /etc/letsencrypt:/etc/letsencrypt/
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf


  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt
      - certs:/var/log/letsencrypt
      - certs:/var/lib/letsencrypt


  webapp:
    container_name: webapp
    restart: always
    image: webapp
    build:
      context: ./webapp
      dockerfile: Dockerfile
    tty: true
    depends_on:
       - wordpress
    command: >
      sh -c 'git clone ${githubのトークン+URL} &&
      cd ${プロジェクト名(cloneしたときに作成されるディレクトリ名)} &&
      yarn install &&
      npm run build && 
      npm start'


  wordpress:
    image: wordpress:5.2.1-php7.2-apache
    container_name: wordpress
    restart: always
    ports:
      - "${VPNローカルIP}:3180:80"
    depends_on:
      - wordpress_db
    environment:
      WORDPRESS_DB_HOST: wordpress_db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: ${データベースのパスワード}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /var/www/html/wordpress:/var/www/html/


  wordpress_db:
    image: mariadb:10.4.5-bionic
    container_name: wordpress_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: ${データベースのパスワード}
    volumes:
      - /var/lib/mysql:/var/lib/mysql
      - ./mysql/my.conf:/etc/mysql/my.conf


  webapp_dev:
    container_name: webapp_dev
    image: webapp_dev
    build:
      context: ./webapp_dev
      dockerfile: Dockerfile
      args:
        ROOT_PSWD: "${開発用コンテナのROOTパスワード}"
        USER_NAME: "${開発用コンテナのユーザ名}"
        USER_PSWD: "${開発用コンテナのパスワード}"
    privileged: true
    restart: always
    ports:
      - "${VPNローカルIP}:${開発用コンテナSSHポート}:${開発用コンテナSSHポート}"
      - "${VPNローカルIP}:${開発用コンテナWEBポート}:3000"
    depends_on:
       - wordpress
    command: ["/sbin/init"]

volumes:
  certs:

nginxコンテナ

インターネット公開用のneginxコンテナを作成します。

  • ドメイン:Port80 → Port443にリダイレクト(デフォルト)
  • ドメイン:Port443 → 公開用webappコンテナにリダイレクト

シンプルな構成なのでnginxイメージそのまま使えます。つまりDockerfileは不要です。

nginx.conf

httpでhttpsにリダイレクト、httpsでwebappコンテナのExpressにリダイレクトします。
(参考にさせて頂きました: NginxでのSSL設定の細かい意味

/container/nginx/nginx.conf
user nginx nginx;
worker_processes  3;
worker_cpu_affinity 001 010 100;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
  multi_accept off;
  worker_connections  1024;
  use epoll;
}
http {
  include           mime.types;
  default_type      application/octet-stream;
  error_log /var/log/nginx/error.log;
  access_log  /var/log/nginx/access.log;

  server_tokens     off;
  server_name_in_redirect off;
  port_in_redirect  off;

  sendfile          on;
  tcp_nopush      on;

  keepalive_timeout 5;
  gzip_static       on;
  gzip              on;
  gzip_http_version 1.0;
  gzip_vary         on;
  gzip_comp_level   2;
  gzip_types        text/plain text/xml text/css text/javascript
                    application/xhtml+xml application/xml
                    application/rss+xml application/atom_xml
                    application/javascript application/x-javascript
                    application/x-httpd-php;
  gzip_disable      "MSIE [1-6]\.";

  proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:32m max_size=512m inactive=1d;
  proxy_temp_path   /var/tmp/nginx;
  proxy_cache_key   "$scheme://$host$request_uri";
  proxy_set_header  Host               $host;
  proxy_set_header  X-Real-IP          $remote_addr;
  proxy_set_header  X-Forwarded-Host   $host;
  proxy_set_header  X-Forwarded-Server $host;
  proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header  Accept-Encoding    "";
  proxy_connect_timeout 5;
  proxy_send_timeout 10;
  proxy_read_timeout 120;
  proxy_hide_header X-Pingback;
  proxy_hide_header X-Powered-By;
  proxy_hide_header Etag;
  proxy_hide_header Vary;
  proxy_cache_use_stale timeout invalid_header http_500 http_502 http_503 http_504;
  proxy_cache_lock on;
  proxy_cache_lock_timeout 5s;

  server {
    listen 80 default_server;
    server_name ${ドメイン名};
    return 301 https://$host$request_uri;
  }
  server {
    listen 443 ssl http2;
    server_name ${ドメイン名};
    charset UTF-8;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/ge-no.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ge-no.com/privkey.pem;

    location / {
      proxy_pass https://wordpress:80/;
      proxy_redirect default;
    }
  }
}

certbotコンテナ

さきほどDLしたものそのままでOKです。Dockerfileは不要です。

webappコンテナ

インターネットに公開するNuxt.jsアプリのコンテナです。
ビルド時にnuxt環境をととのえておきます。

Dockerfile
FROM node:12.4.0-alpine

WORKDIR /webapp

ENV LANG C.UTF-8
ENV TZ Asia/Tokyo

RUN apk update && \
    apk add git && \
    npm install -g npm && \
    npm install -g yarn && \
    npm install -g nuxt

wordpressコンテナ

wordpress+wordpressAPIが動作するだけのコンテナです。Dockerfileは不要です。
wordpressイメージは各種バージョンのほかにも、apacheいり、php-fpm版などもあります。今回はバックエンドとして使うためphp-fpmがほしいところではありますが、編集画面にアクセスするのにnginx側で設定するのも面倒なので、素直にapache版を使用しました。CLIを使用してセットアップできればよりかっこよさそうですが、ディレクトリまるまる外部化したおかげもあり、Wordpressのセットアップはコンテナが再起動しても保持されるので、初回のみブラウザからアクセスして設定するところは妥協します。

mariadbコンテナ

Oracleはイヤなので wordpress用mariadbです。Dockerfileは不要です。
my.confはUTF-8の設定と、イメージを適時分割するように指定したのみです。

my.conf

my.conf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

symbolic-links=0
character-set-server=utf8
default_authentication_plugin = mysql_native_password

innodb_data_file_path=ibdata1:1G
innodb_file_per_table

!includedir /etc/mysql/conf.d/

webapp_devコンテナ

webappコンテナ用のアプリを開発する場所です。

Dockerfile
FROM centos:centos7.6.1810

ARG ROOT_PSWD
ARG USER_NAME
ARG USER_PSWD

RUN yum -y update && yum clean all && \
    yum -y install epel-release openssh-server sudo git

RUN echo "root:$ROOT_PSWD" |chpasswd
RUN useradd $USER_NAME
RUN echo "$USER_NAME:$USER_PSWD" |chpasswd
RUN echo "$USER_NAME  ALL=(ALL)  ALL" >> /etc/sudoers

RUN curl -sL https://rpm.nodesource.com/setup_11.x | bash -
RUN yum -y install nodejs yarn && \
    npm install -g yarn

RUN mkdir /home/$USER_NAME/.ssh && \
    chmod 700 /home/$USER_NAME/.ssh && \
    chown $USER_NAME /home/$USER_NAME/.ssh/ && \
    /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N ''

COPY sshd.conf /etc/ssh/sshd_config
COPY id_rsa.pub /home/$USER_NAME/.ssh/authorized_keys
COPY startup_nuxt.sh /home/$USER_NAME/startup_nuxt.sh

RUN chown $USER_NAME /home/$USER_NAME/.ssh/authorized_keys && \
    chown $USER_NAME /home/$USER_NAME/startup_nuxt.sh

WORKDIR /home/$USER_NAME
sshd.conf
Protocol 2
Port ${開発用コンテナ用SSHポート}
ListenAddress 0.0.0.0

SyslogFacility AUTHPRIV
PermitRootLogin no
PubKeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UsePrivilegeSeparation sandbox

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

Subsystem sftp /usr/libexec/openssh/sftp-server
id_rsa.pub
(RSA公開鍵)
startup_nuxt.sh
#!/bin/bash
## startup_nuxt_dev.sh
set -x

readonly REPO_NAME="${プロジェクト名}"
readonly REPO_URL="${Githubのトークン+URL}"
readonly GIT_MAIL="${Gitするときのmailアドレス}"
readonly GIT_USER="${Gitするときのユーザ名}"

git clone $REPO_URL
git config --global user.email "$GIT_MAIL"
git config --global user.name "$GIT_USER"
cd $REPO_NAME
yarn install
npm run dev

ビルドと起動

やっと完成しました!では実行していきましょう。
docker-compose.ymlを設置したディレクトリで

ssh
docker-compose build

なにごともなければ、エラーが出ずに終了するはずです

ssh
docker-compose up

かっこよさげなインジケータとともに起動がはじまります。
初回はかなり時間がかかりますが、2回目からはそこそこ高速です。

Wordpress初期設定

VPN接続し、http://192.168.1.254:3080などでwordpressコンテナに直接続すればWordpress初期設定画面が表示されるはずです。
適当に設定した後、WP APIのプラグインをインストールします。

  • wordpress初期セットアップ
  • [WP REST API Controller]プラグインのインストール
  • [パーマリンク設定] を [数字ベース] に変更
  • http://192.168.1.254:3000/wp-json/wp/v2/postsなどにアクセスしJSONが見れることを確認

その他拡張エディタなどお好みがあれば追加してください。

開発環境初期設定

Nuxtでプロジェクトを作成しましょう。
git push します

コンテナ群再起動

これですべてのファイルがそろったはずです。コンテナを終了し、再度起動します

ssh
[user01@hostname ~]# docker-compose down
[user01@hostname ~]# docker-compose up -d #-dでバックグラウンド実行

動作確認

Webアクセス

しばらくして起動したころになったら、Webアクセスして各種コンテナ内サービスがみれるかを確認します

  • グローバルアドレスでhttpへアクセスし、httpsへ転送されてNuxtの開始ページがみれる
  • グローバルアドレスでhttpsへアクセスし、Nuxtの開始ページがみれる
  • VPNローカルアドレスでhttpへアクセスし、wordpressがみれる
  • VPNローカルアドレスでhttpへアクセスし、開発用コンテナのNuxtの開始ページがみれる

Wordpress接続確認

コンテナ内部で他コンテナの情報がとれるかを確認します

ssh
[user01@hostname ~]# docker exec -it webapp_dev bash
[root@webapp_dev]# curl http://wordpress:80/wp-json/wp/v2/posts

WordpressのHello World記事のJSONとかが取得できていればOKです

VSCodeからssh

  • VSCodeにRemoteSSHエクステンションをインストール
  • settingから接続configを記述
  • 接続

何度かパスフレーズを聞かれるので入力します。SSH Agentの警告がでた場合、いれてもいいですし無しでもできます。

SSH認証鍵更新

期限に余裕があるので更新はスキップされますが、動作していればOKです。

ssh
[user01@hostname ~]# docker run --rm -p 80 -v "/etc/letsencrypt:/etc/letsencrypt" certbot/certbot renew --force-renewal --standalone --agree-tos

この作業でつかう確認コマンド集

ssh
#コンテナをすべて停止する
docker-compose down

#コンテナイメージ一覧
docker image ls

#稼働中コンテナ一覧
docker ps

#コンテナ内のログ
docker logs ${コンテナ名}

よくあるエラー

コンテナが起動しない(ポートアサインエラー)

コンテナのPortsに外部IPアドレスまで指定した場合、コンテナ起動時にそのIFが存在していないと起動できないようです。portsに仮想IF/IPを指定した場合、仮想IFが存在する状態で(VPN接続するなど)docker-compose upする必要があります

mysqlでmysql_updateしろというログがでている

mariadbでは最新版でも出なかったのですが、mysqlを使ってみた時に遭遇しました。
mysql_upgrade -u ${mariasqlのユーザ} -p${mariadbのパスワード} を実行してください
コンテナ起動時ではなく、イメージがある限り1度実行すれば大丈夫なようです。

nginxの対象ポートじゃないのに勝手にhttpsに転送される

ChromeかFirefoxを使用している場合、ブラウザ側の挙動として、一度httpsアクセスしたサイトは強制的にhttpsにリダイレクトします。リセットしてからアクセスしてください。このへんのテストはEdgeちゃんが唯一輝く場面かと思います・・・。

wordpressがみれない

wordpressは初期設定した際にいろいろ自動でやってくれるので、一度ドメイン側からwordpressにアクセスして初期設定をしてしまうとIPアドレス直打ちではみれなくなったります。wordpresのディレクトリとDBイメージを削除してから再度実行しましょう

npm run devやnpm buildができない

nuxtプロジェクト開始時の設定でnpmにした場合は、npmで、yarnにした場合はyarn startにしてください

Teraterm等ではsshできるのにVSCodeでsshできない

C:\Users\${USERNAME}\.ssh\known_hostsにゴミがのこっている可能性があります。中身をすべて削除してください(ファイルは消さないでください)

さいごに?

おれたちはようやくのぼりはじめたばかりだからな・・・このはてしなく遠いコンテナ坂をよ・・・。

ということで、コンテナ間通信あり、永続化あり、専用コンテナあり、ほぼVMコンテナありと、一通りすべて体験できる地獄コンテナ群でとても勉強になりました。
dockerについてはむかし「ガチなドッカーイメージをプルっちまうとマジ1発でコンテナードな環境がよォ!」てきなかんじのことを聞いたので、じぶんのような雑魚でもセキュアな環境が一発でポワワ・・・な魔法アイテムだと思っていたのですが、使ってみると「結局NWは複雑になるし相変わらずconfをショドーする力いるしDockerfileもほぼshellだしshell力がさらに重要なんじゃ・・・?」とかおもわなくもないです。

ゆくゆくはDockerネットワークの挙動を把握しつつ、環境変数も活かして各種confも定数なしで記述したいところです。

次回はやっとNuxt.jsをさわってみます。ながかった・・・。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【メモ】dockerでコンテナにログインする

忘れがちなのでメモ

$ docker exec -it コンテナ名 bash
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Fargate の「タスクのスケジューリング」で定時バッチ用コンテナを実行する

概要

  • AWS Fargate には、スケジュールルールに従ってタスクを実行できる機能がある。
  • スケジュールルールは次の2通りある。どちらもスケジュールルールに従って毎回新しいコンテナが起動して終了する。
    • 固定された間隔で実行
    • Cron式
  • この「タスクのスケジューリング」機能を使って、これまで EC2 上の crond で起動して実行していたバッチ処理を、コンテナ化して AWS Fargate に移行してみる。

今回 Fargate に移行するバッチの概要

  • Elasticsearch の インデックスを1日1回削除するバッチ。

    • サーバのアクセスログを Fluentd で Elasticsearch に送ってKibanaで可視化している。1日分のアクセスログを1つのインデックスに格納していて、30日前のインデックスファイルを削除するバッチを1日1回実行している。
  • バッチは bash スクリプトでこんな感じで書いている。

#!/bin/bash
ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com"
INDEXNAME=(
    "fastly-accesslog-"
    "Varnish-accesslog-"
    "nginx-accesslog-"
)
DATA=`date -d '30 days ago' +"%Y-%m-%d"`
for INDEX in ${INDEXNAME[@]}; do
  echo "Delete: ${INDEX}${DATA}"
  curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA}
  echo -e "\n"
done
echo "Execution Result"
curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort

バッチ処理を行うコンテナの Dockerfile 作成

FROM alpine:latest
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata
RUN apk --no-cache add coreutils bash bash-completion curl
COPY del-index.sh /del-index.sh
RUN chmod u+x /del-index.sh
CMD /bin/bash /del-index.sh

Dockerfileの簡単な説明

軽量な Alpine Linux を使う

  • いろいろ削がれて軽量になっている。
  • 今回のシェルスクリプトを実行するために必要なものを追加する。

Alpine Linux の timezone を JST に設定

dataコマンド

  • Alpine Linux のdataコマンドは、「date -d '30 days ago'」 を解釈してくれない。 なので、GNU coreutils の date をインストールする。
  • Dockerfile 追加設定
    RUN apk --no-cache add coreutils
    

bash

  • Alpine Linux のデフォルトのシェルは sh なので、配列が使えない。bashで書いた次の部分でエラーになってしまう。
INDEXNAME=(
    "fastly-accesslog-"
    "Varnish-accesslog-"
    "nginx-accesslog-"
)
  • シェルスクリプトを sh 用に書き直すのは面倒なので、bashを入れてしまう。
  • Dockerfile 追加設定
    RUN apk --no-cache add bash bash-completion
    

curl

  • 今回のバッチは、curl で Elasticsearch の API を叩くので、curl をインストールする。
  • Dockerfile 追加設定
    RUN apk --no-cache add curl
    

bashスクリプト本体

  • 今回は del-index.sh という名前で、上記のシェルスクリプトのファイルを作成する。これを Dockerfile と同じディレクトリに置く。
  • docker build 時に del-index.sh ファイルを docker イメージの / にコピーして、実行権限を付与する。
  • コンテナ起動時に、この del-index.sh を実行する。
  • Dockerfile 追加設定
    COPY del-index.sh /del-index.sh
    RUN chmod u+x /del-index.sh
    CMD /bin/bash /del-index.sh
    

DockerイメージをECRへプッシュして、Fargete の設定を行う

Fargate タスクのスケジューリング 設定

  • Amazon ECS クラスター設定画面 ⇒ タスクのスケジューリング ⇒ 作成
    01.png

  • スケジュールルール設定
    今回は、毎日6時に実行するので、Cron 式は cron(0 6 * * ? *)
    02.png

  • ターゲット設定
    起動タイプで「FARGATE」を選択する。
    タスク定義で上記で作成したものを選択する。
    03.png

  • VPC とセキュリティグループ
    AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考

  • 作成
    以上で、毎朝 06:00 に Elasticsearch のインデックスを削除するコンテナが起動して、処理を終えたらコンテナが消滅する。
    実行ログは CloudWatch ログに送られる。

おまけ

Slack にも実行結果を送りたい場合は、del-index.sh に Slack へ送る設定を追加する

#!/bin/bash
ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com"
INDEXNAME=(
    "fastly-accesslog-"
    "Varnish-accesslog-"
    "nginx-accesslog-"
)
DATA=`date -d '30 days ago' +"%Y-%m-%d"`

exec 3>&1
exec > /exec.log
echo "Elasticsearch delete index"
for INDEX in ${INDEXNAME[@]}; do
    echo "Delete Index: ${INDEX}${DATA}"
    curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA}
    echo -e "\n"
done
echo "curl -X GET https://${ESDOMAIN}/_aliases?pretty"
curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort
exec 1>&3

sed -i -e 's/\"//g' /exec.log

channel="hoge"
username="Container"
text="Elasticsearch delete index"
color="gray"
message=`cat /exec.log`
attachments="
{
    \"color\":\"${color}\",
    \"text\": \"${message}\"
}"
emoji=':envelope:'
url="https://hooks.slack.com/services/hoge/hogehoge"
payload="payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"text\": \"${text}\", \"attachments\":[${attachments}] , \"icon_emoji\": \"${emoji}\"}"
curl -s -m 5 -d "${payload}" $url

exit
  • 標準出力をファイルへ出力する設定
    exec 3>&1
    exec > /exec.log
    〜
    exec 1>&3
    
  • 実行結果ファイルからダブルクォーテーションを除外(Slack送信時に invalid_payload エラーとなるため)
    sed -i -e 's/\"//g' /exec.log

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Fargate の「タスクのスケジューリング」でバッチ用コンテナを定時実行する

概要

  • AWS Fargate には、スケジュールルールに従ってタスクを実行できる機能がある。
  • スケジュールルールは次の2通りある。どちらもスケジュールルールに従って毎回新しいコンテナが起動して終了する。
    • 固定された間隔で実行
    • Cron式
  • この「タスクのスケジューリング」機能を使って、これまで EC2 上の crond で起動して実行していたバッチ処理を、コンテナ化して AWS Fargate に移行してみる。

今回 Fargate に移行するバッチの概要

  • Elasticsearch の インデックスを1日1回削除するバッチ。

    • サーバのアクセスログを Fluentd で Elasticsearch に送ってKibanaで可視化している。1日分のアクセスログを1つのインデックスに格納していて、30日前のインデックスファイルを削除するバッチを1日1回実行している。
  • バッチは bash スクリプトでこんな感じで書いている。

#!/bin/bash
ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com"
INDEXNAME=(
    "fastly-accesslog-"
    "varnish-accesslog-"
    "nginx-accesslog-"
)
DATA=`date -d '30 days ago' +"%Y-%m-%d"`
for INDEX in ${INDEXNAME[@]}; do
  echo "Delete: ${INDEX}${DATA}"
  curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA}
  echo -e "\n"
done
echo "Execution Result"
curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort

バッチ処理を行うコンテナの Dockerfile 作成

FROM alpine:latest
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata
RUN apk --no-cache add coreutils bash bash-completion curl
COPY del-index.sh /del-index.sh
RUN chmod u+x /del-index.sh
CMD /bin/bash /del-index.sh

Dockerfileの簡単な説明

軽量な Alpine Linux を使う

  • いろいろ削がれて軽量になっている。
  • 今回のシェルスクリプトを実行するために必要なものを追加する。

Alpine Linux の timezone を JST に設定

dataコマンド

  • Alpine Linux のdataコマンドは、「date -d '30 days ago'」 を解釈してくれない。 なので、GNU coreutils の date をインストールする。
  • Dockerfile 追加設定
    RUN apk --no-cache add coreutils
    

bash

  • Alpine Linux のデフォルトのシェルは sh なので、配列が使えない。bashで書いた次の部分でエラーになってしまう。
INDEXNAME=(
    "fastly-accesslog-"
    "Varnish-accesslog-"
    "nginx-accesslog-"
)
  • シェルスクリプトを sh 用に書き直すのは面倒なので、bashを入れてしまう。
  • Dockerfile 追加設定
    RUN apk --no-cache add bash bash-completion
    

curl

  • 今回のバッチは、curl で Elasticsearch の API を叩くので、curl をインストールする。
  • Dockerfile 追加設定
    RUN apk --no-cache add curl
    

bashスクリプト本体

  • 今回は del-index.sh という名前で、上記のシェルスクリプトのファイルを作成する。これを Dockerfile と同じディレクトリに置く。
  • docker build 時に del-index.sh ファイルを docker イメージの / にコピーして、実行権限を付与する。
  • コンテナ起動時に、この del-index.sh を実行する。
  • Dockerfile 追加設定
    COPY del-index.sh /del-index.sh
    RUN chmod u+x /del-index.sh
    CMD /bin/bash /del-index.sh
    

DockerイメージをECRへプッシュして、Fargete の設定を行う

Fargate タスクのスケジューリング 設定

Fargate タスクのスケジューリングの概要

タスクのスケジューリング設定例

  • Amazon ECS クラスター設定画面 ⇒ タスクのスケジューリング ⇒ 作成
    01.png

  • スケジュールルール設定
    今回は、毎日午前 6:00 (JST) に実行したいので、Cron 式は cron(0 21 * * ? *)

04.png

  • ターゲット設定
    起動タイプで「FARGATE」を選択する。
    タスク定義で上記で作成したものを選択する。
    03.png

  • VPC とセキュリティグループ
    AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考

  • 作成
    以上で、毎日午前 6:00 (JST) に Elasticsearch のインデックスを削除するコンテナが起動して、処理を終えたらコンテナが消滅する。
    実行ログは CloudWatch ログに送られる。

おまけ

Slack にも実行結果を送りたい場合は、del-index.sh に Slack へ送る設定を追加する

#!/bin/bash
ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com"
INDEXNAME=(
    "fastly-accesslog-"
    "Varnish-accesslog-"
    "nginx-accesslog-"
)
DATA=`date -d '30 days ago' +"%Y-%m-%d"`

exec 3>&1
exec > /exec.log
echo "Elasticsearch delete index"
for INDEX in ${INDEXNAME[@]}; do
    echo "Delete Index: ${INDEX}${DATA}"
    curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA}
    echo -e "\n"
done
echo "curl -X GET https://${ESDOMAIN}/_aliases?pretty"
curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort
exec 1>&3

sed -i -e 's/\"//g' /exec.log

channel="hoge"
username="Container"
text="Elasticsearch delete index"
color="gray"
message=`cat /exec.log`
attachments="
{
    \"color\":\"${color}\",
    \"text\": \"${message}\"
}"
emoji=':envelope:'
url="https://hooks.slack.com/services/hoge/hogehoge"
payload="payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"text\": \"${text}\", \"attachments\":[${attachments}] , \"icon_emoji\": \"${emoji}\"}"
curl -s -m 5 -d "${payload}" $url

exit
  • 標準出力をファイルへ出力する設定
    exec 3>&1
    exec > /exec.log
    〜
    exec 1>&3
    
  • 実行結果ファイルからダブルクォーテーションを除外(Slack送信時に invalid_payload エラーとなるため)
    sed -i -e 's/\"//g' /exec.log

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker-lambdaで関数連続実行をワンコンテナで

ワンコンテナでlambada関数を連続実行したい

lambci/docker-lambdaでローカルテストする際に、下記のように普通に関数を連続実行すると...

docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 sample_function.lambda_handler '{"Hello":"World"}'
docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 sample_function.lambda_handler '{"Hello":"World"}'

下記のようにコンテナが別々に生成される。(※docker container statsの結果を表示↓↓)
コメント 2019-06-25 001242.png

これをワンコンテナでやりたい場合は、下記のようにentrypointを上書きしてやれば可能。

docker run --rm -v "$PWD":/var/task --entrypoint "" lambci/lambda:python3.6 bash -c " \
   python3.6 /var/runtime/awslambda/bootstrap.py sample_function.lambda_handler '{\"Hello\":\"World\"}' & \
   python3.6 /var/runtime/awslambda/bootstrap.py sample_function.lambda_handler '{\"Hello\":\"World\"}' \
"

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む