LoginSignup
2

More than 3 years have passed since last update.

DockerをProxy環境下&root権限なしでUbuntuに導入する (RootlessのDockerにProxy設定がメイン)

Posted at

前書き

  • root権限が無いからUbuntuの環境構築はかどらない!
  • なんかroot権限が必要ないDockerがあるらしいぞ!
  • 導入したがProxy設定わかんねー!
  • あと記事書くの初めてなので優しくしてください

Root権限が必要ないRootlessモードのDocker

Docker19.03にて、root権限がなくても実行できるRootlessモードが実装されました1
root権限を持たない身としてはありがたいお話です。

RootlessモードのDockerインストール

(インストールについては先人の方々の記事or公式ページ1を参考にしていただければ...)

# curlのproxy設定してない場合はcurlrcファイルにproxy設定を書き込む
vi ~/.curlrc

  #以下を書き込む
  proxy=http://proxy.url:port

# Rootless mode Dockerをlocal環境にインストール
$ curl -fsSL https://get.docker.com/rootless | sh

# インストーラ終了時に追加すべきPATHを指示してくれるため、指示されたコマンドを実行する
$ export PATH=/home/testuser:/bin:$PATH
$ export PATH=$PATH:/sbin
$ export DOCKER_HOST=unix:///run/user/1001/docker.sock

Hello Worldで動作確認

恐らくProxyが原因でTimeoutが発生

$ docker run docker/whalesay cowsay Hello World
$ systemctl --user start
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

Docker daemonにProxy設定

詰まった所

本来Docker daemonにproxy設定を行う際は
/etc/systemd/system/docker.service.d/http-proxy.confに設定を書く必要があります[^2]。
(するとdocker.servicの設定に継承される形で適用される...多分)
[^2]: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
これがRootlessモードの時にどう設定するかわからないという状況で2日かかりました。

解法

結論としては、~/.config/systemd/system/docker.service.d/http-proxy.conf
に設定することで解決しました。

$ mkdir -p ~/.config/systemd/system/docker.service.d
$ vi ~/.config/systemd/system/docker.service.d/http-proxy.conf

  # 以下2行を書き込み
  [Service]
  Environment="HTTP_PROXY=http://proxy.url:port"

$ systemctl --user daemon-reload
$ systemctl --user restart docker

再度Hello World

$ docker run docker/whalesay cowsay Hello World
 _____________ 
< Hello World >
 ------------- 
    \
     \
      \     
                    ##        .            
              ## ## ##       ==            
           ## ## ## ##      ===            
       /""""""""""""""""___/ ===        
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
       \______ o          __/            
        \    \        __/             
          \____\______/ 

反省

公式ページにdaemon configディレクトリのパス~/.config/dockerが記載されており2
~/.config/systemdも生成されていた為、冷静に見れはもう少し早くわかったなと反省。

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
2