linux下软件安装

一、虚拟机网络说明

1 桥接模式

相当于将虚拟机直接接入局域网中,这时会独占IP地址.可以与本机通过局域网通信.
规则: 如果需要与局域网中的其他设备进行通信 则首选桥接模式.
特点:在局域网址的其他主机 可以访问虚拟机
依赖:要想使用桥接则必须有物理设备 (路由器(WIFI)/交换机)
在这里插入图片描述

2 NAT模式

相当于在网络环境中会开辟一块全新的网络空间.只有主机能够访问.
特点:NAT模式只有主机访问,其他人通过IP地址禁止访问.
在这里插入图片描述

3 镜像下载地址

  • http://mirrors.163.com/centos/7/isos/x86_64/
  • http://mirrors.sohu.com/centos/7/isos/x86_64/

二、防火墙

1 防火墙配置

说明:防火墙中有一个配置文件,表示当Linux系统启动时防火墙应该如何操作!!!
需求: 告诉linux系统以后开机不需要启动防火墙
命令: systemctl disable firewalld.service
systemctl enable firewalld.service

2 手动开关防火墙

命令:systemctl stop firewalld.service
systemctl start firewalld.service

3 查看防火状态

firewall-cmd --state

4 手动开放防火墙端口

  • 检查防火墙开放的端口 firewall-cmd --list-ports
  • 检查端口是否开放 firewall-cmd --query-port 80/tcp
  • 开启防火墙 firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 移除端口 firewall-cmd --zone=public --remove-port=9090/tcp --permanent
  • 关于防火墙操作的解释
    –zone #作用域
    –add-port=80/tcp #添加端口,格式为:端口/通讯协议
    –remove-port=80/tcp #移除端口,格式为:端口/通讯协议
    –permanent #永久生效,没有此参数重启后失效
  • 重启防火墙 firewall-cmd --reload

三、JDK的安装

将JDK安装包上传到指定文件目录下 /usr/local/src 下
在这里插入图片描述
解压jdk文件 命令: tar -zxvf jdk-8u51-linux-x64.tar.gz
在这里插入图片描述
配置环境变量 命令:vi /etc/profile

在文件末尾加入以下配置

JAVA_HOME=/usr/local/src/jdk1.8.0_51
JAVA_BIN=/usr/local/src/jdk1.8.0_51/bin
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

注意:JAVA_HOME目录是你jdk解压后的目录
在这里插入图片描述
环境变量生效 命令:source /etc/profile

检测JDK是否生效 命令:java -version
在这里插入图片描述
出现版本号,恭喜你jdk配置成功啦

四、MariaDB数据库安装

安装mariadb数据库 yum install mariadb-server
在这里插入图片描述
清空已安装文件 如果下载失败之后执行的. yum clean all
安装完成提示

在这里插入图片描述
数据库启动

启动命令    systemctl  start  mariadb
重启命令      systemctl  restart  mariadb
关闭命令      systemctl  stop  mariadb
设定开机自起   systemctl  enable mariadb 
关闭开机自起   systemctl  disable mariadb 

数据库初始化操作命令: mysql_secure_installation
在这里插入图片描述
测试数据库用户名和密码是否有效: mysql -uroot -p
在这里插入图片描述
说明:

  1. 如果需要远程链接数据库必须通过防火墙
  2. 如果远程链接数据库,数据库中必须开启远程访问权限才行,否则拒绝链接.在这里插入图片描述
    数据库开启远程访问权限,登录mysql服务器,
    语法:
    grant [权限] on [数据库名].[表名] to [‘用户名’]@[‘web服务器的ip地址’] identified by [‘密码’];
    grant all on . to ‘root’@‘%’ identified by ‘root’;
    或者指定IP地址
    grant all on . to ‘root’@‘192.168.1.103’ identified by ‘root’;

执行授权命令:: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
刷新权限: FLUSH PRIVILEGES;
在这里插入图片描述
数据库权限说明
在这里插入图片描述

五、nginx安装

注意事项:nginx底层开发由C语言完成的,所以要求不要有中文目录/空格/特殊字符(程序员操守)

官网下载 :http://nginx.org/en/download.html
在这里插入图片描述
上传安装包到指定目录中 /usr/local/src
在这里插入图片描述
解压Nginx 压缩文件 tar -zxvf nginx-1.20.1.tar.gz

