docker 使用记录

news/2024/7/5 1:51:34

要点:

参考:https://www.cnblogs.com/yurenjun/p/15991062.html


一 打包部署步骤

参考: Docker教程(超全总结)_生信技术的博客-CSDN博客

参考部署基础操作:如何用Docker打包部署自己写的项目?

1.1 首先我们需要去配置的就是我们的运行环境

如何配?通过FROM关键词,例如我需要一个python3.6的环境:

FROM python:3.6

我们只需要在Dockerfile里面编写如上的代码,就能够拉取到一个python3.6的环境。

1.2 定义根目录

下一步我们也许会去定一个根目录,注意是也许,不是一定。

WORKDIR /app

WORKDIR的意思就是让后面的路径成为根路径,注意哦,这里的路径是docker里面的路径。

1.3 拷贝到 docker

然后,我们就会把代码或者是编译完成之后的运行文件COPY到docker当中

COPY . .

上面就是COPY+本地路径 +docker中的路径,也就是本机当前路径文件,拷贝到docker中的路径中。

1.4 安装依赖

在Python中,我们还需要去安装一些Python库,所以你可能还需要这个操作:

RUN pip install -r requirements.txt

RUN 后面接的就是一个命令行。

1.5 暴露端口

安装完成之后,你需要去暴露一下端口

EXPOSE 80

这样能够让我们后续将docker中的端口和本机中的端口进行映射,从而我们可以通过本机ip+端口来进行访问操作。

最后一步就是运行,当然如果是Python我们就可以直接运行了,但是有一些语言框架可能不行,因为它可能还需要进行一次编译,然后再运行编译后的文件,所以这里大家需要注意了。

如果你不想在docker打包过程中编译,你也可以在本机中编译完,直接运行编译后的文件。

1.6 运行打包代码

当然在Python中我们直接运行Python即可。

CMD ["python","main.py"]

1.7 汇总 dockerfile

好了,上面大致就是打包的整个过程与思路,每个框架,每个语言都会有不一样,所以没有准确的答案,准确的答案在官方文档中一般有所体现。

这里也给大家汇总一下python的dockerfile

FROM python:3.6
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 80
CMD ["python","app.py"]

1.8 根目录运行

编写完dockerfile,我们一般喜欢放在需要打包的地方的根路径,然后直接运行

docker build -t 你想要的名字 . 

docker build -t pythondemo . 

运行之后,docker会自动完成dockerfile里面的每一个步骤。

打包完成后,我们就可以看到images。

大家直接docker images 即可。

随后,我们就可以来创建容器了。

docker run  -d -p 5000:80 pythondemo

docker run -d -p 要映射的本机端口:docker中项目运行的端口 镜像名称

如果你映射完后,还是发现无法访问,可以看看防火墙或者端口是否被占用。你也可以尝试去映射docekr中的80端口。

映射完成之后就可以通过你本机的ip+端口进行访问了!

二 删除某个镜像

查看全部镜像:

docker images

删除镜像:

docker rmi 755bf1020e02

 查看数据:

sudo docker info:显示系统级别的信息,比如容器和镜像的数量等。

docker container ls:默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器。

docker image ls:列出镜像信息,-a 选项会列出 intermediate 镜像(就是其它镜像依赖的层)。

docker volume ls:列出数据卷。

docker network ls:列出 network。

整体查看占用情况:

docker system df

三 迁移docker

参考:windows docker虚拟磁盘文件迁移ext4.vhdx_@liwenyan@的博客-CSDN博客


http://lihuaxi.xjx100.cn/news/1149883.html

相关文章

LVGL v8.2移植到IMX6ULL开发板

本文介绍嵌入式轻量化图形库LVGL 8.2移植到Linux开发板IMX6ULL的步骤。 文章目录 LVGL简介移植LVGL的硬件条件移植准备1. 源码下载2. 驱动加载 移植过程源码修改1. 修改lv_conf.h2. 修改lv_drv_conf.h3. 修改main.c文件4. 修改Makefile文件 源码编译效果演示 LVGL简介 LVGL最初…

矩池云教程|体验 OpenAI 最近推出的 3D 生成模型 Shap-E!

Shap-E 是由 OpenAI 最近推出的3D生成模型,使用者可以通过简单的文字或图像进行三维模型的生成,OpenAI 认为相比于点云的生成模型Point-E,Shap-E的收敛更快。本文将展示如何在矩池云上体验3D模型生成。 Shap-E:https://github.co…

ubuntu 18.04安装docker

from:Install Docker Engine on Ubuntu | Docker Documentation Install from a package If you can’t use Docker’s apt repository to install Docker Engine, you can download the deb file for your release and install it manually. You need to download a new fil…

【计算机组成原理】实验二

文章目录 实验二 运算器实验一、实验目的二、实验原理三、运算器功能编码四、设置初始状态任务一 算术运算任务二 逻辑运算任务三 移位运算任务四 进位控制与零标志 实验二 运算器实验 一、实验目的 完成算术、逻辑、移位运算实验,熟悉ALU运算类型的控制位运用。…

一文带你了解移动入库指南(详细版)

​ 移动入库认证周期: 常规为 4-6 周 中国移动是一家基于 GSM、TD-LTE、FDD-LTE 制式网络的移动通信运营商。日前已建成 5G 基站近 39 万个,并且全面推动 SA 网络,同时和中国广电共同发展 5G 网络。作为全球 5G 网络覆盖广、用户规模大的通信…

JavaWeb-FilterListener的学习

Filter&Listener 1,Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。Servlet 我们之前都已经学习过了,Filter和Listener 我们今天都会进行学习。 过滤器可以把对资源的请求拦截下来&a…

人工智能之超分辨率算法详解

超分辨率算法是一种基于机器学习和深度学习的技术,能够将低分辨率图像(LR)增强到高分辨率图像(HR),从而实现图像的超分辨率(SR),提升图像清晰度的能力。本文将对超分辨率…

Fuzzing Configurations of Program Options

摘要: 尽管许多真实世界的项目都附带配置启用/禁用功能,fuzz大多被用于测试单配置这些项目。在这项工作中,我们首先进行实证研究,以了解程序配置影响起毛性能。我们发现限制竞选一个配置会导致未能覆盖大量的代码。我们还观察到不同的项目配置贡献不同的大量的代码覆盖率,挑战…