您的位置:首页 > 游戏 > 手游 > 怎么自己制作网页新闻_电子元器件采购商城_推广互联网推广_手机seo快速排名

怎么自己制作网页新闻_电子元器件采购商城_推广互联网推广_手机seo快速排名

2025/3/12 23:08:13 来源:https://blog.csdn.net/m0_65534674/article/details/146131677  浏览:    关键词:怎么自己制作网页新闻_电子元器件采购商城_推广互联网推广_手机seo快速排名
怎么自己制作网页新闻_电子元器件采购商城_推广互联网推广_手机seo快速排名

Docker安装

VScode中安装Docker扩展

Docker Desktop

任务栏搜索功能,启用"适用于Linux的Windows子系统" + "虚拟机平台"

# 管理员终端
wsl --set-default-version 2
wsl --update --web-download

下载Windows版本安装包,进入此项目的Release https://github.com/tech-shrimp/docker_installer/releases

start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker
// 指定安装位置

镜像加速源

// docker>设置>Docker Engine>
"registry-mirrors": ["https://registry.docker-cn.com"]
​
// "registry-mirrors": ["https://registry.docker-cn.com"],["https://docker.mirrors.ustc.edu.cn"]
镜像加速器镜像加速器地址
Docker 中国官方镜像https://registry.docker-cn.com
DaoCloud 镜像站http://f1361db2.m.daocloud.io
Azure 中国镜像https://dockerhub.azk8s.cn
科大镜像站https://docker.mirrors.ustc.edu.cn
阿里云https://ud6340vz.mirror.aliyuncs.com
七牛云https://reg-mirror.qiniu.com
网易云https://hub-mirror.c.163.com
腾讯云https://mirror.ccs.tencentyun.com

应用部署

在写好的应用根目录下创建一个Dockerfile文件

FROM golang:1.13-alpine 
# // 指定之后所有Dockerfile命令都在/app目录下执行
WORKDIR   /app
# 将当前目录下的所有文件拷贝到/app目录下
# COPY . .
COPY go.mod go.sum ./
# RUN go mod download,下载依赖包,创建镜像时使用
RUN go mod download
# CMD 中指定运行的命令,运行容器时使用
CMD [ "go", "run", "main.go" ]
# -t指定镜像名  .dockerfile的路径
docker build -t my-finace .
# 启动容器 -p容器端口映射到主机80是本地5000是容器上的端口 -d 后台运行
docker run -p 80:5000 -d my-finance

常用命令

// 例举所有的容器 
docker ps
// 停止容器
docker stop <容器ID>
// 重启容器
docker restart <容器ID>
// 删除容器,删除后之前的修改和新添加的数据会全部丢失
docker rm <容器ID>
// 启动一个远程Shell
docker exec -it <容器ID> /bin/bash

防丢失数据

  • 删除容器,删除后之前的修改和新添加的数据会全部丢失

  • 如果想保留容器中的数据,可使用Docker提供的volume数据卷

    // 创建数据卷
    docker volume create
    // 随后启动容器时 -v指定将数据卷挂载到容器的哪一个路径上
    docker run -dp 80:5000 -v my-finance-data:/etc/finance my-finance
    // 把my-finance-data挂载到/etc/finance下

多个容器

  • 创建一个docker-compose.yml文件

    # docker-compose.yml
    version: '3'
    # 通过services定义多个容器
    services:web:build: .ports:- "80:5000"db:image: "mysql"environment:MYSQL_DATABASE: finance-db  # 数据库名MYSQL_ROOT_PASSWORD:  root  # 数据库密码volumes:- my-finance-data:var/lib/mysql  # 挂载数据卷,用来永久存放数据
    ​
    volumes:my-finance-data:
    // 运行所有容器 -d后台运行
    docker compose up -d
    // 停止并删除所有的容器,新创建的数据卷需手动删除,除非在后面加 --volumes 参数
    docker compose down .

<!-- -->

Docker快速安装软件

Docker 安装 Redis

Docker 官方镜像仓库查找 Docker 镜像仓库

// cmd 
docker run -d -p 6379:6379 --name redis redis:latest

Docker 命令参考

Docker 安装 Wordpress

Docker 官方镜像仓库查找 Docker 镜像仓库

# docker-compose.yml
version: '3.1'services:wordpress:image: wordpressrestart: alwaysports:- 8080:80environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: exampleuserWORDPRESS_DB_PASSWORD: examplepassWORDPRESS_DB_NAME: exampledbvolumes:- wordpress:/var/www/htmldb:image: mysql:5.7restart: alwaysenvironment:MYSQL_DATABASE: exampledbMYSQL_USER: exampleuserMYSQL_PASSWORD: examplepassMYSQL_RANDOM_ROOT_PASSWORD: '1'volumes:- db:/var/lib/mysqlvolumes:wordpress:db:
// 在放docker-compose.yml的文件目录下打开cmd\Power Shell
docker-compose up-d

