2017年12月13日水曜日

OpenSSL で CA と証明書を作る

立てようとしている GitLab に HTTPS 接続するために、独自証明書を作る。

環境

  • OS: Debian strech
  • openssl インストール済み

Docker をインストールした Debian9 上で作業をしている。

CA の準備

CA 側でやる作業。

CA 用のディレクトリを作成する

$ # CA 用の設定を編集
$ # '[ CA_default ]' の 'dir = ./demoCA' を 'dir = /var/ssl/ca' に変更
$ # '[ CA_default ]' の 'private_key = $dir/private/cakey.pem' を 'private_key = $dir/private/ca.key' に変更
$ # '[ CA_default ]' の 'certificate = $dir/cacert.pem' を 'private_key = $dir/ca.cert' に変更
$ sudo vim /etc/ssl/openssl.cnf
$ # CA のディレクトリ構成を作成
$ sudo mkdir -p /var/ssl/ca/certs
$ sudo mkdir -p /var/ssl/ca/private
$ sudo mkdir -p /var/ssl/ca/crl
$ sudo mkdir -p /var/ssl/ca/newcerts
$ sudo chmod 700 /var/ssl/ca/private
$ # シリアル初期化
$ echo "01" | sudo tee -a /var/ssl/ca/serial
$ # インデックス初期化
$ sudo touch /var/ssl/ca/index.txt

CA の鍵と証明書を作成

$ # CA 用秘密鍵作成
$ sudo openssl genrsa -out /var/ssl/ca/private/ca.key 2048
$ # CA 証明書要求作成
$ sudo openssl req -new -key /var/ssl/ca/private/ca.key -out /var/ssl/ca/ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:oyasirazu.dip.jp
Email Address []:mikoto2000@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
$ # CA 証明書作成
$ sudo openssl x509 -req -in /var/ssl/ca/ca.csr -signkey /var/ssl/ca/private/ca.key -out /var/ssl/ca/ca.cert
Signature ok
subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd, CN = oyasirazu.dip.jp, emailAddress = mikoto2000@gmail.com
Getting Private key

クライアントの鍵と証明書要求を作成

クライアント側でやる作業。

$ # 鍵作成用ディレクトリ作成
$ mkdir keys
$ cd keys
$ # クライアント秘密鍵作成
$ openssl genrsa -out server_01.key 2048
$ # クライアント証明書要求作成
$ openssl req -new -key ./server_01.key -out server_01.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:oyasirazu.dip.jp
Email Address []:mikoto2000@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

クライアント証明書作成

CA 側でやる作業。今回は面倒なので引き続きクライアントように作ったディレクトリの中で実行している。

$ # クライアント証明書作成
$ sudo openssl ca -out server_01.crt -infiles server_01.csr
Using configuration from /usr/lib/ssl/openssl.cnf
Can't open /var/ssl/ca/index.txt.attr for reading, No such file or directory
140386359203072:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:74:fopen('/var/ssl/ca/index.txt.attr','r')
140386359203072:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:81:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Dec 12 16:10:51 2017 GMT
            Not After : Dec 12 16:10:51 2018 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Some-State
            organizationName          = Internet Widgits Pty Ltd
            commonName                = oyasirazu.dip.jp
            emailAddress              = mikoto2000@gmail.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                21:94:0F:52:71:1F:5C:7F:47:76:17:C4:75:1F:71:C8:7B:5C:24:98
            X509v3 Authority Key Identifier: 
                DirName:/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd/CN=oyasirazu.dip.jp/emailAddress=mikoto2000@gmail.com
                serial:C9:F2:8A:3D:E2:EB:1B:DE

Certificate is to be certified until Dec 12 16:10:51 2018 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

ここまでにできた server_01.keyserver_01.crt を、NGINX settings - GitLab Documentation で指定された場所に突っ込めば HTTPS 接続できるようになっているはず。

Debian9 に Docker をインストールした

基本的に下記ページのコマンドを叩いていくだけ。

Debian9 の公式 apt リポジトリは、docker コマンドがなかったり、 docker-compose が古かったりするみたい。