说明:路径: /usr/local/src/下的nginx 文件是源文件目录. 该源文件目的是安装配置真正的nginx.

修改文件名称 mv nginx-1.20.1 nginx-source
安装nginx服务器 在nginx-source目录下进行配置,执行命令 ./configure
成功结果:
在这里插入图片描述
编译 make
安装 make install
查找nginx工作目录 whereis nginx 在这里插入图片描述
进入nginx/sbin目录中执行 ./nginx
在这里插入图片描述
1.启动命令: ./nginx
2.重启命令: ./nginx -s reload
3.关闭命令: ./nginx -s stop

浏览器输入 http://192.168.58.128/ 出现如下界面,恭喜你安装成功啦
在这里插入图片描述
或执行以下命令 ps -ef | grep nginx 验证安装成功
在这里插入图片描述

六、docker

简介

Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。

在这里插入图片描述
Docker Host 是我们的docker宿主机(就是安装了docker的操作系统)
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
Docker Daemon是docker的服务线程,处理Docker客户端命令。
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。

以docker run 命令为例,了解docker执行过程:

  1. 客户端将指令发送给docker daemon
  2. docker daemon 先检查本地images中有没有相关的镜像
  3. 如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
  4. 然后创建启动一个容器,运行该镜像

安装

卸载旧版
yum remove docker-ce docker-ce-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装一组工具 yum install -y yum-utils
执行报错
在这里插入图片描述
原因及解决方案点击我》》》
设置云仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum缓存,yum是包管理器

`
yum makecache fast # centos 7
dnf makecache # centos 8

安装新版docker
yum install -y docker-ce docker-ce-cli containerd.io
`

如果上一步运行报错 problem with installed package podman-3.0.1-6.module_el8.4.0+781+acf4c33b.x86_64

执行 yum erase podman buildah, 在执行上一步

启动docker systemctl start docker
设置docker开机启动 systemctl enable docker
镜像加速,由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}

重新加载docker配置 systemctl daemon-reload
重启docker服务 systemctl restart docker
查看镜像配置 docker info
运行 hello-world 镜像,验证 docker docker run hello-world

Docker核心概念

  • 镜像:一组文件的集合,相当于一个jar包,包含了class文件
  • 容器: 镜像是运行容器的一个模板,基于镜像启动容器,容器为镜像中的文件提供了运行环境
  • 数据卷:容器内数据的本地化存储,其生存周期独立于容器,容器消亡,数据卷不会消亡
    在这里插入图片描述

docker镜像操作实践

下载

下载 CentOS 镜像
docker pull centos:7
说明,假如是自己制作镜像,都会先下载一个空的centos镜像,官方镜像仓库地址为
https://hub.docker.com/,假如后面我们要自己做镜像,都需要这样的一个空的系统镜像文件。

查看所有镜像文件
docker images
或者
docker image ls

运行镜像

通过docker启动运行 centos7镜像

docker run -it xxxx bash

例如 docker run -it hello-worlddocker run -it d11

xxxx - 镜像名, 或 image id 的前几位
-it 这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
bash 放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash

删除镜像文件

删除镜像id前缀为501的 镜像,一般三位以上,足够区分即可 docker image rm 501
删除指定镜像名的镜像 docker image rm hello-world

假如镜像被占用着是不可以直接被删除的,需要先删除应用此镜像的容器,
docker container rm 容器名或容器id
容器id如果前三位能确定唯一,只需输入前三位即可,如果不能确定,输入前4位,例如:docker container rm f1c

镜像导出导入

需求:linux系统中的镜像文件下载到本地-例如window,导出后给他人使用
镜像导出 docker save jdk:8 | gzip > jdk8.tar.gz
镜像导入 docker load < jdk8.tar.gz #要在jdk8.tar.gz文件所在目录下执行

docker容器操作实践

启动分析

通过 docker run 来创建启动容器(这个容器相当于一个独立的集装箱) docker run -it centos:7 bash

  1. Docker 在后台运行的标准操作包括:
  2. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  3. 利用镜像创建并启动一个容器
  4. 分配一个文件系统(简版linux系统),并在只读的镜像层外面挂载一层可读写层
  5. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  6. 从地址池配置一个 ip 地址给容器
  7. 执行用户指定的应用程序

