ksaitoの日記

日々試したことの覚え書き

docker buildkit

dockerのbuildkitを使ってみました。 試した環境は、下記の環境で、手持ちのDockerfileをビルドして、時間とサイズを比較してみました。 $ docker --version Docker version 18.06.0-ce, build 0ffa825 $ 従来のビルド $ time docker build -t test --no-cac…

Amazon Linux 2のdocker環境をすばやく立ち上げる

EC2のLaunch Templatesを使ってAmazon Linux 2のdocker環境をすばやく立ち上げます。 設定は、次の項目です。 AMIにAmazon Linux 2の最新のAMI ID インスタンスタイプ ユーザデータ IAMロール タグ ユーザデータは、下記のような感じです。 $ curl http://16…

githubのpull requestをローカルにチェックアウトする

githubのpull requestをローカルにチェックアウトします。 オフシャルの手順は、下記のリンクです。 github.com maven-scmの#31のpull requestをチェックアウトしました。 最初にgithubでmaven-scmのリポジトリをforkします。 その後で、次のような手順で#31…

docker for macのdocker0

docker for macのdocker0が見当たりませんでした。 $ ifconfig docker0 ifconfig: interface docker0 does not exist docker for macのハイパーバイザは、modyで、接続するにはscreenを使います。 $ screen ~/Library/Containers/com.docker.docker/Data/com…

Jenkinsプラグインのデバッグ

Jenkinsのプラグインのデバッグの手順です。 ソースコードの取得 今回は、github-branch-source-pluginでやってみました。 git clone https://github.com/jenkinsci/github-branch-source-plugin cd github-branch-source-plugin テスト実行 下記のコマンド…

tomcatのオフシャルコンテナでスレッドダンプを取る

Tomcatのオフシャルコンテナのソースをcloneします。 git clone https://github.com/docker-library/tomcat.git cd tomcat/8.0/jre8 オフシャルコンテナのベースは、JREなのでJDKに変更します。 $ git diff diff --git a/8.0/jre8/Dockerfile b/8.0/jre8/Doc…

dockerコンテナでnginxを起動する。

dockerのubuntuコンテナで、手軽にnginxを動かすコマンドです。 /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

gitリポジトリ全体でgrepする

gitリポジトリの過去のコミット含めて、全てのファイルに対してgrepします。 git rev-list --all | xargs git grep '文字列'

Ubuntuのopensshコンパイル

/etc/apt/sources.listの下記の行を追加します。 deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted 次のコマンドでソースパッケージを取得します。 apt update apt-get source openssh 次のコマンドで、ビルドに必要な準備をします。 cd o…

aws cliの結果をタグの値で絞り込むquery

aws cliの結果をタグの値で絞り込むqueryです。 例えば、Security Groupの中からNameタグに特定の値が設定されたデータを絞り込むには、下記のようにします。 aws ec2 describe-security-groups --group-ids <SecurityGroup ID> --query 'SecurityGroups[?Tags[?Key==`Name`].V</securitygroup>…

Kubernetes-dashboardに接続する

Kubernetes-dashboardをデプロイしましたが、接続するのにちょっと苦労しました。 リモートからは接続できない マニュアル通りkubectl proxyを実行したところlocalhost以外からは接続できませんでした。 GUIのLinuxがあれば、これでも良いのですけどね。 $ k…

シェルでタイムアウトを設けて何かを待つ処理をワンライナーで書く

シェルでタイムアウトを設けて何かを待つ処理をワンライナーで書いてみました。 アプリケーションサーバの起動のあとに何か実行する必要がある場合、起動の完了を待つ必要があります。 同期呼び出しやコールバックなどが設定できない場合は、ログやポートを…

vaultのオフシャルコンテナは、ホストOSがUbuntu 16.04 LTXでは動かない

vaultのオフシャルコンテナの0.9.5を起動すると下記のエラーがでました。 Attaching to vault vault | Couldn't start vault with IPC_LOCK. Disabling IPC_LOCK, please use --privileged or --cap-add IPC_LOCK vault | su-exec: vault: Text file busy --…

git commitできない

なぜだか、2つ以上のファイルをコミットしようとすると下記のようなエラーが出ます... $ git commit fatal: ambiguous argument 'Makefile README.md': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like…

git fsckでdanglingが出る場合の対処

git fsckでdanglingが出る場合の対処です。 全て消したい場合は、下記を実行します。 git reflog expire --expire=now --all git gc --prune=now

dockerのクラスタとスケジューラ