作業内容

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

以上。

2017年11月4日土曜日

VimConf 2017 感想

VimConf 2017 に行ってきました。 どのセッションも内容が濃く、とても勉強になりました。 (私のレベルだと理解が追い付かないところが多かったですががが)

以下、今自分が特に気になっていることについての情報が得られたのでそのあたりの感想を。

Vim への貢献とか Vim コミュニティの話題

  • Vim, Me and Community
  • ランチトークショー
  • How ordinary Vim user contributed to Vim

Vim コミュニティ強い。 Vim に貢献したい欲高まる。 一つ気になる挙動があったのを思い出したので、vim-jp で質問しようと思いました。 あと、vim-jp の issue ちょくちょくウォッチするようにしたい。

Vim の色の話

  • Creating your lovely color scheme
  • The new syntax highlighter for Vim

ハイライトとかカラースキーマの仕組みとか。 自作プラグインのバッファのハイライトをどうにかしたいと思いつつ挫折していたのだけれど、 スライド見て復習しながらやったり、iro.vim 試してみたりしつつ再挑戦したいと思いました。

非同期処理の話

  • vim, neovim で気同期処理(job)を共通して書けるようになるライブラリがいまレビュー待ち

多分これ「Backport System.Job and System.Process.Job by lambdalisue · Pull Request #513 · vim-jp/vital.vim」期待。

以下、アクションアイテムメモ。

  • iro.vim を試す
  • gina.vim を試す
  • clever-f を試す
  • 独自ハイライトを付ける方法を勉強する
    • 自作プラグインのイケてないバッファの色を良い感じにする
  • deoplete.nvim を試す
  • 見る
    • http://vimcolors.com
    • http://colorswat.ch
  • 検索 : git bisect
  • 検索 : ripper, Ripper.lex(xxx)

充実した時間で、知識とやる気を充填させていただきました、来年もまた参加させていただきたいです。 VimConf 準備会のスタッフの皆様、お疲れさまでした、そして、ありがとうございました。

2017年10月16日月曜日

各 OS での「関連付けされたアプリケーションで開く」方法

  • Windows : start
  • Mac : open
  • Linux : xdg-open or gnome-open

マルチプラットフォームで「関連付けされたアプリケーションで開く」をやりたい場合は、 Windows, Mac は上記の通り、 Linux は xdg-open をデフォルトとしつつ、コマンドを設定できるようにするのが良いのかな?

参考文献

2017年9月24日日曜日

Sphinx を実行したら、 ERROR: non-ASCII filename not supported on this filesystem encoding 'ANSI_X3.4-1968', skipped. というエラーが出た

結論

aptlocaleslocales-all をインストールし、環境変数 LANGja_JP.UTF-8 を設定。以上。

作業記録

日本語ディレクトリを作ったら、以下のエラーが発生した。

sphinx-build -b html -d build/doctrees   source build/html
Running Sphinx v1.4.9
loading translations [ja]... not available for built-in messages
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
はじめに.rst:: ERROR: non-ASCII filename not supported on this filesystem encoding 'ANSI_X3.4-1968', skipped.
...(略)
/work/source/index.rst:14: WARNING: toctree contains reference to nonexisting document u'\u306f\u3058\u3081\u306b'
...(略)

日本語を含むパスでエラーが起きて、対象のディレクトリを見つけられず、 toctree でそのリンクがが作成されない感じ。

エラーメッセージで検索し、下記箇所が問題の処理だというのがわかった。

いろいろ検索したら、多言語対応に必要なパッケージが無いのが原因だったことがわかった。

そんなわけなので、 Dockerfile に下記 2 行を追加した。

RUN apt-get -y install locales locales-all && apt-get -y clean
ENV LANG=ja_JP.UTF-8

最終的に下記 Dockerfile ができた。

以上。

2017年9月14日木曜日

Ubuntu 17.04 に Sphinx + textlint + prh の環境を整える

目的

前回作った Ubuntu の Docker イメージ をもとに、 sphinx と textlint, prh の環境を整える。

