如何从零开始搭建服务器

article/2025/9/15 1:29:01

文章目录

前言

记录如何将一台空服务器搭建满足开发需要。

一、Docker是什么?

二、Docker搭建

1.安装与配置

2.配置 Docker 容器与镜像

3.Docker 常用命令

4.GUI 管理配置

三、Docker搭建Mysql数据库

1.建立镜像

2.一般来说数据库容器不需要建立目录映射

3.连接mysql

总结



前言


记录如何将一台空服务器搭建满足开发需要。

一、Docker是什么?

Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。

docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

  • 1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
  • 2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
  • 3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。

二、Docker搭建

1.安装与配置

1.安装依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.设置阿里云镜像源

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装 Docker-CE

  • 重建 Yum 缓存。
  • 安装 Docker-CE ,请执行一下命令进行安装:
sudo yum install docker-ce

4.启动 Docker-CE

sudo systemctl enable docker 
sudo systemctl start docker

5.[可选] 为 Docker 建立用户组

docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。

1. 建立 Docker 用户组

sudo groupadd docker

2.添加当前用户到 docker 组

sudo usermod -aG docker $USER

6.镜像加速配置

这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。

然后执行以下命令:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["你的加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

之后重新加载配置,并且重启 Docker 服务

systemctl daemon-reload systemctl restart docker

2.配置 Docker 容器与镜像

1.拉取镜像

拉取微软在 Docker 上的 aspnetcore 镜像:

docker pull microsoft/aspnetcore

之后执行以下命令查看是否拉取成功:

docker images

3.Docker 常用命令

1.拉取镜像

docker pull

2.删除容器

docker rm <容器名 or ID>

3.查看容器日志

docker logs -f <容器名 or ID>

4.查看正在运行的容器

docker ps docker ps -a # 为查看所有的容器,包括已经停止的。

5.删除所有容器

docker rm $(docker ps -a -q)

6.停止、启动、杀死指定容器

docker start <容器名 or ID> # 启动容器 
docker stop <容器名 or ID> # 启动容器 
docker kill <容器名 or ID> # 杀死容器

7.查看所有镜像

docker images

8.拉取镜像

docker pull <镜像名:tag> 
# 例如以下代码 
docker pull sameersbn/redmine:latest

9.后台运行

docker run -d <Other Parameters> 
# 例如 
docker run -d -p 127.0.0.1:33301:22 centos6-ssh

10.暴露端口

# 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口

11.映射数据卷

docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址

4.GUI 管理配置

这里推荐使用 Portainer 作为容器的 GUI 管理方案。

官方地址:https://portainer.io/install.html

安装命令:

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
访问你的 IP:9000 即可进入容器管理页面。

访问你的 IP:9000 即可进入容器管理页面。

如下:


三、Docker搭建Mysql数据库

1.建立镜像

        (1)拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)

docker pull mysql:5.7   # 拉取 mysql 5.7
docker pull mysql       # 拉取最新版mysql镜像

MySQL文档地址https://hub.docker.com/_/mysql/

        (2)检查是否拉取成功

$ sudo docker images

2.一般来说数据库容器不需要建立目录映射

sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    • –name:容器名,此处命名为mysql
    • -e:配置信息,此处配置mysql的root用户的登陆密码
    • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口

(1)如果要建立目录映射

duso docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
    • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

(2)查看 mysql 是否运行

docker ps

docker container ls
    • 可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字

3.连接mysql

(1)进入docker本地连接mysql客户端

docker exec -it mysql bash mysql -uroot -p123456

(2)如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:

    • 防火墙阻拦
# 开放端口:
$ systemctl status firewalld
$ firewall-cmd  --zone=public --add-port=3306/tcp -permanent
$ firewall-cmd  --reload
# 关闭防火墙:
$ sudo systemctl stop firewalld
    • 需要进入docker本地客户端设置远程访问账号
$ sudo docker exec -it mysql bash
$ mysql -uroot -p123456
mysql> grant all privileges on *.* to root@'%' identified by "123456";
mysql>FLUSH PRIVILEGES;

原理:

# mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)mysql> use mysql;
Database changedmysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host                    | user      | password                                                                 |
+--------------+------+-------------------------------------------+
| localhost              | root     | *A731AEBFB621E354CD41BAF207D884A609E81F5E      |
| 192.168.1.1            | root     | *A731AEBFB621E354CD41BAF207D884A609E81F5E      |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)mysql> grant all privileges  on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host                    | user      | password                                                                 |
+--------------+------+-------------------------------------------+
| localhost              | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
| 192.168.1.1            | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
| %                       | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)

