文章目录

    • 一、安装
      • 验证是否安装成功
    • 二、Docker命令
      • 镜像
      • 容器
      • 数据卷管理
      • 网络模式
    • 三、Dockerfile
      • 推送至镜像仓库
      • 阿里云ECI弹性容器部署
      • 阿里云Serverless应用引擎SAE部署
      • 阿里云FC函数部署容器
    • 四、Docker Compose

::: tip 简介
Docker是一种开源的应用容器引擎,让开发者能够打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。这种技术可以保证包的快速、可靠、一致的交付,无论环境如何。
:::

一、安装

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

验证是否安装成功

sudo docker run hello-world

图片
如上所示代表安装成功。
如果出现网络原因问题如下:
图片
这个错误表明 Docker 无法从 Docker Hub (registry-1.docker.io) 拉取 hello-world 镜像,原因是 网络连接超时(context deadline exceeded)。这通常是由于 国内访问 Docker Hub 受限 或 服务器网络配置问题 导致的。
可选择阿里云加速镜像源https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,或直接开启科学上网。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://registry.docker-cn.com","https://mirror.baidubce.com"]
}
EOF

二、Docker命令

镜像

  • docker pull:拉取镜像
# 下载官方Nginx镜像,默认下载最新版
docker pull nginx
  • docker images:查看所有镜像
  • docker rmi xxx: 删除镜像(跟上镜像名、镜像ID前两位等均可)

容器

  • docker ps -a:查看所有容器
  • docker logs -f xxx:查看容器日志
docker run -d --name 创建的容器名 镜像名(一般镜像名放最后)
# 创建Nginx容器,把本机的80端口绑定到容器的80端口
docker run -d --name nginx -p 80:80 nginx
# `-d`:表示以后台运行的方式创建容器
  • 配置环境变量
    • -e:设置MySQL连接密码、时区
docker run --name mysql -e MYSQL_ROOT_PASSWORD=admin111 -e TZ=Asia/Shanghai -d -p 3307:3306 mysql
  • 配置restart重启策略
    • always: 只要docker重启那么容器就重启
    • unless-stopped: 除了手动停止容器后,不会重启外,其他情况docker重启,容器重启
docker run -d --restart unless-stopped nginx
  • 进入容器
# 以交互模式进入创建的Nginx容器
docker exec -it nginx bash
  • 停止容器
docker stop nginx
  • 启动容器
docker start nginx
# 重启容器
docker restart nginx
  • 基于容器创建新的镜像
docker commit -m '说明' 容器ID 新镜像名

数据卷管理

  • 创建容器时挂载数据卷,如果实在Windows上用的Docker Desktop,请注意挂载路径写法
# 将宿主机上的`/root/shared_file`目录挂载到容器的`/home/shred_file`下
docker run -d --name ubuntu -v /root/shared_file:/home/shred_file ubuntu

网络模式

默认三种模式:

  1. bridge: 网桥模式。即每个容器都会有一个独立的IP,容器之间,容器与宿主机之间可通过网桥实现通信。默认创建的容器都是网桥模式
  2. host: 主机模式。容器没有独立的IP地址,直接使用宿主机的IP地址,该容器就相当于宿主机的一个进程
  3. none: none模式,通常不用,代表该容器没有网络,宿主机和容器,容器和容器之间没法通过网络通信
    图片
    通过docker inspect xxx查看容器配置信息如下
    图片
  • 创建子网
# 创建一个自定义网络network1
docker network create network1

三、Dockerfile

  • 以在Docker中运行一个Flask项目为例
    图片
  • Dockerfile构建代码如下:
# 拉取镜像
FROM python:3.13-slim# 切换到即将创建容器中的app目录下
WORKDIR /app/# 将当前目录下文件拷贝到容器所在目录下(即上面的app目录)
COPY . .# 下载依赖包
RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt# 定义环境变量
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV TZ=Asia/Shanghai# 声明会使用的端口
EXPOSE 5000# 运行的命令
CMD ["flask","run"]
  • 然后构建镜像
