在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"]