(3)mysql 时区差8个小时设置方法

       进入容器

docker exec -it mysql bash

      登录 mysql

查看系统时间和时区
select now();
show variables like '%time_zo

       如果 time_zone 时区是 SYSTEM 而不是东八区,也就是+8:00,那么修改配置文件

vi /etc/mysql/my.cnf
default-time-zone = '+08:00'

       如果出现 vi command not found 则执行

apt-get update apt-get install vim

      修改完成后重启 mysql 容器,

      查看正在运行的容器信息

docker ps

      重启容器 

docker restart 容器id

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。


http://chatgpt.dhexx.cn/article/wGvDMy7i.shtml

相关文章

Node 简单搭建服务器

作为前端开发能自己动手搭建一个本地服务器真的太有必要了 一. 准备Node 环境 下载安装就可以,一步一步完成,默认路径就可以,不是默认路径需要自己配置环境变量 cmd 小黑屋 输入node 二. node 如何直接运行 js 文件 node fileName 即可运行对应的文件 路径正确就ok 依赖打…

动态链路聚合

客户需求&#xff1a;增加链路带宽&#xff0c;提高链路可靠性 实验步骤&#xff1a; 静态聚合的端口不与对端设备交互信息 动态聚合是双方协商&#xff0c;端口使用LACP协议与对端交互信息 聚合组中配置相同&#xff0c;端口号最小的是参考端口 #修改设备名称 <H3C>sys …

Windows 10 链路聚合

Windows 10 链路聚合 自己买了一个usb的HUB网口&#xff0c;之前电脑上有有个千兆网线插在路由器上&#xff0c;于是就想着做链路聚合&#xff0c;找了很多做链路聚合的教程&#xff0c;都没有找到适合的&#xff0c;于是就自己查找了官网的知识。提取精华。分享给大家 链路聚…

交换机之间的链路聚合

实训日期 2021.05.12-19 一、实训目的 通过上机实训&#xff0c;使学生掌握&#xff1a; &#xff08;1&#xff09;能够实现跨交换机上实现VLAN方法&#xff1b; &#xff08;2&#xff09;能够掌握将交换机端口分配到VLAN中的操作技巧 二、实训原理 把聚合&#xff08;绑定…

各厂商-链路聚合配置

各厂商-链路聚合配置 华为网络拓扑链路聚合配置 华三网络拓扑链路聚合配置 锐捷网络拓扑链路聚合配置 思科网络拓扑链路聚合配置 在工作中会经常遇到配置不同厂家的设备&#xff0c;此次实验主要是一些常见厂商的交换设备&#xff0c;并且只配置“负载分担模式”&#xff0c;不…

链路聚合协议

链路聚合 基础知识 在企业网络中&#xff0c;所有设备的流量在转发到其他网络前都会汇聚到核心层&#xff0c;再由核心区设备转发到其他网络&#xff0c;或者转发到外网。因此&#xff0c;在核心层设备负责数据的高速交换时 &#xff0c;容易发生拥塞。在核心层部署链路聚合&a…

链路聚合和LACP

知识重点 链路聚合链路聚合简介&#xff1a; 以太网链路聚合Eth-Trunk简称链路聚合&#xff0c;它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路&#xff0c;从而实现增加链路带宽的目的。同时&#xff0c;这些捆绑在一起的链路通过相互间的动态备份&#xff0c;可以有…

链路聚合(二层链路聚合划分)

目录 前言一、端口绑定技术二、实现条件三、链路聚合的分类四、二层交换机链路聚合划分实验总结 前言 前两章我们讲的是相同vlan和不同vlan之间的通信技术&#xff0c;今天要说的是链路聚合。 一、端口绑定技术 端口绑定技术&#xff1a;链路聚合(Link Aggregation) 是将一组物…

华为eNSP配置链路聚合

华为eNSP配置链路聚合 一、配置交换机SW1二、配置交换机SW2三、配置成功后查看如下图所示 链路聚合/链路捆绑/端口聚合/eth-channel。 采用链路聚合技术可以在不进行硬件升级的条件下&#xff0c;通过将多个物理接口捆绑为一个逻辑接口&#xff0c;来达到增加链路带宽的目的。在…

