一目了然的 Docker 环境配置指南
來源 |?Datawhale
作者 |?Tianchi
頭圖?|?下載于視覺中國
Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、 bare metal、OpenStack 集群和其他的基礎應用平臺。
Docker通常用于如下場景:
web應用的自動化打包和發布;
自動化測試和持續集成、發布;
在服務型環境中部署和調整數據庫或其他的后臺應用;
從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
正因為Docker強大的功能,越來越多的場景下,需要我們使用Docker部署和發布我們的代碼。今天就梳理下,如何入門Docker。
本地環境安裝docker工具
? ubutun安裝
這里以阿里云ECS(ubutun)下安裝docker為例。命令行安裝:
sudo?apt?install?docker.io驗證:
docker?info? Mac安裝,下載MAC版本的docker:
https://hub.docker.com/editions/community/docker-ce-desktop-mac/
??Windows安裝,下載Windows版本的docker:?
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
注意:下載成功后,直接install就可以了,一路Next即可安裝完成。申請自己的docker id,登陸;
創建鏡像倉庫
這里以申請阿里云容器鏡像服務(免費),并創建倉庫為例,其他倉庫如dockerhub、谷歌、亞馬遜、騰訊等詳見對應產品說明書。
阿里云容器服務地址為:https://cr.console.aliyun.com
注冊開通后產品頁面如下
? 1. 創建命名空間
第一步切換標簽頁到命名空間,創建地址唯一的命名空間
根據大賽要求選擇對應的地域,其他的按照自己需求選擇或填寫
? 2.?創建鏡像倉庫
下一步,選擇本地倉庫,不建議其他選項,完成創建
點擊管理,可查看詳情。
? 3.完成本地登錄
按照頁面的指令在本地完成登陸:
export?DOCKER_REGISTRY=?your_registry_url<docker?registry?url>?(注意這里your_registry_url最后字段結尾,不能多不能少 E.g?registry.cn-shanghai.aliyuncs.com/xxxx/xxxx)?docker?login?$DOCKER_REGISTRY?\?--username?your_username?\?--password?your_password構建鏡像并推送
在安裝好Docker環境的本機/服務器構建并推送容器鏡像。過程中可能會使用docker命令,如拉取docker pull,推送docker push,構建docker build等等。
為簡化構建鏡像的難度,天池已準備了常用的Python基礎鏡像,可直接拉取使用,自行構建鏡像請確保安裝curl.更多基礎鏡像說明可參考:https://tianchi.aliyun.com/forum/postDetail?postId=67720。
docker?pull?registry.cn-shanghai.aliyuncs.com/tcc-public/python:3? 1. 準備所需文件
新建一個文件夾(例如tianchi_submit_demo)用于存放這次任務鏡像所需的文件,文件夾中內容示例,其中hello_world.py中是各位自己的代碼部分:
Dockerfile配置文件參考,Dockerfile是固定名稱,注意首字母大寫。Dockerfile中命令皆大寫:
#?Base?Images ##?從天池基礎鏡像構建 FROM?registry.cn-shanghai.aliyuncs.com/tcc-public/python:3##?把當前文件夾里的文件構建到鏡像的根目錄下 ADD?.?/##?指定默認工作目錄為根目錄(需要把run.sh和生成的結果文件都放在該文件夾下,提交后才能運行) WORKDIR?/##?鏡像啟動后統一執行?sh?run.sh CMD?["sh",?"run.sh"]run.sh參考:
python?hello_world.py? 2. 構建鏡像并推送(2.1及2.2皆可)
2.1 IDE + Cloud Toolkit
推薦使用 Alibaba Cloud Toolkit:
https://cn.aliyun.com/product/cloudtoolkit 進行操作。
Cloud Toolkit 與主流 IDE 及阿里云容器鏡像服務無縫集成,可以簡化操作。這里以在 IntelliJ IDEA 中使用 Alibaba Cloud Toolkit 為例。只需配置一次,之后都可一鍵推送~
2.1.1. 安裝及配置
在本地 IDE 中安裝 Alibaba Cloud Toolkit 并進行阿里云賬戶配置。
參見:在 IntelliJ IDEA 中安裝和配置 Cloud Toolkit:https://help.aliyun.com/document_detail/98762.html
2.1.2. 設置環境
設置用于打包本地鏡像的 Docker 環境。
在 IntelliJ IDEA 工具欄單擊 Tools > Alibaba Cloud > Preferences…?
在 Settings 對話框的左側導航欄中單擊 Docker。
在 Docker 界面中設置 Cloud Toolkit 需要連接的 Docker 環境。
注意:如果出現連接測試報錯,可進入 Docker 的 Settings 界面,單擊左側導航欄中的 General,然后選擇 Expose daemon on tcp://localhost:2375 without TLS。
本地為 Mac 或 Linux 操作系統,勾選 Unix Socket,然后單擊 Browse,輸入unix:///var/run/docker.sock。
本地為 Windows 操作系統,勾選 TCP Connection,然后在 URI 右側文檔框輸入本地 Docker 的 URI,如 http://127.0.0.1:2375。
遠程 Docker 環境:勾選 Tcp Connection,在 URI 右側的文本框里輸入遠端的 Docker 環境的 URI(包括 IP 地址和端口),如 http://x.x.x.x:2375,并確保遠程主機的 HTTP 服務開啟。
單擊 Test Connection 進行連接測試。
2.1.3. 構建并上傳應用
在 IntelliJ IDEA 的菜單欄中選擇 File > Open… ,選擇參賽的工程文件。
在 IntelliJ IDEA 界面左側的 Project 中右鍵單擊您的 Docker 應用工程名,在彈出的下拉菜單中選擇 Alibaba Cloud > Deploy to ACR/ACK > Deploy to ACR。
在 Deploy to ACR 對話框中進行以下配置。
Context Directory:參賽的工程文件所在的目錄,例如上文中的 tianchi_submit_demo 。
Dockerfile:選擇上文中創建的 Dockerfile。
Version:對上傳的工程文件做版本標記。例如 1.0
在 Image 頁簽中選擇Context Directory和Dockerfile。
在 Image Repositories 區域選擇上文中創建的容器鏡像服務的地域、命名空間和鏡像倉庫。
2.1.4. 單擊 RUN
下次就可以一鍵完成了~
2.2 服務器上直接操作
執行
docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
注意:registry.~~~是上面創建倉庫的公網地址,用自己倉庫地址替換。地址后面的:1.0為自己指定的版本號,用于區分每次build的鏡像。最后的.是構建鏡像的路徑,不可以省掉。
構建完成后可先驗證是否正常運行,正常運行后再進行推送。
CPU鏡像:
docker run your_image sh run.sh
GPU鏡像:
nvidia-docker run your_image sh run.sh
推送到鏡像倉庫
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
如果這步出錯,可能你沒有登錄,按照倉庫里描述操作登錄即可。
第一次推送會比較耗時,可以休息一會了~o( ̄▽ ̄)d
提交驗證運行結果
在左側【提交結果】中填寫推送的鏡像路徑、用戶名和密碼,即可提交。根據【我的成績】中的分數和日志可以查看運行情況。
常見問題及解決方案
問題1. 如果你是在本機使用腳本build 鏡像如docker build -t resgist… .可能會報錯如下:
ERROR:?Could?not?open?requirements?file:?[Errno?2]?No?such?file?or?directory:?'C:/Users/wyx/Desktop/tianchi_docker/requirements.txt'解決方法:在Dockerfile文件的安裝依賴包之前加一行COPY requirements.txt requirements.txt。
問題2.??登陸鏡像倉庫失敗,提示賬號密碼錯誤,請注意這里的賬號密碼非阿里云的賬號密碼而是你開通倉庫服務時設置的賬號密碼,如果忘記密碼,找回路徑如下:
找回容器鏡像登錄密碼
問題3. push 完成后刷新倉庫網頁看不到鏡像版本,擔心上傳失敗
容器鏡像網頁存在一定的延遲,只要你本地push命令行沒有出錯就大膽去大賽提交即可,如果實在不放心你可以刪除本地鏡像然后pull一下驗證。
更多閱讀推薦
都在說云原生,它的技術圖譜你真的了解嗎?
SRE 是如何保障穩定性的
如何寫出讓 CPU 跑得更快的代碼?
Serverless 在 SaaS 領域的最佳實踐
云原生人物志|Pulsar翟佳:社區的信任最重要
阿里的 RocketMQ 如何讓雙十一峰值之下0故障
總結
以上是生活随笔為你收集整理的一目了然的 Docker 环境配置指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevOps 在移动应用程序开发中扮演什
- 下一篇: 奇点云集聚数据中台优势,加速企业数智化升