成果物

で、作った Dockerfile がこれ。 オフィシャルの ubuntu:zesty イメージを基にする場合は「apt ミラー設定」は不要。

FROM myubuntu:zesty

# apt ミラー設定
RUN echo "deb http://jp.archive.ubuntu.com/ubuntu/ zesty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://jp.archive.ubuntu.com/ubuntu/ zesty-security main restricted universe multiverse" >> /etc/apt/sources.list

# ベースのアップグレード
RUN apt-get -y update
RUN apt-get -y upgrade && apt-get -y clean

# sphinx 環境構築
RUN apt-get -y install make && apt-get -y clean
RUN apt-get -y install sphinx-common && apt-get -y clean

# nodejs 環境構築
RUN apt-get -y install curl && apt-get -y clean
RUN apt-get -y install gnupg1 gnupg2 && apt-get -y clean
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get -y install -y nodejs && apt-get -y clean

# textlint 環境構築
RUN npm install -g textlint
RUN npm install -g prh
RUN npm install -g textlint-rule-prh

# textlint を rst 対応させるためのもの
RUN apt-get -y install -y python-pip && apt-get -y clean
RUN pip install docutils-ast-writer
RUN npm install -g textlint-plugin-rst

# textlint 結果可視化するための環境構築
RUN apt-get -y install lcov && apt-get -y clean
RUN npm install -g textlint-formatter-lcov

以上。

2017年9月12日火曜日

Debian stretch で Ubuntu 17.04 の Docker イメージを自作する

環境

  • イメージ作成 OS: Debian strech(Hyper-V 上の Debian stretch)
  • イメージインポート OS: Windows 10 Pro

Hyper-V 上の Debian で、debootstrap を使って Ubuntu のルートディレクトリを作成する。

Debian 上での作業

Debian 上での作業。

必要なパッケージのインストール

debootstrap パッケージのインストールのみ。

apt install debootstrap

ルートディレクトリ作成

これも Debian 上での作業。 ルートディレクトリを作って tar で固める。

mkdir ubuntu-zesty
debootstrap zesty ./ubuntu-zesty http://ftp.jaist.ac.jp/pub/Linux/ubuntu/
cd ubuntu-zesty
tar cfv ../ubuntu-zesty.tar .

Windows 上での作業

Windows 上での作業。

Docker へのインポート

作った tar ファイルをどうにかして Windows 上にもってきて、docker import する。

docker import .\ubuntu-zesty.tar ubuntu:latest

番外: Hyper-V で、Windows ホストと Linux ゲストのファイルをやり取りする方法

  1. Windows で共有フォルダを作る
  2. Linux で cifs-utils をインストール
  3. Linux で、「1.」の共有フォルダをマウント
apt install cifs-utils
mkdir share
mount -t cifs -o username=mikoto //PATH.TO.WIN.HOST/tmp share

以上。

参考資料

2017年8月14日月曜日

Windows で terminal と lua を有効にした vim をビルドする

前提環境

  • Windows 10 Pro
  • Msys2 インストール済み
    • 今回の作業はすべて MSYS2 MinGW 64-bit 上で行う

vim.exe, gvim.exe のビルド

if_lua を使いたいので lua のソース準備を含めて実施。 exe 以外は vim80-kaoriya-win64 のものを流用するので、 lua のバージョンは 51 とする。

cd ~/project
git clone -b v5_1_1 https://github.com/lua/lua.git
git clone https://github.com/vim/vim.git
cd vim/src
mingw32-make.exe -f Make_ming.mak GUI=no ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51
mingw32-make.exe -f Make_ming.mak GUI=yes ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51

winpty のビルド

:terminal に必要なバイナリを作成する。

cd ~/project
git clone https://github.com/rprichard/winpty
cd winpty
./configure
make

パッケージング

何をどうすればよいかよくわからないので、 vim80-kaoriya-win64vim.exe, gvim.exe を入れ替えることにする。