链路聚合,链路聚合是什么意思

链路聚合是将两个或更多数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。链路聚合一般用来连接一个或多个带宽需求大的设备&#xff0c;例如连接骨干网络的服务器或服务器群。   如果聚合的每个链路都遵循不同的物理路径,则聚合链路也提供冗余和容错…

链路聚合的原理以及配置

链路聚合的原理以及配置 一、链路聚合的概述二、链路聚合的原理三、链路聚合的配置 一、链路聚合的概述 链路聚合&#xff08;Link Aggregation&#xff09; 是将两个或更多数据信道结合成一个单个的信道&#xff0c;该信道以一个单个的更高带宽的逻辑链路出现。链路聚合一般用…

eNSP链路聚合

链路聚合原理 逻辑链路的带宽增加了大约(n-1)倍&#xff0c;这里&#xff0c;n为聚合的路数。另外&#xff0c;聚合后&#xff0c;可靠性大大提高&#xff0c;因为&#xff0c;n条链路中只要有一条可以正常工作&#xff0c;则这个链路就可以工作。除此之外&#xff0c;链路聚合…

【技术分享】链路聚合

在企业网络中&#xff0c;所有设备的流量在转发到其他网络前都会汇聚到核心层&#xff0c;再由核心区设备转发到其他网络&#xff0c;或者转发到外网。因此&#xff0c;在核心层设备负责数据的高速交换时&#xff0c;容易发生拥塞。在核心层部署链路聚合&#xff0c;可以提升整…

什么是链路聚合

什么是链路聚合 链路聚合&#xff08;Link Aggregation&#xff09;亦称主干技术&#xff08;Trunking&#xff09;或捆绑技术&#xff08;Bonding&#xff09;&#xff0c;是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法。随着网络规模不断扩大&#xff0c…

链路聚合的配置(学习笔记)

一、手动配置链路聚合 拓扑图 要求&#xff1a;通过手动配置交换机SW1和SW2的GE0/0/1、GE0/0/2端口来进行链路聚合。配置过程 SW1的配置 SW2的配置 二、LACP配置链路聚合 拓扑图 要求&#xff1a;通过LACP配置交换机SW1和SW2的GE0/0/1、GE0/0/2端口来进行链路聚合。配…

链路聚合(二层链路和三层链路)

昨天主要介绍了三层交换机&#xff0c;今天顺其自然就讲到了链路聚合&#xff0c;因为是交换机中一个比较重要的技术&#xff0c;下面我们开始。 目录 一、单臂路由和三层交换的复习 二、端口绑定技术 三、链路聚合/端口聚合/端口绑定实现的条件 四、三层链路和二层链路的…

链路聚合(华为)

一、链路聚合技术 随着我们网络的不断拓展&#xff0c;业务流量也随之增多&#xff0c;那么我们就开始需要多链路进行通信 故研究出一个技术Eth-Trunk&#xff08;链路捆绑&#xff09; 作用&#xff1a; 可以把多个独立的物理端口绑定在一起&#xff0c;当做一个大带宽逻辑…

链路聚合原理及配置过程

目录 一.链路聚合的概念二.链路聚合的实现条件三.端口聚合&#xff08;链路聚合&#xff09;的分类四.实现二层交换机链路聚合操作4.1、项目拓扑图4.2、交换机设置4.3、PC机设置4.4、连通性及检查是否绑定成功五.总结 一.链路聚合的概念 端口绑定技术又称链路聚合&#xff08;…

链路聚合详细解释

一&#xff0c;链路聚合的基本概念 产生背景&#xff1a; 1.随着网络规模的扩大&#xff0c;用户对骨干链路的带宽和可靠性提出了越来越高的要求。在传统技术中&#xff0c;常用更换高速率的接口板或者更换高速率接口板的设备的方式来增加带宽&#xff0c;但这种方案需要付出高…

配置链路聚合

实验拓扑如下&#xff1a; 在sw1和sw2上配置手工链路聚合 删除手工链路聚合&#xff0c;在 SW1 和 SW2 上配置静态 LACP 模式链路聚合&#xff0c;要求 SW1 为主动端&#xff0c;有两条活动链路&#xff0c; 其中 G0/0/5 接口处于备份状态 具体操作步骤如下&#xf…