Docker 是一款非常流行的分發應用程序的工具,但它經常被用來構建和部署 Web 應用程序。為了保護這些應用程序,您可能需要設置一些訪問控制來確保只有授權的用戶才能訪問它們。而最佳實踐就是通過為 Docker Engine 設置身份驗證來實現。
$ sudo docker run -d -p 5000:5000 registry
可以看到我們啟動的 docker 容器是公開的,這也有點讓人擔心。我們可以使用官方推薦的regis
工具進行認證操作。
$ docker run -d -p 5000:5000 --restart=always --name registry -v /opt/data/registry:/var/lib/registry registry:2
開始設置密碼,掛載本機目錄到容器內部,這樣我們的數據可以持久化,而不是存儲到容器內部,方便備份和遷移。
$ docker run --entrypoint htpasswd registry:2 -Bbn username password >./auth/htpasswd
這樣我們就在本機生成了一個.htpasswd
文件,里面存放著我們的用戶名和密碼,接下來我們需要修改我們的 registry 配置文件config.yml
(可以先將它拷貝到本地備份一下)。
auth: htpasswd: realm: basic-realm path: /etc/docker/auth/htpasswd # bcrypt bcrypt: false
啟動 registry 容器,完成認證設置。
$ sudo docker run -d -p 5000:5000 --name registry -v /opt/data/registry:/var/lib/registry \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ registry:2
現在您可以使用用戶名和密碼登錄。