AWS ECS、AWS Fargate、Docker Swarm、Kubernetesの違いについての覚書です。 Kubernetesの人たちがAWS ECSよりKubernetesのほうが賢いといっていたり、Docker純正のSwarmよりKubernetesが注目されている理由が何となく納得できました。 AWS ECS ECSは、Auto…

シェルでファイルの差分があった場合に処理を実行したい。

シェルでファイルの差分があった場合のみ処理を実行したいユースケースがあります。 diffで差分は、検出できますが終了ステータスは0以外が返されます。 このステータスは、異常終了ではなく、差分があるか・ないかを判定したいだけなので無視して欲しいです…

Dockerのお掃除

Dockerの使っていないオブジェクトを掃除するための手順です。 イメージ タグのついていないイメージを削除します。 docker rmi `docker images -qf dangling=true` コンテナ 停止しているコンテナを削除します。 docker rm `docker ps -a -q` ボリューム コ…

bosh-cliのインストール

bosh-cliのインストール手順です。 bosh.ioからプラットフォームに応じたバイナリのURLを確認して、下記の一連のコマンドでインストールできます。 sudo curl -o /usr/local/bin/bosh-cli-2.0.45-linux-amd64 https://s3.amazonaws.com/bosh-cli-artifacts/b…

AWS Cloud9

AWS Cloud9をsshでインストールする場合に必要なパッケージです。 $ apt-get install nodejs-legacy

bashのretry

下記のコードを$HOME/.bashrcに追加するとコマンドが失敗した場合に、一定時間待って、指定した回数リトライするretry関数を追加できます。 オリジナルは、ここのソースを参考に改良しました。(コメントしようと思いましたが、50以上の評価がないとコメン…

concourseを使ったビルド

concourse.ioは、日本語情報とても少ないです。 とてもクールなCIツールです。 パイプライン、ジョブ、リソース、タスクといった考え方があり、CI/CDのパイプラインを構築できますが、実装しようと思うと意外と手が止まります。 パイプラインの起点は、S3やg…

macOS High Sierraのアップグレードに失敗

MacBook ProにmacOS High Sierraのアップグレード通知がきたのでアップグレードしたところ、見事に失敗しました。 1時間ほどアップグレード処理が続いた後にWi-Fiを選択する画面が表示されました。Wi-Fiを選択したところ、しばらくして画面がブラックアウト…

Jenkins-cli

Jenkinsをコマンドラインから操作することでコード化することができます。 Jenkinsをコマンドで操作するには、Jenkins-cliに付属しているjenkins-cli.jarを使います。 Jenkins-cliの設定 最初にjenkins-cli.jarファイルのダウンロードとAPIトークンを作成す…

JenkinsfileとMakefileの統合

Jenkinsfileをメンテナンスし続ける自信がないので、Jenkinsfileをパイプラインの定義のみで使うようにしました。 定義したパイプラインの各ステップは、Makefileのターゲットに対応させるとメンテナンスし易くなります。 パイプラインの定義 パイプラインは…

Docker for macでコンテナの中からMacのIPを知る方法

I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOSTに書かれているdocker.for.mac.localhostで、下記のようにコンテナの中からMacのIPアドレスを引くことができます。 $ nmap -Pn -p 8080 docker.for.mac.localhost Starting Nmap 7.40 ( https:/…

githubの二要素認証を設定するとpush時に認証エラーになる

githubで二要素認証を設定するとpush時に認証エラーになります。 $ git push origin develop Username for 'https://github.com': *** Password for 'https://***@github.com': remote: Invalid username or password. fatal: Authentication failed for 'ht…

ファイルの作成と削除を待つ

シェルでファイルの作成と削除を待つのにinotify-toolsを使います。 インストール aptでインストールします。 $ sudo apt install -y inotify-tools ファイルの作成と削除を待つ waitfile.shに指定した引数のファイルが作成されるのをfilewaitで待ちます。 …

Raspberry pi 3

Raspberry pi 3のOSイメージをSDカードに約手順です。 環境 MacBook Pro 2015 OS X EI Capitan 10.11.6 Raspberry pi 3 Model B TOSHIBA microSDHCカード 16GB Class10 UHS-I対応 (最大転送速度40MB/s) 5年保証 (国内正規品) MSDAR40N16G出版社/メーカー: 東…

コンテナとファイルのやりとり

docker cpコマンドでも良いのですが、ディレクトリごと出し入れしたい場合には、tarコマンドを使った方が便利です。 tarの-Cオプオションは、tarを実行する前に指定されたディレクトリに移動します。 tar -C /tmp -cf - logは、(cd /tmp; tar cf - log)と同…