44
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プロキシ環境下でのCoreOS + Docker

Posted at

※ この記事はVMWare上のCoreOSについての記述です。Vagrantなど別の環境では、違った方法があるのかもしれません。

dockerのホストOSとしてなるべく軽量なものがいい、CoreOSだ、となるのですが、プロキシ環境下では困ったことになります。

dockerは内部的にはGoのnet/httpを使って、イメージファイルを取りに行きます。したがってプロキシを通すためには、HTTP_PROXY環境変数にプロキシURLを設定すればよいのです。

% export HTTP_PROXY=http://hogeproxy:3128

しかし、CoreOS環境ではdockerデーモンは、systemctlがOS起動時に立ち上げてくれます。ので、起動後ログインして、

% sudo systemctl stop docker.service
% sudo HTTP_PROXY=http://hogeproxy:3128 docker -d

と環境変数付きで再起動すればよいのです。



… ダサい!

さて、/etcのどこかを書き換えればいいんだな、ということで/etc/profileなどを書き換えようとしても、CoreOSの場合、

% mount
/dev/sda3 on / type ext4 (ro,relatime)

と/etcがリードオンリーでマウントされているので、それができません。

試行錯誤した結果、OEMベンダ向けのディレクトリにスクリプトを書けば、docker起動前に実行してくれることがわかりました。/usr/share/oem ディレクトリの下に、run という名前でシェルスクリプトを置いておけば自動的に実行してくれます。

/usr/share/oem/run
#!/bin/bash

systemctl set-environment HTTP_PROXY=http://hogeproxy:3128

のように記述して、実行権つけてCoreOS再起動すると、

% docker build .
Uploading context 10240 bytes
Step 1 : FROM stackbrew/ubuntu:saucy
Pulling repository stackbrew/ubuntu
 ---> 3dfa13a1a7fckB/10.24 kB (100%)/ubuntu, endpoint: https://cdn-registry-1.docker.io/v1/

プロキシ越しにイメージファイルを取得できるようになりました!

44
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?