type
status
date
slug
summary
tags
category
icon
password

Oracle Cloud新建实例

⚠️
终止甲骨文云实例时,一定要勾选"永久删除附加的引导卷"

网络接口配置

notion image

保存私有密钥到本地

 
notion image
什么是公钥和私钥?
公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分,由用户自行保管。

入站和出站规则

新建的甲骨文云帐号是关闭了所有的入站连接的,需要在VNIC的子网中处添加规则允许入站
  • 添加入站规则
    • notion image

出入站规则区别

入站规则控制着进入服务器的流量,即从外部网络流向服务器的流量。因此,你需要确保在服务器上设置了允许来自外部网络的流量通过某端口的入站规则。
⚠️
例如从本地访问服务器中的网站8501,需要将入站端口8501/tcp打开
出站规则则控制着离开服务器的流量,即从服务器流向外部网络的流量。在这个情况下,服务器向外部网络发出的流量并不影响外部网络访问服务器上的网页。
⚠️
例如Streamlit的外部URL功能,则需要将出站端口8501/tcp打开

初始环境配置

设置完后通过Termius等工具远程ssh (通过私有密钥)
  • 初始配置

    防火墙配置

    VS-Code远程配置ssh访问

    本地Windows配置OpenSSH

    1. 以管理员身份运行 PowerShell
      1. 如果两者均尚未安装,则此操作应返回以下输出:
        1. 根据需要安装服务器或客户端组件:
          1. 启动并配置 OpenSSH 服务器
            1. 若要使用 PowerShell 卸载 OpenSSH 组件,请使用以下命令:

              VS Code连接远程服务器

              1. 安装Remote-SSH
              1. 配置Remote-SSH
                1. 安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件
                  notion image
                  config内容 (将保存的密钥移动到C:/Users/xxx/.ssh/)
                  notion image

              服务器配置python环境 (建议直接用docker)

              1. 下载Anaconda Linux包,ssh上传到服务器
              1. bash 安装
                1. 配置环境变量
                    • 在服务器上非root用户,不可以通过修改/etc/profile来改变环境变量。但是可以在自己目录下单独添加环境配置文件,方便个人使用。
                    • 创建 .sh脚本,set_env.sh
                    • 添加环境变量信息
                      • notion image
                    • 运行生效set_env.sh
                      • 验证设置成功
                        • 输入python3 和 conda 命令即可
                      • 创建conda环境
                      • 服务器端口查询

                    Docker配置与使用

                    创建Dockerfile

                    在项目根目录创建Dockerfile文件
                    FROM python:3.8 -从docker官网镜像中找到需要的python版本
                     
                    ---no-cache-dir是什么
                    -no-cache-dir 是 pip 安装命令的一个选项,用于指示 pip 在安装依赖包时不使用缓存目录。通常情况下,pip 会在本地缓存下载的依赖包,以便在下次安装相同的依赖时可以加快安装速度。缓存目录通常位于用户的主目录下的 .cache/pip 目录中。使用 --no-cache-dir 选项可以强制 pip 在每次安装依赖时都重新下载依赖包,而不使用本地缓存。这对于确保安装过程中始终使用最新版本的依赖包非常有用,尤其是在开发环境或测试环境中。
                    为什么这个requirements.txt是在 /app里面
                    在 Dockerfile 中指定RUN pip install -r /app/requirements.txt的原因是因为在容器中,工作目录被设置为/app,所以需要在这个目录下安装依赖。这样做有几个好处:
                    1. 一致性:通过将 requirements.txt 放置在 /app 目录下,可以确保每次构建容器时都会使用相同的依赖列表。这样可以避免由于依赖不一致而导致的意外行为或错误。
                    1. 清晰性:将 requirements.txt 放置在 /app 目录下使得 Dockerfile 更加清晰和易读。任何查看 Dockerfile 的人都可以立即知道哪里存放了依赖列表,并且知道安装依赖的步骤。
                    1. 便捷性:如果将 requirements.txt 放置在其他目录下,可能需要在 Dockerfile 中进行额外的配置来指定这个路径。而将其放置在工作目录下可以简化这个过程,因为默认情况下 Dockerfile 会在工作目录中进行操作。

                    本地 ( windows) 安装docker

                    1. 打开Hyper-v
                      1. ⚠️
                        进入电脑的控制面板->程序->启用或关闭Windows功能->把Hyper-v勾上,启用后电脑会重启
                        notion image
                    1. 下载docker for windows
                      1. ⚠️
                        确保打开虚拟化 (如果没有,必须重启在BIOS界面打开虚拟化)
                        notion image
                    1. 更改工作目录,不然镜像放在C盘要爆炸
                      1. notion image

                    本地使用Docker

                    构建镜像

                    使用命令行进入到项目根目录( -t 打tag)
                    这会基于Dockerfile中的指令构建一个名为<image name >的镜像
                    <tag name>默认为latest

                    本地运行镜像进行验证

                    ⚠️
                    这会将容器内部的8501端口映射到主机的8501端口上,并在本地运行Streamlit应用程序。但是在本地访问依然需要用localhost:8501进行访问

                    推送到Docker Hub

                    1. 登录到Docker Hub账户
                      1. Docker Hub新建仓库
                        1. notion image
                      1. 标记镜像,添加你的用户名和仓库名
                        1. 推送镜像

                          云端Ubuntu使用Docker

                          安装和启动docker

                          拉取镜像并运行

                          Docker 相关指令

                          Docker 相关概念

                          Docker和虚拟机

                          Docker容器与传统虚拟机在架构和工作原理上有很大的区别:
                          1. 资源利用率:
                              • 虚拟机:每个虚拟机都需要独立的操作系统镜像,包括内核、系统库和应用程序运行时环境,因此会消耗大量的系统资源。
                              • Docker容器:所有容器共享主机系统的内核,它们只需要自己的应用程序和依赖项,因此更加轻量级,可以更有效地利用系统资源。
                          1. 启动时间:
                              • 虚拟机:启动一个虚拟机通常需要数分钟的时间,因为它需要启动完整的操作系统。
                              • Docker容器:启动一个容器几乎可以立即完成,因为它们不需要启动整个操作系统,只需加载应用程序和相关的依赖项。
                          1. 隔离性:
                              • 虚拟机:虚拟机提供了较强的隔离性,每个虚拟机都有自己的文件系统、网络和进程空间。
                              • Docker容器:容器也提供了一定程度的隔离性,但与虚拟机相比,它们共享主机系统的内核,因此容器之间的隔离性较虚拟机略差。
                          1. 部署和扩展:
                              • 虚拟机:由于虚拟机的启动时间长且占用资源多,部署和扩展相对复杂,通常需要预先规划和配置好虚拟机。
                              • Docker容器:容器的轻量级和快速启动特性使得部署和扩展变得更加灵活和高效,可以根据需求快速创建、销毁和扩展容器实例。

                          镜像(Image)和容器(Container)

                          1. 镜像(Image)
                              • 镜像是一个只读的模板,它包含了用于运行容器的文件系统内容、运行时配置信息以及其他一些配置参数。
                              • 镜像可以看作是一个软件的打包,它包含了应用程序运行所需的所有文件和依赖项,包括操作系统、应用程序代码、运行时库等。
                              • 镜像是构建容器的基础,可以通过 Dockerfile 来定义和创建镜像。
                          1. 容器(Container)
                              • 容器是镜像的运行实例,是一个独立、轻量级的、可执行的软件包,其中包含了运行应用程序所需的所有内容,包括文件系统、环境变量、应用程序代码、运行时库等。
                              • 容器可以被启动、停止、删除、暂停等操作,它们是在镜像的基础上创建的可读写的实体。
                              • 每个容器都运行在独立的命名空间中,因此它们可以独立于宿主系统和其他容器运行,提供了隔离性和轻量级的虚拟化。

                          Docker和Kubernetes

                          1. 介绍
                            1. Docker和Kubernetes(通常简称为K8s)是两个不同的技术,它们在容器化应用程序和容器编排方面扮演着不同的角色,下面是它们之间的主要区别:
                            2. 抽象层次:
                                • Docker:Docker主要关注于容器的构建和运行,提供了一系列命令行工具和API,如docker build、docker run等,用于管理单个容器。
                                • Kubernetes:Kubernetes则更加注重在多个主机上管理和编排容器,它提供了一个高层次的抽象,如Pods、Deployments、Services等,用于管理容器集群的部署、伸缩和负载均衡。
                            3. 功能定位:
                                • Docker:Docker是一种容器化平台,用于打包、分发和运行应用程序及其依赖项。它提供了创建、管理和运行容器的工具,使得开发人员可以轻松地将应用程序打包成独立的容器,从而实现跨平台和跨环境的一致性。
                                • Kubernetes:Kubernetes是一种容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一组强大的工具和API,用于管理容器集群,实现自动化的容器部署、负载均衡、自动伸缩等功能。
                            4. 管理对象:
                                • Docker:Docker主要管理单个容器实例,用户需要直接使用Docker命令来创建、启动、停止和删除容器。
                                • Kubernetes:Kubernetes管理容器集群,用户定义和管理的是抽象的部署、服务、副本集等对象,Kubernetes会根据用户定义的规则自动进行容器的调度和管理。
                            5. 应用场景:
                                • Docker:适用于需要快速打包和部署单个应用程序的场景,如开发、测试和小型生产环境。
                                • Kubernetes:适用于需要自动化管理大规模容器集群的场景,如高可用性生产环境和需要水平扩展的应用程序。
                              综上所述,Docker和Kubernetes是互补的技术,Docker用于容器的构建和运行,而Kubernetes用于容器集群的管理和编排。在实际应用中,它们通常是搭配使用的,Docker用于打包应用程序成容器,而Kubernetes用于管理和运行这些容器。
                          1. 举例
                            1. 假设你是一家电子商务公司的技术团队成员,负责开发和部署在线商城的后端服务。你们的架构使用微服务架构,将不同的服务拆分为独立的组件来实现。
                            2. Docker的使用:
                                • 你们的团队使用Docker来容器化每个后端服务,比如用户认证服务、订单服务、支付服务等。每个服务都有自己的Docker镜像,其中包含了服务的代码、运行时环境和依赖项。
                                • 开发人员可以使用Docker来在本地环境构建和运行这些服务,确保开发环境和生产环境的一致性。
                                • 每个服务都可以使用Docker命令来启动、停止和删除,方便开发人员进行本地开发和测试。
                            3. Kubernetes的使用:
                                • 一旦各个服务容器化完成,你们将使用Kubernetes来管理和部署这些服务。你们将所有的服务定义为Kubernetes的Deployment对象,并使用Service对象来暴露这些服务。
                                • Kubernetes会根据你们定义的规则来自动在集群中调度和运行这些服务,确保它们始终处于运行状态,并根据需要进行水平扩展和负载均衡。
                                • 当有新的版本发布或者需要更新某个服务时,你们可以使用Kubernetes的Rolling Update功能来实现无缝地更新,确保服务的高可用性和稳定性。

                          Docker Compose

                          1. 介绍
                            1. Docker Compose是一个用于定义和运行多个Docker容器应用程序的工具。它允许您使用一个单独的YAML文件来配置应用程序的服务、网络、卷和其他功能,然后使用一个命令就可以一次性启动、停止和管理整个应用程序的容器集合。
                              使用Docker Compose,您可以在单个文件中定义多个服务,每个服务可以由一个或多个容器组成。这些服务可以相互之间进行通信,并且可以定义他们之间的依赖关系和启动顺序。Docker Compose还可以帮助您简化本地开发环境的设置,因为您可以轻松地在本地机器上一次性启动所有相关的容器服务,而不必手动设置每个服务的运行参数。
                          1. 举例
                            1. 在这个例子中,我们定义了三个服务:web、api和db。web服务使用Nginx镜像,api服务使用自定义的应用程序镜像,而db服务使用MySQL镜像。api服务依赖于db服务,在启动api服务之前,需要先启动db服务。我们还定义了端口映射,将主机的80端口映射到web服务的容器端口80上。
                              通过这个Docker Compose文件,您可以使用docker-compose up命令一次性启动所有服务,或者使用docker-compose down命令停止并删除所有相关的容器。这使得管理和运行多个相关的容器应用程序变得更加简单和方便。
                               
                               
                           
                           
                           
                          数据库系统和SQL大数据与云计算
                          Loading...
                          Boomshakalaka
                          Boomshakalaka
                          CJY
                          小红书
                          最新发布
                          数据库系统和SQL
                          2025-3-21
                          Nodejs Windows安装教程
                          2025-3-16
                          计算机网络
                          2025-3-16
                          机器学习算法
                          2025-3-16
                          云里雾里看梅里-云南
                          2025-3-16
                          南半球纽约 - 悉尼
                          2025-3-16