cp -a ~/app/vim80-kaoriya-win64 ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/vim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/gvim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/winpty/build/winpty.dll ~/app/vim80-kaoriya-win64-terminal/
cp ~/project/winpty/build/winpty-agent.exe ~/app/vim80-kaoriya-win64-terminal/

これで、 ~/app/vim80-kaoriya-win64-terminalgvim.exe を叩けば terminal 機能付きの gvim が起動する。

以上。

Windows でのビルド方法についての情報

この辺のビルド情報って、ドキュメントのどのあたりに書いてあるんだろうかと思って grep した。 そうすると、 INSTALLpc.txt, terminal.txt に記載されているのが見つかった。なるほど。

INSTALLpc.txt

13. Building with Terminal support
==================================

Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
This uses the included libvterm and winpty.  No extra header files or
libraries are needed for building.  Just set TERMINAL to yes.

E.g. When using MSVC:

    nmake -f Make_mvc.mak TERMINAL=yes

Or when using MinGW (as one line):

    mingw32-make -f Make_mingw.mak TERMINAL=yes

terminal.txt

MS-Windows ~

On MS-Windows winpty is used to make it possible to run all kind of commands.
Obviously, they must be commands that run in a terminal, not open their own
window.

You need the following two files from winpty:

    winpty.dll
    winpty-agent.exe

You can download them from the following page:

    https://github.com/rprichard/winpty

Just put the files somewhere in your PATH.

参考資料

2017年7月21日金曜日

Docker 公式 image の Jenkins に JavaFX プロジェクトのビルドをしてもらうためにやったことメモ

やりたいこと

このプロジェクトを Jenkins にビルドしてほしいのです。

前提条件

この記事には初期設定書いていないけれど、 Install suggested plugins を選択して初期設定を行った。

やったこと

OS へ必要なパッケージをインストール

JavaFX のパッケージが足りないので入れる。

docker-compose exec -u root jenkins /bin/bash
apt update
apt upgrade
apt install openjfx
apt-get clean
exit

Jenkins 全体の設定

環境変数設定

JavaFX を扱うため、 build.gradle に下記のような設定がされている。

compile files(JAVA_HOME + '/jre/lib/ext/jfxrt.jar')

そのため、Jenkins に ORG_GRADLE_PROJECT_JAVA_HOME の環境変数が設定されている必要がある。

設定方法は下記の通り。

  • Jenkinsの管理 -> システムの設定 -> グローバルプロパティ
    • 環境変数のチェックボックスを ON にする
    • 下記 2 つの環境変数を追加
      • キー: JAVA_HOME, 値:/usr/lib/jvm/java-8-openjdk-amd64/
      • キー: ORG_GRADLE_PROJECT_JAVA_HOME, 値:$JAVA_HOME

新しいジョブの作成

ジョブの名前と種類選択

  1. Enter an item name: Yadome
  2. 「フリースタイル・プロジェクトのビルド」を選択
  3. OK

ビルド定義

General

  • GitHub project にチェック
    • Project url: https://github.com/mikoto2000/Yadome

ソースコード管理

  • Git を選択
    • リポジトリ
      • リポジトリURL: https://github.com/mikoto2000/Yadome

ビルド環境

  • 「コンソール出力にタイムスタンプを追加する」にチェック

ビルド

  • Invoke Gradle script
    • 「Make gradlew executable」にチェック
    • Use Gradle Wrapper
      • Wrapper location: ./
      • Tasks: build

ビルド後の処理

Yadome では各種レポートを html 出力しているので、もうそれそのまま Jenkins に取っておいてもらえばいいじゃんという考えで設定。

  1. 成果物を保存
    • 保存するファイル: build/reports/**/*

ビルド結果

こんな感じで、レポートの html 出力を参照できるのでこの辺はとりあえず妥協できるかなと。

統計情報出したくなったら xml 出力にしてきちんとプラグイン設定する感じで。

イメージの作成

ビルドできることを確認したので、 Dockerfile を作ってイメージ作成する。

mkdir -p ~/project/docker/jenkins-with-openjfx
cd ~/project/docker/jenkins-with-openjfx
gvim Dockerfile