后台运行 docker run -itd centos:7
-d 后台运行容器
容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。

启动、删除,查看容器信息

说明:下面的数字936是容器id的前3位
查看容器信息 docker info
查看后台运行的容器输出结果 docker container logs 936 #container 可以省略
检查已启动的docker 服务 (正在运行的) docker ps
查看docker中的容器 docker ps -a
停止运行的容器 docker stop 936
重新启动容器 docker restart 936
当需要进入容器进行操作时(容器运行着) docker exec -it 936 bash
退出容器 exit
删除容器 docker container rm 936 #container可以省略 如果删除运行中的容器,需要添加 -f 参数
清理所有终止状态容器 docker container prune

docker数据管理实践

简介

数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
在容器中管理数据主要有两种方式:

  • 挂载主机目录 (Bind mounts)-最常用 (docker run –v 宿主机目录:容器目录)
  • 数据卷(Volumes)

操作

创建数据卷 docker volume create container-vol
查看指定数据卷 docker volume inspect container-vol #volume 可以省略
查看所有数据卷 docker volume ls
启动挂载数据卷的容器
docker run -it --mount source=container.vol,target=/root centos:7 bash
或者采用如下简写方式
docker run -it -v container.vol:/root centos:7 bash
说明:参数-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
删除数据卷(如果数据卷被容器使用则无法删除) docker volume rm helloworld.vol
清理无主数据卷 docker volume prune
挂载主机目录(常用) docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
/usr/app:为宿主机目录
/opt/app: 为启动容器的一个目录
-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息 docker inspect 9f7 #9f7为容器id的前3位
在这里插入图片描述
在这里插入图片描述

Dockerfile文件应用实践

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。我们通常会基于此文件创建docker镜像。
说明:centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的)

Dockerfile构建jdk镜像

以centos7为基础,构建oracle jdk8的镜像
在/root/jdk目录下创建Dockerfile文件(文件名一定要注意大小写),并且把jdk的压缩包上传只至该目录
在这里插入图片描述
编辑Dockerfile文件,
第一步:编写FROM语句(关键字一定要大写,例如FROM不能写小写)

FROM centos:7

第二步:通过ADD命令将宿主机中的压缩包传入镜像容器中的指定目录,并同时解压缩

ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker

第三步:设置环境变量(通过ENV关键字实现,目录启动容器中的目录)

ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH

第四步:指定命令行操作(所有指令与后面内容要有空格)

CMD ['bash']

完整示例如下:(注意关键字与后面内容之间的空格,可以将如下完成示例拷贝Dockerfile文件,但是一定要注意你的jdk名字是什么,以及jdk压缩后的文件名字)

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']

使用 Dockerfile 构建镜像(在Dockerfile所在目录执行docker指令)

docker build -t jdk:8 .  

说明:不要丢掉末尾的符号“.”,表示构建过程中从当前目录寻找文件,-t表示镜像标识(镜像名),是tag单词的缩写.即jdk:8为我们创建的镜像名
在这里插入图片描述
运行镜像文件

docker run -it jdk:8 bash

进入容器以后,可以通过echo $PATH查看环境变量,并可以通过java –version查看JDK版本信息。
在这里插入图片描述

Dockerfile制作Sentinel镜像

定义Dockerfile文件,同时将jdk,sentinel也要和这个文件放在同一个目录
在这里插入图片描述
创建Dockerfile文件,内容如下

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz  /usr/local/
ADD sentinel-dashboard-1.8.0.jar  /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
    PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.0.jar"]

使用 Dockerfile 构建镜像
docker build -t sentinel:8 . # 不要丢掉最后面的符号“.” ,并且要在Dockerfile所在目录执行docker指令
运行sentinel容器

docker run -d -p 8180:8080 sentinel:8

假如我们要做目录的挂载,保存容器中日志,可参考如下方式:

docker run -d -p 8180:8080 --name sentinel  -v /usr/local/docker/sentinel/logs:/root/logs/csp sentinel:8

docker ps 看不到容器,可通过"docker container logs 容器id/容器名"方式查看容器状态.
浏览器输出 http://192.168.58.128:8180/ 测试访问

通过jdk镜像运行web服务

