制作镜像
1.镜像 image: 是一个文件,包含了微型操作系统、核心代码(可执行程序)、依赖环境(库)
2.仓库 repository: 存放镜像文件的地方
3.容器: container :是运行镜像的地方---》是进程
1.将go语言程序上传到centos7.9的系统里
go+html+mysql+redis.zip
[root@docker ~]# mkdir /Dockerfile
[root@docker ~]# cp go+html+mysql+redis.zip /Dockerfile/
[root@docker ~]# cd /Dockerfile/
[root@docker Dockerfile]# unzip go+html+mysql+redis.zip 解压软件包
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip go.mod go.sum info.sql Readme.md server.go static templates
server.go 核心go语言程序代码
Readme.md 了解程序,包括安装和核心解析
info.sql 数据库里的表和基础数据
static 存放了网站的js和css代码
templates 存放了网站的静态页面
go.mod 本网站开发的时候使用的库有哪些 module
go.mod 和go.sum有什么作用?
mod是包管理,sum是依赖关系管理
用于管理项目的依赖关系和版本信息,确保项目的构建和部署的可重复性和一致性。
2.因为网站需要使用MySQL存放数据,云服务器里启动一个MySQL容器
root@aliyun-sz:~# docker run -d -p 3316:3306 --name go-mysql-1 -e MYSQL_ROOT_PASSWORD='sc@123456' mysql:5.7.41
7f93b60b054ee2d3489cfae2226b787f276e76ac14116bc6d34bf4d77cc95983
在另外一台客户机上测试能否访问公网上的MySQL数据库
[root@docker Dockerfile]# mysql -h 120.24.223.108 -uroot -p'sc@123456' -P 3316
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
3.修改server.go核心程序的数据库配置
[root@docker Dockerfile]# vim server.go
const (
DB_USER = "root"
DB_PASSWORD = "sc@123456"
DB_NAME = "sanchuang"
DB_HOST = "tcp(8.138.156.120:3316)/"
REDIS_HOST = "8.138.156.120:6379"
)修改为公网上的发布的数据库服务器地址和端口
4.部署golang环境
[root@docker Dockerfile]# yum install epel-release golang -y
5.将go代码编译成二进制程序 本来有go.mod和go.sum直接到第六步
[root@docker Dockerfile]# mv go.mod go.sum /root
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip info.sql Readme.md server.go static templates
[root@docker Dockerfile]# go mod init web
产生go.mod 生成网站所需要的依赖的库,写到go.mod文件里
go: creating new go.mod: module web
go: to add module requirements and sums:
go mod tidy
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip go.mod info.sql Readme.md server.go static templates
配置一个国内的go语言下载库的代理网站
[root@docker Dockerfile]# go env -w GOPROXY=https://goproxy.cn,direct
[root@docker Dockerfile]#go mod tidy
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip go.mod go.sum info.sql Readme.md server.go static templates
6.编译网站成一个二进制程序
[root@docker Dockerfile]# go build -o server server.go
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip go.mod go.sum info.sql Readme.md server(是编译好的二进制程序) server.go static templates
7.编写dockerfile dockerfile 是制作镜像的配置文件
[root@docker Dockerfile]# mkdir docker
[root@docker Dockerfile]# cd docker/
[root@docker docker]# vim dockerfile
FROM centos:7 #指定容器里使用的微型的系统是centos7 -->基础镜像
WORKDIR /go #进入容器会进入这个目录,工作目录,在执行镜像的时候会自动创建--》家目录 ---》docker exec
COPY . /go #复制宿主机当前目录下的所有的内容到容器的/go目录下 docker cp
ENTRYPOINT ["/go/server"] #容器启动运行的时候执行的命令,使用的是绝对路径执行/go/server程序
CMD ["/go/server"] #command 命令 和entrypoint二选一 entry可传参更好
8.复制二进制程序+static+templates文件夹到当前目录下 这几个必须放到一起 才能出效果 各自负责网页 文档等等
[root@docker docker]# ls
Dockerfile
[root@docker docker]# cp /Dockerfile/server .
[root@docker docker]# cp /Dockerfile/static/ . -r
[root@docker docker]# cp /Dockerfile/templates/ . -r
[root@docker docker]# ls
Dockerfile server static templates
下载centos7镜像 传到系统里,导入镜像
[root@docker docker]# docker load -i centos7.9.tar
[root@docker docker]# docker load -i redis.tar
[root@docker docker]# docker build -t scweb:1.0 .
==>naming to docker.io/library/scweb:1.0 0.0s
[root@docker docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
scweb 1.0 162f3d33f84e 34 seconds ago 464MB
启动自己制作的镜像的容器
docker run -d -p 8080:8080 --name scweb-1 scweb:1.0
cali 2022 去浏览器访问
将基础数据导入到云服务器里的mysql容器里mysql -uroot -p'sc@123456' -P 3316 -h 120.24.223.108 sanchuang < info.sql
因为我们在内网的docker宿主机上远程连接到云服务器的mysql容器里,需要一个mysql的客户端工具,需要安装mariadb软件
模拟server.go 程序升级 --》增加了新功能
1.重新产生二进制程序 server
[root@docker Dockerfile]# go build -o server server.go
2.如果静态页面有更新,也需要复制到相关的目录
[root@docker Dockerfile]# mkdir version2
[root@docker Dockerfile]# cd version2/
[root@docker version2]# cp /Dockerfile/docker/Dockerfile .
[root@docker version2]# cp /Dockerfile/server .
[root@docker version2]# cp /Dockerfile/static/ . -r
[root@docker version2]# cp /Dockerfile/templates/ . -r
[root@docker version2]# docker build -t scweb:1.1 .
[root@docker version2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
scweb 1.1 907d859bae91 14 seconds ago 222MB
scweb 1.0 162f3d33f84e 3 hours ago 464MB
3.删除旧的容器和镜像文件
[root@docker version2]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9106914dc4c9 scweb:1.0 "/go/server" 27 minutes ago Up 27 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp scweb-1
[root@docker version2]# docker stop scweb-1
[root@docker version2]# docker rm scweb-1
启动自己制作的镜像的容器
docker run -d -p 8080:8080 --name scweb-1 scweb:1.1
[root@fengdeyong images]# docker pull nginx/nginx-ingress
基础镜像: 提供了一个最基本的环境或者某个程序所依赖的环境 ---》系统、java
alpine 是一个非常小的linux基础镜像 centos ubuntu debian busybox
[root@docker docker]# docker run -it --name alpine-2 alpine sh
/ # ls
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/ # cd /
/ # pwd
/ # exit
[root@docker docker]# mkdir /alpine
[root@docker docker]# cd /alpine/
[root@docker alpine]# cp /etc/yum.repos.d/Centos-7.repo .
[root@docker alpine]# ls
Centos-7.repo Dockerfile
[root@docker alpine]# vim Dockerfile
FROM centos:7.9
WORKDIR /sanchuang
RUN rm -rf /etc/yum.repos.d/CentOS*
COPY Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN mkdir /wang
RUN cd /wang
RUN echo "hello,wang" >/wang/hello.txt
RUN echo "hello,world">/wang/hello.txt
CMD ["bash","-c","sleep 3000"]
[root@docker alpine]# docker build -t sccentos:7.9 .
[root@docker alpine]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sccentos 7.9 a1ccf05ca8f8 37 seconds ago 516MB
alpine latest a606584aa9aa 5 weeks ago 7.8MB
-d 在后台运行程序 -it 开启一个终端,在前台运行 和-d不能同时写
bash 进入容器运行的程序 --rm 当容器退出的时候,自动删除容器
[root@docker alpine]# docker run -it --rm --name sccentos-1 sccentos:7.9 bash
[root@6eec939529fd sanchuang]# pwd
/sanchuang
[root@6eec939529fd sanchuang]# cd /etc/yum.repos.d/
[root@6eec939529fd yum.repos.d]# ls
Centos-7.repo
[root@docker alpine]# docker build -t sccentos:7.8 .
相关文章:
制作镜像
1.镜像 image: 是一个文件,包含了微型操作系统、核心代码(可执行程序)、依赖环境(库) 2.仓库 repository: 存放镜像文件的地方 3.容器: container :是运行镜像的地方--…...
Kylin系列(二)进阶
Kylin系列(二)进阶 目录 简介Kylin架构深入解析 Kylin架构概述核心组件 高级Cube设计 Cube设计原则Cube优化策略 实时数据分析 实时数据处理流程实时Cube构建 高级查询与优化 查询优化技术SQL优化 Kylin与BI工具集成 Tableau集成Power BI集成 监控与调优 系统监控性能调优 常…...
Maven实战.依赖(依赖范围、传递性依赖、依赖调解、可选依赖等)
文章目录 依赖的配置依赖范围传递性依赖传递性依赖和依赖范围依赖调解可选依赖最佳实践排除依赖归类依赖优化依赖 依赖的配置 依赖会有基本的groupId、artifactld 和 version等元素组成。其实一个依赖声明可以包含如下的一些元素: <project> ...<depende…...
关于React17的setState
不可变值 state必须在构造函数中定义 在setState之前不能修改state的值,不要直接修改state,使用不可变值 可能是异步更新 直接使用时异步的 this.setState({count: this.state.count 1 }, () > {console.log(count by callback, this.state.count) // 回调函…...
2024华为OD机试真题-英文输入法Python-C卷D卷-100分
2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述 主管期望你来实现英文输入法单词联想功能,需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词。 按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。 注意 英…...
magento2 安装win环境和linux环境
win10 安装 安装前提,php,mysql,apach 或nginx 提前安装好 并且要php配置文件里,php.ini 把错误打开 display_errorsOn开始安装 检查环境 填写数据库信息 和ssl信息,如果ssl信息没有,则可以忽略 填写域名和后台地址࿰…...
【城市数据集】世界城市数据库和访问门户工具WUDAPT
世界城市数据库和访问门户工具WUDAPT WUDAPTLCZ分类具体步骤参考 在 城市气候研究中,用于描述城市特征的数据集一般采用基于类别的传统方法,将城市地区分为数量有限的类型,从而导致精确度下降。越来越多的新数据集以亚米微尺分辨率描述城市的…...
网络爬虫必备工具:代理IP科普指南
文章目录 1. 网络爬虫简介1.1 什么是网络爬虫?1.2 网络爬虫的应用领域1.3 网络爬虫面临的主要挑战 2. 代理IP:爬虫的得力助手2.1 代理IP的定义和工作原理2.2 爬虫使用代理IP的必要性 3. 代理IP的类型及其在爬虫中的应用3.1 动态住宅代理3.2 动态数据中心…...
JMeter接口测试-5.JMeter高级使用
JMeter高级使用 案例: 用户登录后-选择商品-添加购物车-创建订单-验证结果 问题: JMeter测试中,验证结果使用断言,但断言都是固定的内容假如要判断的内容(预期内容)是在变化的, 有时候还是不确定的, 那该怎么办呢? 解决&…...
网络安全大模型开源项目有哪些?
01 Ret2GPT 它是面向CTF二进制安全的工具,结合ChatGPT API、Retdec和Langchain进行漏洞挖掘,它能通过问答或预设Prompt对二进制文件进行分析。 https://github.com/DDizzzy79/Ret2GPT 02 OpenAI Codex 它是基于GPT-3.5-turbo模型,用于编写…...
【赠书第18期】人工智能B2B落地实战:基于云和Python的商用解决方案
文章目录 前言 1 方案概述 2 方案实施 2.1 云平台选择 2.2 Python环境搭建 2.3 应用开发与部署 2.4 应用管理 2.5 安全性与隐私保护 3 方案优势与效益 4 推荐图书 5 粉丝福利 前言 随着云计算技术的快速发展,越来越多的企业开始将业务迁移至云端&#x…...
《昇思25天学习打卡营第24天》
接续上一天的学习任务,我们要继续进行下一步的操作 构造网络 当处理完数据后,就可以来进行网络的搭建了。按照DCGAN论文中的描述,所有模型权重均应从mean为0,sigma为0.02的正态分布中随机初始化。 接下来了解一下其他内容 生成…...
KeePass密码管理工具部署
KeePass密码管理工具部署 安装包下载入口 双击执行,根据提示完成安装: 安装完成后如图:...
C#中导出dataGridView数据为Excel
C#中导出dataGridView数据为Excel #region 导出Excel功能函数 /// <summary> /// dataGridView 导出Excel功能函数 /// </summary> /// <param name"dataView">dataGridView数据表</param> /// <param name"filePath">路径…...
算法学习6——贪心算法
什么是贪心算法? 贪心算法是一种在每一步选择中都采取当前状态下最优或最有利的选择的算法。其核心思想是通过一系列局部最优选择来达到全局最优解。贪心算法广泛应用于各种优化问题,如最短路径、最小生成树、背包问题等。 贪心算法的特点 局部最优选…...
【C++】标准库:介绍string类
string 一.string类介绍二.string类的静态成员变量三.string类的常用接口1.构造函数(constructor)2.析构函数(destructor)3.运算符重载(operator)1.operator2.operator[]3.operator4.operator 4.string的四…...
未来不会使用 AI 的人真的会被淘汰吗?
AI 是今年大火的一个话题,随着 ChatGPT 之类的一系列大模型开始流行以后,有不少的培训机构宣称这样的口号: “未来不会使用 AI 的人将会被淘汰”。我觉得这个观点本身并没有错,但是关键在于那些培训机构出于自身的利益,故意忽略了…...
K8S及Rancher部署
前言 这篇文写的有点子啰嗦,甚至为了控制篇幅我还分出了其他好几篇文章,只在本文中保留了我认为必须存在。而之所以篇幅这么长,一方面是我在相关领域完全新手,啥啥都不会;而另一方面是我所参考的资料都过于精简&#…...
Qt Creator使用git管理代码
1.在GitHub中新建仓库,设置好仓库名后,其它的设置默认即可。 2.打开git bash,输入以下命令: git config --global user.name "xxxxx" #设置你的GitHub用户名 git config --global user.email "xxxxxxxxx.…...
pandas教程:pandas读取csv文件并指定字段数据类型
文章目录 pandas指定数据类型处理数据类型错误parse_dates参数pandas数据类型处理示例pandas指定数据类型 在读取csv文件时,我们可以使用dtype参数来指定每个列的数据类型。这个参数接受一个字典类型的值,其中键是列名,值是数据类型。数据类型可以是Pandas类型或NumPy类型,…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