更多相关命令

docker ps 查看当前运行中的容器 docker images 查看镜像列表 docker rm container-id 删除指定 id 的容器 docker stop/start container-id 停止/启动指定 id 的容器 docker rmi image-id 删除指定 id 的镜像 docker volume ls 查看 volume 列表 docker network ls 查看网络列表

制作自己的镜像

为自己的Web项目构建镜像

示例项目代码

这是一个 Nodejs + Koa2 写的 Web 项目,提供了简单的两个演示页面。 软件依赖:nodejs 项目依赖库:koa、log4js、koa-router

1、在工程目录下编写 Dockerfile文件

// 工程目录/dockerfile
FROM node:11
MAINTAINER easydoc.net
// 复制当前代码到app目录下
ADD . /app
// 设置容器启动后的默认运行目录
WORKDIR /app
// 运行命令,安装依赖
// RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
// 例如 RUN npm install && cd /app && mkdir logs
RUN npm install --registry=https://registry.npm.taobao.org
// CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
// 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
// 例如 CMD cd /app && ./start.sh
CMD node app.js
// 使用官方Node.js镜像作为基础镜像
FROM node:14
// 设置工作目录
WORKDIR /usr/src/app
// 复制package.json和package-lock.json到工作目录
COPY package*.json ./
// 安装项目依赖
RUN npm install --registry=https://registry.npm.taobao.org
// 复制项目文件到工作目录
COPY . .
// 暴露端口
EXPOSE 3000
// 定义环境变量
ENV NAME World
// 运行应用
CMD ["node", "app.js"]

Dockerfile文档

若写 Dockerfile 时遇到一些运行、依赖错误等,则可以直接运行一个依赖的底,然后进入终端进行配置环境,成功后再把做过的步骤命令写道 Dockerfile 文件中 例如上面的底是node:11,我们可以运行docker run -it -d node:11 bash,跑起来后进入容器终端配置依赖的软件,然后尝试跑起来自己的软件,最后把所有做过的步骤写入到 Dockerfile 就好了

2、Build 为镜像(安装包)和运行

docker build -t test:v1 .
// -t  设置镜像名字和版本号
// .   在当前目录
docker run -p 8080:8080 --name test-hello test:v1
// -p 映射容器内端口到宿主机
// --name 容器名字
// -d 后台运行

目录挂载

目录挂载解决的问题

  • 使用 Docker 运行后,我们改了项目代码不会立刻生效,需要重新buildrun,很是麻烦

  • 容器里面产生的数据,例如 log 文件,数据库备份文件,容器删除后就丢失了

几种挂载方式

  • bind mount 直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上

  • volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上

  • tmpfs mount 适合存储临时文件,存宿主机内存中。不可多容器共享。

文档参考

挂载演示

bind mount // 用绝对路径 -v D:/code:/app
volume // 只需要一个名字 -v db-data:/app
// 示例 -d 镜像名:版本号
docker run -p 8080:8080 --name test-hello -v D:/code:/app -d test:v1

注意! 因为挂载后,容器里的代码就会替换为你本机的代码了,如果你代码目录没有node_modules目录,你需要在代码目录执行下npm install --registry=https://registry.npm.taobao.org确保依赖库都已经安装,否则可能会提示“Error: Cannot find module ‘koa’” 如果你的电脑没有安装 nodejs,你需要安装一下才能执行上面的命令

多容器通信(放到同一个网络)

学习目标

项目往往需要数据库、缓存等配合运作 把前面的 Web 项目增加一个 Redis 依赖,多跑一个 Redis 容器,演示多容器之间的通信

创建虚拟网络

要想多容器之间互通,从 Web 容器访问 Redis 容器,我们只需要把他们放到同个网络中就可以了

文档参考

演示

# 创建一个名为 test-net 的网络
docker network create test-net
# 运行 Redis容器 在 test-net 网络中,别名 redis
docker run -d --name redis --network test-net --network-alias redis redis:latest

修改代码中访问redis的地址为网络别名(演示)

image.png

运行 Web 项目,使用同个网络
# 修改代码后重新运行(目录挂载)
docker run -p 8080:8080 --name test -v D:/test:/app --network test-net -d test:v1> # 查看数据 容器终端查看数据是否一致
> http://localhost:8080/redis

Docker-Compose(桌面版本自带)

Docker-Compose解决问题

如果项目依赖更多的第三方软件,需要管理的容器就更加多,每个都要单独配置运行,指定网络

这样非常麻烦,而 docker-compose可以把项目的多个服务集合到一起,一键运行