需求:通过jdk:8镜像启动运行一个web服务,例如sentinel,服务启动后可在宿主机通过localhost:8180进行访问
将sentinel拷贝宿主机指定目录,例如/root/servers
在这里插入图片描述
启动镜像容器,通过java执行运行web服务
docker run -d -p 8180:8080 --name sentinel -v /root/servers:/usr/sca jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar
浏览器访问测试,其中 ip为宿主机ip地址,端口号为宿主机端口号
在这里插入图片描述
端口映射理解图
在这里插入图片描述

docker安装mysql数据库

在hub.docker.com上拉取指定版本的mysql镜像 docker pull mysql:8.0.23
查看mysql镜像 docker images
启动运行mysql镜像 (docker run 用于启动一个容器)

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-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=1234 \
-d mysql:8.0.23

进入mysql容器 docker exec -it mysql bash
登录mysql mysql -uroot -p1234 #1234为启动容器后面设置的密码
在这里插入图片描述
查看mysql启动日志 docker container logs mysql
设置mysql开机自启 docker update mysql --restart=always

docker安装redis数据库

下载镜像文件 docker pull redis
创建redis配置文件目录 mkdir -p /usr/local/docker/redis01/conf
在配置文件录下创建redis.conf配置文件 touch /usr/local/docker/redis01/conf/redis.conf
说明:因为redis镜像中这个redis.conf是一个目录所以要先创建一个这个配置文件,否在我们本地挂载点也会变成一个目录
运行redis镜像

docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf 

进入redis01容器 docker exec -it redis01 bash
查看redis版本 redis-server -vredis-cli -v
登录redis(默认不需要密码):docker exec -it redis01 redis-cli #在容器外 进入容器后执行 redis-cli即可

docker安装nginx

下载镜像文件 docker pull nginx
创建数据卷(这个对象会在宿主机直接创建一个目录) docker volume create nginx-vol
查看数据卷对应的宿主机目录 docker volume inspect nginx-vol
启动nginx服务 docker run --name nginx -v nginx-vol:/ect/nginx -p 80:80 -d nginx
说明/etc/nginx 为nginx容器启动时,nginx镜像文件默认的解压目录,以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.
浏览器访问测试
在这里插入图片描述

docker安装nacos

拉取镜像 docker pull nacos/nacos-server:1.4.1
nacos-mysql.sql文件拷贝到mysql容器的宿主机对应的挂载目录(可通过docker inspect mysql查看你mysql的挂载目录)

进入mysql容器,登录mysql,执行nacos的nacos-mysql.sql脚本文件 source nacos-mysql.sql
创建并启动nacos容器

docker run  \
-e TZ="Asia/Shanghai" \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=192.168.66.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=1234 \
-e MYSQL_SERVICE_DB_NAME=dev_girdear-config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true' \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos \
--restart=always \
-e JVM_XMS=256m -e JVM_XMX=256m \
--privileged=true \
-d nacos/nacos-server:2.0.2

参数说明
单节点模式 :MODE=standalone
数据库地址:MYSQL_SERVICE_HOST
数据库用户名:MYSQL_SERVICE_USER
数据库密码:MYSQL_SERVICE_PASSWORD
需连接的数据库名称:MYSQL_SERVICE_DB_NAME
端口映射 : -p 8848:8848
任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启): --restart=always
检查nacos服务 docker ps
查看nacos启动日志 docker container logs nacos
浏览器访问测试
在这里插入图片描述

docker容器互联

简介

Docker 中存在多个容器时,容器与容器之间经常需要进行通讯,例如nacos访问mysql,redis集群中各个节点之间的通讯。
Docker 中容器与容器之间进行通讯的解决方案一般有两种:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。

初始化网络

创建名字为t-net的网络 docker network create -d bridge t-net # t-net为自己创建的网络名称
其中,-d driver,网络类型,默认 bridge。
说明,创建好这个网络以后,在网落上添加容器,容器就可以通讯了
查看所有网络 docker network ls
查看网络信息 docker inspect 035 #035为网络id的前三位或者网络名称

实现容器互联

基于centos:7这个镜像启动两个容器。名字分别为app1,app2,并加入到t-net这个网络
docker run -it --name app1 --network t-net centos:7
docker run -it --name app2 --network t-net centos:7
在两个中断分别执行
ping app1
ping app2
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值