制作镜像
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类型,…...
2026前端面试题
1.vue的通信方式Vue组件通信方式根据组件间的关系(父子、兄弟、跨级、任意组件)可分为多种方案。一、父子组件通信props(父-子)父组件通过属性向子组件传递数据,子组件通过defineProps接收<!-- 父组件 --> <C…...
5分钟搞定RetroArch缩略图:从黑屏到完美游戏封面的全攻略
5分钟搞定RetroArch缩略图:从黑屏到完美游戏封面的全攻略 【免费下载链接】RetroArch Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3. 项目地址: https://gitcode.com/GitHub_Trending/re/RetroArch 还记得打开RetroArch游戏…...
告别付费IP!手把手教你用ZCU102 PS端DP接口点亮显示器(附参数调试心得)
解锁ZCU102 PS端DisplayPort潜力:零成本实现高效显示输出的实战指南 在嵌入式视觉系统开发中,显示输出往往是项目落地的最后一道关卡。当我在多个Zynq UltraScale MPSoC项目中反复遭遇HDMI IP核的授权困扰和PL端实现的复杂性后,意外发现PS端集…...
C#处理复杂JSON数据:Newtonsoft.Json多级嵌套反序列化实战(附避坑指南)
C#处理复杂JSON数据:Newtonsoft.Json多级嵌套反序列化实战(附避坑指南) 在当今数据驱动的开发环境中,JSON已成为事实上的数据交换标准。特别是对于C#开发者而言,处理来自API响应、配置文件或NoSQL数据库的复杂JSON结构…...
告别软件盗版烦恼:用YT88加密狗5分钟搞定C#/Java/Python源代码加密(附完整开发包下载)
5分钟实现多语言源代码加密:YT88加密狗实战指南 独立开发者最头疼的问题之一,就是辛苦编写的代码被轻易反编译或盗用。上周我的一个朋友就遇到了这种情况——他花了三个月开发的Python数据分析工具,刚上线两周就被破解并免费传播。这种经历在…...
AIVideo一站式AI长视频工具与Visual Studio的深度集成开发
AIVideo一站式AI长视频工具与Visual Studio的深度集成开发 1. 引言 作为一名长期使用Visual Studio进行开发的程序员,我经常遇到这样的痛点:想要录制一段代码演示视频,需要反复切换多个软件;想要制作项目介绍视频,得…...
Kubernetes 环境下 SkyWalking 的高效部署与性能调优
1. Kubernetes 环境下的 SkyWalking 部署实战 第一次在 Kubernetes 上部署 SkyWalking 时,我踩了不少坑。记得当时为了调试一个存储配置问题,整整熬了两个通宵。现在回想起来,如果当时有人能给我一份详细的实战指南,至少能节省 80…...
163MusicLyrics:开源高效歌词获取与管理解决方案
163MusicLyrics:开源高效歌词获取与管理解决方案 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 在数字音乐时代,歌词已成为音乐体验不可或缺的一…...
Phi-3-mini-4k-instruct-gguf应用案例:HR招聘话术生成、产品FAQ自动整理、日报模板填充
Phi-3-mini-4k-instruct-gguf应用案例:HR招聘话术生成、产品FAQ自动整理、日报模板填充 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合处理问答、文本改写和内容整理等任务。这个GGUF版本的模型经过优化࿰…...
Pixel Dream Workshop惊艳效果展示:像素化视频帧序列生成与动画合成
Pixel Dream Workshop惊艳效果展示:像素化视频帧序列生成与动画合成 1. 像素艺术的数字复兴 在数字艺术领域,像素风格正经历着令人振奋的复兴。Pixel Dream Workshop作为这一浪潮中的佼佼者,将传统像素艺术与现代AI技术完美融合,…...