安装 Docker Compose

  • 安装的桌面版 Docker,则不需要额外安装

  • 若是(没图形界面的)服务器版 Docker,则需单独安装 安装文档

  • docker-compose
    // 检查是否安装成功

编写脚本

要把项目依赖的多个服务集合到一起,我们需要编写一个docker-compose.yml文件,描述依赖哪些服务 参考文档

# 自动在同一个网络
# 版本号
version: "3.7"# 需要依赖的服务
services:app:# 直接从工程buildbuild: ./# 从容器8080中暴露80端口ports:- 80:8080# 挂载目录 当前目录挂载到app目录volumes:- ./:/app# 增加 TZ=Asia/Shanghai 可改为北京时间environment:- TZ=Asia/Shanghairedis:# 有镜像,不用build了image: redis:5.0.13# 挂载volumes:- redis:/data# 增加 TZ=Asia/Shanghai 可改为北京时间environment:- TZ=Asia/Shanghaivolumes:redis:

运行

// 在 docker-compose.yml 文件所在目录
docker-compose up/* 
在后台运行只需要加一个 -d 参数 docker-compose up -d
查看运行状态 docker-compose ps
停止运行 docker-compose stop
重启 docker-compose restart
重启单个服务 docker-compose restart service-name
service-name 是.yml定义的名字
进入容器命令行 docker-compose exec service-name sh
查看容器运行log docker-compose logs [service-name]
*/

命令参考

发布和部署

镜像仓库介绍

镜像仓库用来存储我们 build 出来的“安装包”,Docker 官方提供了一个 镜像库,里面包含了大量镜像,基本各种软件所需依赖都有,要什么直接上去搜索

我们也可以把自己 build 出来的镜像上传到 docker 提供的镜像库中 当然你也可以搭建自己的私有镜像库,或者使用国内各种大厂提供的镜像托管服务,例如:阿里云、腾讯云

上传镜像

  • 首先你要先 注册一个账号

  • 创建一个镜像库

    image.png

// 命令行登录账号
docker login -u username
// 新建一个tag,名字必须跟你注册账号一样
docker tag test:v1 username/test:v1
// 推上去
docker push username/test:v1
// 部署试下
docker run -dp 8080:8080 username/test:v1

docker-compose 中也可以直接用这个镜像了
version: "3.7"services:app:
#    build: ./image: helloguguji/test:v1ports:- 80:8080volumes:- ./:/appenvironment:- TZ=Asia/Shanghairedis:image: redis:5.0.13volumes:- redis:/dataenvironment:- TZ=Asia/Shanghaivolumes:redis:

阿里云容器托管

docker 官方的镜像托管有时候上传和下载都太慢了,如果你想要更快的速度,可以使用阿里云的免费镜像托管

备份和迁移数据

迁移方式介绍

容器中的数据,如果没有用挂载目录,删除容器后就会丢失数据。 前面我们已经讲解了如何 挂载目录 如果你是用bind mount直接把宿主机的目录挂进去容器,那迁移数据很方便,直接复制目录就好了 如果你是用volume方式挂载的,由于数据是由容器创建和管理的,需要用特殊的方式把数据弄出来

视频教程

备份和导入 Volume 的流程

备份:

  • 运行一个 ubuntu 的容器,挂载需要备份的 volume 到容器,并且挂载宿主机目录到容器里的备份目录。

  • 运行 tar 命令把数据压缩为一个文件

  • 把备份文件复制到需要导入的机器

导入:

  • 运行 ubuntu 容器,挂载容器的 volume,并且挂载宿主机备份文件所在目录到容器里

  • 运行 tar 命令解压备份文件到指定目录

备份 MongoDB 数据演示

  • 运行一个 mongodb,创建一个名叫mongo-data的 volume 指向容器的 /data 目录 docker run -p 27018:27017 --name mongo -v mongo-data:/data -d mongo:4.4

  • 运行一个 Ubuntu 的容器,挂载mongo容器的所有 volume,映射宿主机的 backup 目录到容器里面的 /backup 目录,然后运行 tar 命令把数据压缩打包 docker run --rm --volumes-from mongo -v d:/backup:/backup ubuntu tar cvf /backup/backup.tar /data/

最后你就可以拿着这个 backup.tar 文件去其他地方导入了。

恢复 Volume 数据演示

  • 运行一个 ubuntu 容器,挂载 mongo 容器的所有 volumes,然后读取 /backup 目录中的备份文件,解压到 /data/ 目录 docker run --rm --volumes-from mongo -v d:/backup:/backup ubuntu bash -c "cd /data/ && tar xvf /backup/backup.tar --strip 1"

注意,volumes-from 指定的是容器名字 strip 1 表示解压时去掉前面1层目录,因为压缩时包含了绝对路径

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com