■ Dockerfile

FROM jenkins

USER root

RUN apt -y update
RUN apt -y upgrade
RUN apt -y install openjfx
RUN apt-get clean

USER jenkins

そして、 jenkins-with-openjfx という名前でビルドする。

docker build -t jenkins-with-openjfx .

で、 jenkins の docker-compose.yml をもとに、with openjfx のファイルを作る。

■ docker-compose.yml

version: '3'
services:
    jenkins:
        image: jenkins-with-openjfx
        volumes:
            - jenkins_home:/var/jenkins_home
        ports:
            - "8080:8080"
            - "50000:50000"
        environment:
            - JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties"
        entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
volumes:
    jenkins_home:
        external: true

これで、このディレクトリで docker-compose up -d jenkins すれば、Yadome プロジェクトのビルドができるようになった。

※ 記事を修正するのが面倒なのでここには書いていないが、ビルド成果物に build/libs/*jar を追加した。

作ったものは Github に上げた。

以上。

2017年7月20日木曜日

Docker の公式 Jenkins イメージを使う

イメージの取得

docker pull jenkins

docker-compose.yml の作成

version: '3'
services:
    jenkins:
        image: jenkins
        volumes:
            - jenkins_home:/var/jenkins_home
        ports:
            - "8080:8080"
            - "50000:50000"
        environment:
            - JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties"
        entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
volumes:
    jenkins_home:
        external: true

jenkins 用の volume 作成

docker volume create --name=jenkins_home

コンテナ実行

docker-compose up -d jenkins

http://localhost:8080/ にアクセスすると、「初期パスワードは /var/jenkins_home/secrets/initialAdminPassword に書いてあります」って言われるのでそれを確認する。

docker-compose run jenkins cat /var/jenkins_home/secrets/initialAdminPassword

今日はここまで。

2017年7月15日土曜日

Docker for Windows で apt-chacer-ng 環境を作る

やりたいこと

環境構築の試行錯誤する中で、毎回 Debian のミラーサイトにアクセスするのは心苦しい。 なので、ローカルに apt のキャッシュサーバーを立てたい。

実現方針

  1. apt-cacher-ng 用のイメージ作成
  2. apt-cacher-ng 用のキャッシュ用の Named Volume 作成
  3. 実験環境用の docker-compose.yml ひな形を作成
    • 実験用コンテナと、 apt-cacher-ng 用コンテナがネットワークでつながるようにする
    • 実験用コンテナが「2.」で作った Named Volume を使うように設定

これで、各実験環境ごとに apt-cacher-ng サーバが立ち上がり、共有している Volume のキャッシュを使用することで、ミラーサイトへのアクセスを減らすことができるはず。

環境

OS: Windows 10 Pro

やったこと

apt-cacher-ng 用のイメージ作成

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

$ mkdir -p ~/project/docker/apt-cacher-ng
$ cd ~/project/docker/apt-cacher-ng

Dockerfile 作成

Dockerize an apt-cacher-ng service を参考に作成。

VOLUME, EXPOSE は、 docker-compose で指定する想定なので削った。

■ Dockerfile

FROM debian:stretch-slim

RUN apt -y update
RUN apt -y upgrade
RUN apt -y install apt-cacher-ng

CMD chmod 777 /var/cache/apt-cacher-ng && /etc/init.d/apt-cacher-ng start && tail -f /var/log/apt-cacher-ng/*

イメージのビルド

cd ~/project/docker/apt-cacher-ng
docker build -t apt-cacher-ng .

作成したイメージの確認

docker images を実行すると、今作ったイメージが表示されるはず。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
apt-cacher-ng       latest              fc58ec7f120b        About a minute ago   79.2MB

apt-cacher-ng 用のキャッシュ用の Named Volume 作成

docker volume create するだけ。

$ docker volume create apt-cacher-ng
apt-cacher-ng
$ docker volume ls
DRIVER              VOLUME NAME
local               apt-cacher-ng

実験環境のひな形を作成

apt のプロキシ設定済みのイメージを作成

$ mkdir -p ~\project\docker\test-base
$ cd ~\project\docker\test-base

ファイル類作成

■ Dockerfile

FROM debian:stretch-slim

COPY ./02proxy /etc/apt/apt.conf.d/02proxy

■ 02proxy

Acquire::http::Proxy "http://apt-cacher-ng:3142/";

イメージのビルド

docker image -t test-base .

ひな形から実験環境を構築する

実験環境用のディレクトリを作って docker-compose.yml を作る

$ mkdir -p ~/project/docker/target
$ cd ~/project/docker/target
$ gvim docker-compose.yml

試行錯誤した結果、こんな感じでよいのではないかと。

■ docker-compose.yml

version: '3'
services:
    # apt-cacher-ng 用の設定
    apt-cacher-ng:
        image: apt-cacher-ng
        # apt-cacher-ng 用の Named Volume を指定
        # Named Volume の apt-cacher-ng が、
        # コンテナの /var/cache/apt-cacher-ng にマウントされる
        volumes:
            - apt-cacher-ng:/var/cache/apt-cacher-ng
        # ポートを開ける
        expose:
            - 3142
    # 実験環境用のコンテナ設定
    target:
        image: test-base

volumes:
    apt-cacher-ng:
        external: true

動作確認

最初の 1 つを作る

apt-cacher-ng のキャッシュが空であることを確認。

$ docker-compose up -d
Creating target_apt-cacher-ng_1 ...
Creating target_target_1 ...
Creating target_target_1
Creating target_apt-cacher-ng_1 ... done
$ docker-compose run apt-cacher-ng /bin/bash
root@a187654c95e3:/# ls /var/cache/apt-cacher-ng/
_xstore
root@a187654c95e3:/# exit
exit

target で、とりあえず git をインストールしてみる。

$ docker-compose run target /bin/bash
root@89ce826c2a94:/# apt -y update; apt -y upgrade; apt -y install git

また apt-cacher-ng に戻って、ログやらキャッシュやらを確認。

$ docker-compose logs apt-cacher-ng
$ docker-compose run apt-cacher-ng /bin/bash
root@310265d1d8e3:/# ls /var/cache/apt-cacher-ng/

中身増えてますね。きちんと動いていそう。

2 つめを作る

一つ目のキャッシュファイルがあることを確認。

$ mkdir ~/project/docker/target2/
$ cd ~/project/docker/target2/
$ cp ~/project/docker/target/docker-compose.yml .
$ docker-compose up -d
$ docker-compose run apt-cacher-ng /bin/bash
root@57d7dc4b271b:/# ls /var/cache/apt-cacher-ng/

うん、増えてますね。 さっきと同じように git インストールまでやってみる。

$ docker-compose run target /bin/bash
root@4aa9a5c1021b:/# apt -y update; apt -y upgrade; apt -y install git

ログを確認。

$ docker-compose logs apt-cacher-ng

うん、効いていそう。

以上。

変更履歴

日付 修正内容
v1 2017/7/15 新規作成
v2 2017/7/16 docker-compose.yml の「ポートを開ける」を ports から expose に変更。
(ホストに公開する必要がないため。)

Docker for Windows のインストールメモ

環境

OS: Windows 10 Pro

手順

  1. Docke for Windows を入手・インストール
    1. docker store から exe をダウンロード
  2. Windows で Hyper-V を有効にする
    1. スタートボタン右クリック -> アプリと機能 -> 関連項目の「プログラムと機能」 -> 「Windows の機能の有効化または無効化」 -> Hyper-V にチェックを入れる
  3. BIOS で Hyper-V を有効にする
    1. スタート -> 設定アイコン -> 更新とセキュリティ -> 回復
    2. 「PC の起動をカスタマイズする」の「今すぐ再起動する」ボタン押下
    3. advanced -> CPU Coonfiguration -> SVM Mode を enable に変更(マザーボードによってここは変わってくるはず...)
  4. 「1.」でダウンロードした exe を実行してインストール。全部デフォルトで OK

以上。