docker build -t flask-demo .
  • 启动容器
docker run -d --name flask-web -p 5000:5000 flask-demo

推送至镜像仓库

以阿里云镜像仓库为例,如果使用的是阿里云系列产品,可选择切换内网地址,速度会快些。

docker login --username=子午技术组 crpi-xxx.cn-hangzhou.personal.cr.aliyuncs.com
docker tag [ImageId] crpi-xxx.cn-hangzhou.personal.cr.aliyuncs.com/ziwu/ziwu-docker:[镜像版本号]
docker push crpi-xxx.cn-hangzhou.personal.cr.aliyuncs.com/ziwu/ziwu-docker:[镜像版本号]

阿里云ECI弹性容器部署

如果需要把容器运行时,公网可以访问到,那么可以借助阿里云ECI容器部署https://www.aliyun.com/product/eci, 然后通过生成的IP地址就可以访问到了。
图片
图片

阿里云Serverless应用引擎SAE部署

参考:https://saenext.console.aliyun.com/
注意:需要提前配置好弹性IP,安全组
这个相比于ECI部署,可以动态进行弹性扩容,多实例运行,直接通过compose文件生成容器等。

阿里云FC函数部署容器

这个相比于其他两个价格最低,但是功能受限,仅适合部署API服务等接口。并且经过实践FC3.0的版本好像一直部署不成功,2.0版本可以。

四、Docker Compose

在实际的部署工作中,需要使用到多种服务,比如mysql、nginx等,那这么多镜像如何进行组合编排呢,这就是Docker-Compose需要解决的问题。

使用+典型案例:

使用Docker-Compose编排容器时,可以将编排指令放到compose.yaml文件中。这里以构建一个构建Flask+Redis的服务的过程为例来讲解Docker-Compose的使用。

创建一个文件夹,叫做app文件夹,并在里面创建一个app.py文件,目录结构如下:

flask-redis-demo/
│── app/
│   ├── app.py
│   ├── requirements.txt
│   └── Dockerfile
│── docker-compose.yml
  • Flask 应用 (app/app.py)
from flask import Flask
import redis
import osapp = Flask(__name__)# 连接 Redis
redis_host = os.getenv("REDIS_HOST")
r = redis.Redis(host=redis_host, port=6379, decode_responses=True)@app.route("/")
def hello():# 自增计数器count = r.incr("hits")return f"Hello! This page has been visited {count} times."if __name__ == "__main__":app.run(host="0.0.0.0", port=5000)
  • 依赖文件 (app/requirements.txt)
flask
redis
  • Flask 的 Dockerfile (app/Dockerfile)
# 拉取镜像
FROM python:3.13-slim# 切换到即将创建容器中的app目录下
WORKDIR /app/# 将当前目录下文件拷贝到容器所在目录下(即上面的app目录)
COPY . .# 下载依赖包
RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt# 定义环境变量
ENV TZ=Asia/Shanghai# 声明会使用的端口
EXPOSE 5000# 运行的命令
CMD ["python3","app.py"]
  • Docker Compose 配置 (docker-compose.yml)
# 名称
name: demo
# 服务列表
services:# web服务配置web:# web服务的Dockerfile文件路径build: ./app# 端口映射ports:- "5000:5000"# 容器名称container_name: "web"# 环境变量传递 Redis 服务名environment:- REDIS_HOST=redis  # 在遇到意外情况退出后是否重启restart: unless-stopped# 本服务依赖的服务,必须redis服务启动后,web服务才会启动depends_on:- redis# redis服务redis:# 使用的镜像,如本地没有,则会从docker官网上拉取image: "redis:alpine"# 容器名称container_name: "web_redis"# 是否重启restart: unless-stopped

compose相关命令

  1. 检查配置是否有错
docker compose config
  1. 创建和启动容器
docker compose up -d
  1. 停止和移除容器(尽量不要用这个停止,因为会删除容器)
