在windows上將拉取ubuntu的docker鏡像轉到服務器上
1.要求
1.1 要求windows和服務器安裝好docker
2.拉取ubuntu鏡像到windows(dos操作,可能需要連接到外網)
一旦你選擇了一個合適的基礎鏡像,你可以使用docker pull命令從Docker Hub下載它。命令格式如下:
docker pull [鏡像名稱]:[標簽]
例如,要拉取最新版本的Ubuntu基礎鏡像,你可以運行:
docker pull ubuntu:latest
如果你想要拉取特定版本的鏡像,比如Ubuntu 20.04,你可以指定標簽,或18.04:
docker pull ubuntu:18.04
3.打包鏡像
docker save -o ubuntu1804.tar ubuntu:18.04
4.將windows上的壓縮包發送到服務器
注意查看操作save時的位置,tar壓縮包就在此。
5.把從別的地方拷貝過來的tar docker鏡像,加載到服務器
docker load -i /path/to/image.tar
6.然后就可以正常創建容器等操作了
(懶人一體式打包鏡像)
從容器構建服務,打包到鏡像,使用Dockerfile構建鏡像
:服務器上面有個docker容器,容器中安裝了一個服務,使用命令/data/miniconda3/envs/ner_py37/bin/python ner_flask.py可運行該程序,并啟動端口8123。現在需要將它打包為鏡像,并寫一個dockerfile,發送到另外一個服務器上進行運行服務并開放端口,完成這個操作流程。
準備工作
將服務全部打包到容器中
查看元數據:docker inspect 容器ID
找到"MergedDir"目錄,將服務的需要文件放置在其中比如:/data目錄
一、打包現有容器為鏡像
-
查找容器ID
docker ps -a
-
提交容器為鏡像
docker commit -m "打包Flask服務" -a "作者信息" <容器ID> ner-flask:1.0
-m
:提交說明-a
:作者信息(可選)<容器ID>
:替換為實際容器ID
例如:
docker commit -m "flask-server" -a "Lili" deac5058b9cd ner-flask:1.0
二、編寫Dockerfile
- 創建Dockerfile文件
# 基于已提交的鏡像
FROM ner-flask:1.0 # 指定工作目錄
WORKDIR /data/q/server/ner4cpu# 聲明服務端口
EXPOSE 8088 # 啟動命令(需與容器內路徑一致)
CMD ["/data/miniconda3/envs/ner_py37/bin/python", "ner_flask.py"]
- 在Dckerfile目錄創建dockerDockerfile
從前面的ner-flask:1.0鏡像構建一個生產服務鏡像。
docker build -t ner-flask-server:1.0 .
此處產生了作為小白本白不理解的疑惑,為何創建了2次鏡像,第1次的commit不知該如何省略,以后再優化吧…
o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o
三、保存并傳輸鏡像
-
導出鏡像為壓縮文件
docker save -o ner-flask-server.tar ner-flask-server:1.0
在當前目錄下產生一個文件:ner-flask-server.tar -
傳輸到目標服務器
scp ner-flask.tar user@目標服務器IP:/目標路徑/
- 也可用
rsync
或SFTP工具傳輸
- 也可用
四、目標服務器部署
-
加載鏡像
docker load -i ner-flask.tar
-
運行容器
docker run -d -p 8123:8123 --name ner-service ner-flask-server:1.0
-d
:后臺運行-p 8123:8123
:映射宿主機與容器端口
五、驗證服務
-
檢查容器狀態
docker ps -a | grep ner-service
-
測試端口連通性
curl http://目標服務器IP:8123
其它方式構建服務鏡像
(更靈活的打包鏡像)
Dockerfile
FROM continuumio/miniconda3:4.7.12 # 明確基礎鏡像
RUN conda create -n ner_py37 python=3.7
COPY /data /data/
# 安裝 Python 依賴
RUN conda run -n ner_py37 pip install -r /data/***/requirements.txt
EXPOSE 8123
CMD ["conda", "run", "-n", "ner_py37", "python", "ner_flask.py"]