docker

container-upというツールを書いた

container-upというツールを書いたのでご紹介。 背景 このブログはghostというブログエンジンで動いています。動作環境としてDockerを使用していて、Ghostの公式イメージを使用しています。 過去の経緯から、単体のDockerコンテナで動作させており、永続データはDockerボリュームとしてマウントしている形です。 扨、Docker ComposeやKubernetesなどのオーケストレーションツールを使っている場合、コンテナのバージョンアップは比較的簡単に行うことができます。 たとえば、Docker Composeを使用している場合、docker-compose upで、新しいイメージで作成したコンテナに差し替えることができます。 しかし、Dockerを単体で使っている場合、基本的には手作業で差し替えを行う必要があります。 Ghostコンテナの更新時は手作業でBlue-Greenアップグレードを行ってきたのですが、Ghostはかなりアップデートのペースが速く、毎度コンテナを差し替えるのが面倒になってきました。 それを楽にするため、

container-upというツールを書いた
Read more...

Kubernetes-powered Docker for mac is released!

DockerCon EU 2017で、DockerがKubernetesを統合・サポートすると発表されましたが、本日ついにKubernetesサポート版Docker for macが(Edgeリリースですが)リリースされました! これにより、macを使用している場合は(おそらく過去最も簡単に)開発用Kubernetesクラスタを起動することができるようになりました! この記事では、Docker for macでKubernetesを立ちあげる手順をまとめておきます。 Kubernetesの起動手順 Docker for macのStable版を利用している場合、Edge版をインストールする必要があります。 Install Docker

Kubernetes-powered Docker for mac is released!
Read more...

kubesprayを使用してkubernetes clusterを構築する

kubesprayはproduction readyなkubernetes(k8s)クラスタを構成できるツールです。 Ansibleをベースに作られているため、任意のサーバでk8sクラスタを構成できます。 今回は、3台のVMを用意してクラスタを構成してみます[1]。 検証環境 今回用意したVMは以下の構成です。 2Core 8GB RAM 80GB HDD CentOS 7 IPアドレスは以下の様になっているものとします。 192.168.1.11 192.168.

kubesprayを使用してkubernetes clusterを構築する
Read more...

GitLab Docker: initial runners registration token

GitLabはRuby on Railsで書かれたオープンソースのGitサーバアプリケーションです。おそらく、オープンソースのGitサーバとしては最もよく使われているものではないでしょうか。 GitLabは他のOSS Gitサーバアプリケーションと比べて、非常に多くの機能を持っています。 GitLab-CIもその一つで、GitLab上で自動テストを回すことができます。 この、GitLab-CIを使用するにはrunnerと呼ばれる、CI環境用のホストを追加する必要があります。 このとき、Registration Tokenという登録用トークンが必要なのですが、REST APIで取得することができません。そのため、Dockerを用いた自動構築時に少々困りました。 解法 GitLab omnibusの設定項目でRegistration Tokenの初期値を設定することができます。 docker

GitLab Docker: initial runners registration token
Read more...

Travis CIでdockerのバージョンを最新にする

Travis CIでDockerfileをテストする等、dockerを使用したい場合、以下の様に.travis.ymlに記述することでdockerを有効にすることできます。 sudo: required service: - docker が、その際のdockerのバージョンは17.03.1[1]と、最新版ではありません。 特に問題なのが、multi-stage buildは17.05からの機能であるということです。 Travis CIで使用できるdockerでは、multi-stage

Travis CIでdockerのバージョンを最新にする
Read more...

docker-machineでRancherOSを使う

docker-machineとそのメリット docker-machineは仮想マシン上にDocker Engineをインストールするツールです。 docker-machineコマンドを使用することで、Dockerホストを作成・管理することが可能です。 docker-machineを使用してDockerホストを作成すると、 $ docker-machine env <MACHINE_NAME> でシェル評価可能なDocker接続情報を得ることができ、 $ eval $(docker-machine env <MACHINE_NAME>) とすることにより、そのセッション内ではあたかもローカル環境のDockerの様にコンテナを操作することが可能となります。 docker-machineで使用するOS 扨、

docker-machineでRancherOSを使う
Read more...

Docker multi-stage builds

Docker 17.05から、新機能としてmulti-stage buildsというものが導入されました。 これは、コンテナイメージをより最適化するために有用な機能で、Dockerfileからコンテナイメージをビルドする際にビルド依存のライブラリ/環境とランタイム依存のライブラリ/環境を切り分けることができる機能です。 具体例を見てみましょう。 Go言語で書かれた何らかのアプリケーションをコンテナ上で動かすことを考えます。 以前までであれば、以下のような二つのDockerfileを用いて作成します。 まずはビルド用Dockerfileです FROM golang:1.7.3 WORKDIR /go/src/github.com/

Docker multi-stage builds
Read more...

MySQL on docker macな開発環境でローカルからMySQLに接続する

MySQLをdocker上に立てることで、ローカルの環境を汚さずにMySQLを使ったアプリケーションの開発を行うことができます。 特に、練習段階や、動作確認などの場合、 test_hogehoge な感じのデータベースやテーブルを作ってしまい、後片付けをしないために汚くなっていく、なんてこと、あるんじゃないでしょうか。 さて、MySQL on dockerへの接続、今までローカルにMySQLを入れて開発していたのでちょっと躓きました。 $ docker run -d -p 3306:3306 -e MYSQL_ROOT_

MySQL on docker macな開発環境でローカルからMySQLに接続する
Read more...
Load more