docker compose down
  1. 停止compose
docker compose stop 【service name】
  1. 启动compose
docker compose start 【service name】
  1. 查看运行中的compose
# 加上 -a可以查看所有compose
docker compose ls 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922257.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922257.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922257.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang并发编程及其高级特性

并发编程模型 线程模型&#xff1a;Go的GoroutineGoroutine&#xff08;M:N 模型&#xff09; package mainimport ("fmt""runtime""sync""time" )func main() {// 查看当前机器的逻辑CPU核心数&#xff0c;决定Go运行时使用多少OS线程…

弧形导轨如何提升新能源汽车的能效和续航里程?

弧形导轨在新能源汽车中的应用主要集中在电池生产线和自动化装配线等领域&#xff0c;通过提高生产效率和精度&#xff0c;间接提升新能源汽车的能效和续航里程。高精度装配&#xff1a;在新能源汽车的电池生产线中&#xff0c;弧形导轨用于高精度的自动化装配设备&#xff0c;…

考研择校考虑因素和备考流程

考研择校一、选择专业二、选择学校三、考研计划安排一、选择专业 1、了解自己的未来工作规划&#xff08;这里肯定没有啥规划&#xff09;&#xff1b; 2、连接考研的相关几个专业哪个好就业&#xff08;公务员和找工作&#xff09;&#xff1b; 3、知乎、小红书、deepseek都可…

1.13 Memory Profiler Package - Unity Objects(unity对象页签)

1.Unity Objects(Unity对象页签)简介 2.界面功能参数1.Unity Objects(Unity对象页签)简介 Unity Objects用于快速定位unity对象内存占用的类型和具体实例a.查找内存占用最大的资源, 判断这些资源是否可以压缩或延迟加载b.查找重复加载的资源c.查看运行时创建但是没有释放的资源…

Android真机-安装Reqable证书-抓SSL包

使用Reqable的自动安装系统证书无法正常抓包&#xff0c;所以就有了这篇文章超简单的安装方式 - 记得确保手机已拥有root权限一、从Reqable导出公钥证书无需使用OpenSSL 将 .pem 文件转换为 .0 格式注意是 .0 格式的这个证书二、推送证书到手机adb root adb remount adb push 证…

[超表面论文快讯-242] PR-微波超四元数涡旋阵列洛书加权锁定成像加密-江南大学王继成、上海科技大学王雄团队

栏目介绍&#xff1a; “论文快讯”栏目旨在精简地分享一周内发表在高水平期刊上的Metasurface领域研究成果&#xff0c;帮助读者及时了解领域前沿动态&#xff0c;如果对专栏的写法或内容有什么建议欢迎留言&#xff0c;后续会陆续开启其他专栏&#xff0c;敬请期待。 论文基…

案例研究:构建一个 Markdown 编辑器

引言&#xff1a;Markdown 编辑器案例在 Electron Node.js 开发中的研究价值与必要性 在 Electron 框架的实际项目应用中&#xff0c;构建一个 Markdown 编辑器是展示其强大能力的经典案例研究。它不仅仅是一个简单的文本工具&#xff0c;更是开发者通过完整项目演示 Electron…

十四十五. 图论

树与图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 (1) 邻接矩阵:g[a][b] 存储边a->b (2) 邻接表: // 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单…

内存管理这一块

文章目录前言一、C/C内存分布二、C语言中动态内存管理方式三.C的内存管理方式new/delete操作内置类型new/delete操作自定义类型四.定位new总结前言 在一行一行的代码之中&#xff0c;不同的数据存放的位置是有所不同的&#xff0c;正是因为这些数据的性质不同&#xff0c;所以…

linux 环境下Docker 安装

Docker在线安装 参考 &#xff1a;https://juejin.cn/book/6844733746462064654/section/6844733746545950734#heading-0 Ubuntu 环境下安装 $ apt-get install apt-transport-https ca-certificates curl software-properties-common $ install -m 0755 -d /etc/apt/keyrin…

Netty从0到1系列之Netty启动细节分析

文章目录一、Netty服务器端启动细节分析1.1 实现一个简单的http服务器1.2 服务器端启动细节分析1.3 创建与初始化 NioServerSocketChannel1.3.1 **通过反射工厂创建 Channel**&#xff1a;1.3.2 **初始化 Channel**1.4 注册到 Boss EventLoopGroup1.4.1 **异步提交注册任务**1.…

一个海康相机OCR的程序

这是一个极其复杂和庞大的​​机器视觉检测程序​​&#xff0c;其核心特点是​​多重冗余、条件判断和流程分支​​。它并非一个简单的线性流程&#xff0c;而是一个为应对各种复杂工业场景&#xff08;如光照变化、产品位置偏移、识别难度高等&#xff09;而设计的​​决策网…

深入解析:preload与prefetch的区别及最佳实践

在前端性能优化领域&#xff0c;资源加载策略直接影响页面的加载速度和用户体验。<link>标签的preload和prefetch属性是浏览器提供的两种关键资源预加载机制&#xff0c;它们都能提前加载资源&#xff0c;但适用场景和行为逻辑却大不相同。本文将从定义、触发时机、优先级…

[论文阅读] 人工智能 + 软件工程(漏洞检测)| 工业场景漏洞检测新突破:CodeBERT跨领域泛化能力评估与AI-DO工具开发

工业场景漏洞检测新突破&#xff1a;CodeBERT跨领域泛化能力评估与AI-DO工具开发 论文信息 论文原标题&#xff1a;Cross-Domain Evaluation of Transformer-Based Vulnerability Detection: Open-Source vs. Industrial Data引文格式&#xff08;APA&#xff09;&#xff1a;[…

【层面一】C#语言基础和核心语法-01(类型系统/面向对象/异常处理)

文章目录1 类型系统1.1 为什么需要类型&#xff1f;1.2 .NET 类型系统的两大支柱&#xff1a;CTS 和 CLS1.3 最根本的分类&#xff1a;值类型 vs 引用类型1.4 内置类型 vs. 自定义类型1.5 类型转换1.6 通用基类&#xff1a;System.Object2 面向对象编程2.1 类和对象2.2 接口和类…

Deepseek构建本地知识库

一.本地部署Deepseek Ollama 介绍 目前市面上主流的&#xff0c;成本最低的部署本地大模型的方法就是通过 Ollama 了&#xff1a; Ollama 是一个开源的本地大语言模型运行框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。 核心…

idea自动编译,idea不重启项目,加载修改的内容

idea自动编译&#xff0c;idea不重启项目&#xff0c;加载修改的内容

幸运盒项目—测试报告

幸运盒测试报告 目录幸运盒测试报告一. 概要二. 测试环境三. 测试用例脑图四. 测试用例1. 功能测试1. 注册功能2. 密码登录功能3. 验证码登录功能4. 注册用户功能5. 创建奖品功能6. 新建抽奖活动功能8. 奖品列表9. 活动列表2. 界面测试1. 注册界面2. 密码登录界面3. 验证码登录…

Estimator and Confidence interval

Coefficient of determination and sample correlation coefficient R2SSRSSTR^2 \frac{SSR}{SST}R2SSTSSR​ SSR∑i1n((yi^−yˉ)2)SSR\sum_{i1}^n((\hat{y_{i}}-\bar{y})^2)SSR∑i1n​((yi​^​−yˉ​)2) SST∑i1n((yi−yˉ)2)SST\sum_{i1}^n((y_{i}-\bar{y})^2)SST∑i1n​…

【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践

半桔&#xff1a;个人主页&#x1f525; 个人专栏: 《Linux手册》《手撕面试算法》《网络编程》&#x1f516;很多人在喧嚣声中登场&#xff0c;也有少数人在静默中退出。 -张方宇- 文章目录前言套接字接口TCP服务器TCP 多进程TCP 线程池重写Task任务放函数对象客户端重连进程…