34次8.22(docker基础)

2024-08-22 21:44
文章标签 34 8.22 docker 基础

本文主要是介绍34次8.22(docker基础),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高并发集群,eleme后端的登录模块

1.数据库

1.主从复制(高可用)

2.传统的主从复制

3.gtids事务型的主从复制

4.注意

1.server_id唯一

2.8.x版本需要get_aal_pub_key

3.5.x不需要

4.change master to

5.stop | start slave

5.非交互

import pymysql
conn=pymysql.connect(hoat=xxx,user=xxx,password=xxx,port=xx,database=xxxx)
cursor=conn.cursor()
sql="insert|dalete|update|select..."
cursor.execute(sql)
#查询不需要提交,直接使用fectch就可以得到结果
#增删改需要提交
conn.commint()
mysql -h192.168.1.11 << EOF
​
create database if not exits test charset utf8mbs;
use test;
create tables....
​
quit
EOF

6.数据库的负载均衡,阿里巴巴的mycat

<!---
/usr/local/mycat/conf/server.xml
对外的账号 密码 数据库
-->
​
<user name="yjj"><properties name="password">yjj</properties><properties name="database">test</properties>
</user>
<!---vim /usr/local/mycat/conf/schema.xml
--->
<mycat:schema><schema name="test" dataNode="abc"></schema><dataNode name="abc" dataHost="efg" database="test"/><datahHost name="efg" ...><writeHost host="hs01"      url="192.168.1.10:3306"user="yjj" password="1"/><readHost host="hs02"url="192.168.1.11:3306"user="yjj"password="1"/></writeHost></dataHost>
</mycat:schema>

如果出现启动异常 8066端口没有打开,可以检查两个日志文件

vim /usr/local/mycat/logs/wrapper.log

vim /usr/local/mycat/logs/mycat.log

2.后端服务器 java|python|php|asp

vim /etc/profile
​
​
​
export JAVA_HOME=/usr/local/jdk
​
export PATH=$PATH_HOME/bin
​
​
​
source /etc/profile
​
使用jar包启动服务
​
# 配置applicayion.properties |yml
修改 yml中的端口或者数据源
url=jdbc:mysql://ip:port/databasename
username=dbuser
password=dbpass
java -jar eleme_server.xxx.jar

3.负载均衡

lvs

dr模式

1.挂载vip(对外) ens33:0

ifconfig ens33:0 vipxx broascast=vipxx netmaast=255.255.255.255 up
​route add vip dev ens33:0
​yum -y install ipvsadm
​
# 添加规则
ipvsadm -A -t vipxx:port -s rr
ipvsadm -a -t vipxx:port -r ripxx -g
ipvsadm -a -t vipxx:port....

rs主机

ifconfig lo:0 vipxx broadcast... netmask xxx up
route add vipxx dev lo:0

抑制接受请求

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
​

nginx配置 代理 负载均衡

http {upstream javagroup {server ip:port weight=99;server ip:port weight=1;}server}

docker

一、介绍docker

1.Docker和虚拟机在以下八个方面存在差异

1.启动速度:Docker 启动速度非常快,属于秒级别,而虚拟机通

常需要几分钟去启动。

2.资源消耗:Docker 需要的资源更少,它直接运行在宿主机的内

核上,以一系列进程的结合形式存在。而虚拟机则需要消耗更多

的资源,因为它在操作系统级别进行虚拟化。

3.轻量级:Docker 更轻量,它的架构可以共用一个内核与共享应

用程序库,所占内存极小。而虚拟机则相对较重,需要消耗更多

的内存。

4.隔离性:虚拟机可以实现系统级别的隔离,而 Docker 则属于进

程之间的隔离,隔离性相对较弱。

5.安全性:Docker 的全性也更弱。

6.可管理性:Docker 的集中化管理工具还不算成熟。

7.兼容性:开发人员不需要关系具体是哪个 Linux 操作系统,基

本市面上主流系统都可使用Docker。

8.数据持久性:Docker 无法存储数据,当容器重启后,数据会消

失;而虚拟机可以存储各种数据,包括日志、数据库等。

2.docker的优缺点

1.优点

1.体积小:减小系统的开销值,一台主机可以运行上千

个容器。 2.启动迅捷:更快速的交付和部署,docker容器,比传

统虚拟机要快很多,docker核心解决的问题就是利用容器实现VM

类似的功能。

3.操作方便:通过配置 dockerfile 便支持灵活的自动化

创建和部署。 4.更轻松的扩展:可以实现更简单的、更可靠的迁移,

避免了兼容性等问题。

5.更强的可扩展性和可移植性。

2.缺点

1.安全问题:如果没有正确配置,一个容器中的恶意代

码可能会影响到主机上的其他容器以及主机本身的安全。

2.存储问题:当使用大量容器时,存储和管理容器映像

可以变得非常困难。这可能需要使用分布式存储或其他解决方

案来管理大量容器的存储。

3.性能问题:在某些情况下,容器和虚拟机相比会导致

性能损失。这些性能问题越来越少,但是仍然需要考虑。

4.网络问题:Docker 可能会在网络配置上存在一些问

题,这可能需要更多的时间来诊断和解决

5.复杂性:Docker 是一个非常灵活的系统,但这同时也

让它更加复杂。长时间使用 Docker 会产生大量的脚本和配置文

件,这些可能变得难以维护。

6.资源消耗:使用 Docker 必须占用一些资源,包括

CPU、内存、磁盘等等。如果运行容器的主机资源不足,可能会

导致性能问题。

7.学习曲线:Docker 是一个相对新的技术,相比传统环

境需要一定的学习曲线。需要了解Docker基本概念、命令和配置

文件等。需要花费时间配置和管理:使用 Docker 需要花时间配置

和管理容器集群和应用程序。

8.需要配置:每个容器,管理Jenkins、Kubernetes 等

运行 Docker 容器的工具。 9.映像构建复杂:构建Docker映像需要按照特定格式编

写 Dockerfile 脚本,需要遵循一定的规范和9.流程,这可能需要

更多的时间和精力。

3.docker架构

1.用 docker pull 命令 hub.docker.com 官网上卜载 images (镜

像)。2.可以用 docker save 命令将镜像保存到本地 tar 文件,也可以

用 docker load 命令将本地tar 文件导入镜像。

3.可以用 docker build 构建 Dockerfile 镜像。

4.可以用 docker run 和 docker create 将镜像运行成 container

(容器),容器内可以安装所需要的APP

5.可以用 docker commit/export 将容器做成镜像反复的使用!

6.可以将自己制作的镜像发布到 hub.docker.com 网站,需要注

册账号。

4.docker的核心概念

1.镜像(images):一个面向 docker 容器引擎的只读模板,也是容

器的基础,非似子 iso 镜像文件。

2.容器(container):基于镜像所创建的虚拟实例,相当于一个简

易的 Linux 环境,可启停,且多个容器之间互相隔离。

3.仓库(Repository):集中存放 docker 镜像的位置,可使用

docker pul 或 push 命令下载或上传到私有或公有仓库。

4.仓库注册服务器(registry):存放仓库的地方,如果没有私有仓

库,则使用公共仓库 dockerhub .

5.docker特性

1.文件系统隔离:每个进程容器运行在一个完全独立的根文件系

统里。

2.资源隔离:实现不同的容器的资源配额和调度,cgroup。

3.网络隔离:每个进程容器运行在自己的网络空间,拥有虚拟接

口和IP地址

4.日志记录:Docker将收集到和记录的每个进程容器的标准流

(stdout/stder/stdin),用于实时检索或者批量检索。

5.变更管理:容器文件系统的变更可以提交到新的镜像中,并可

重复使用以创建更多的容器

6.交互式shell:Docker可以分配一个虚拟终端并且关联到任何容

器的标准输出上,例如运行一个一次性交互shell。

二、配置docker环境,安装docker客户端和服务器

1.overay:是一种文件系统层叠技术,常用于容器化平台(比如 Docker)中。它允许将多个文件系统叠加在一起,从而创建一个统一可见的文件系统。通过加载 overlay 模块,可以在 Linux 系统中使用 overlay 文件系统,并且它将提供一些额外的功能,比如联合挂载、文件层叠等

2.br_netfilterY:Linux 肉核中的一个模块,它提供了桥接设备 (bridge device) 和网络过滤器(netfilter) 之个的集成。它允许在桥接设备上使用网络过滤器功能,如防火墙规则、网络地址转换(NAT)等。通过加载 br_netfilter 模块,你可以在 Linux 系统中的桥接设备上应用网络过滤规则对网络流量进行管理和控制。

3.device-mapper-persistent-data:一个Linux内核模块,它为Device Mapper设备提供持久存储功能。DMPD提供了一个用于存储映射关系的数据库,使得Device Mapper可以持久化存储映射数据,以便在系统重新启动后仍然可以恢复之前的映射关系。

4.Ivm2:Linux系统下的逻辑卷管理工具,LVM 的升级版,它是对磁盘分区进行管理的一种机制建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性。

1.配置环境

[root@docker ~]# vim /etc/modules-load.d/k8s.conf     
[root@docker ~]# vim /etc/sysctl.d/k8s.conf 
​
[root@docker ~]# cat << EOF |tee /etc/modules-load.d/k8s.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
[root@docker ~]# modprobe overlay
[root@docker ~]# modprobe br_netfilter
[root@docker ~]# cat << EOF | tee /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@docker ~]# sysctl --system
[root@docker ~]#yum install -y yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y 

2.启动关闭服务

[root@docker ~]# systemctl start docker.service 

3.查看镜像

[root@docker ~]# docker imagespowershell

4.搜索镜像

[root@docker ~]# docker search centos|Tomcat

5.下载镜像

[root@docker ~]# vim  /etc/docker/daemon.json
​
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
​
}
[root@71dbcffe7ad9 ~]# cat /etc/redhat-release   #查看当前镜像版本
CentOS Linux release 8.4.2105

6.基础应用

镜像是模版,容器是实例

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
​
#第一次创建容器
[root@docker ~]# docker run -i -t --name=c0 centos:latest /bin/bash  #run启动,-i交互,-t终端,--name=xx命名,centos应用,latest镜像版本,/bin/bash指令
​
#配置阿里云yum仓库
yum clean all && yum makecache
yum -y install httpd
[root@71dbcffe7ad9 ~]# echo "docker_httpd_server" > /var/www/html/index.html
​
#systemctl start httpd
httpd -k start
curl localhost:80
#在宿主机访问
curl 172.17.0.2:80
#无法在物理机上访问,也无法ping到这个主机
​
#如果没有指令正在执行,容器就会停止
exit
​
#当前运行的进程
ps
​
#重启容器
docker start c0  #容器名称
​
#将c0的终端附加到当前的终端
docker attach c0
#httpd停止,期望退出,服务继续停止
按住ctrl不松手,按p再q
​
[root@71dbcffe7ad9 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
​
#查看docker进程
docker ps --all
[root@71dbcffe7ad9 ~]# systemctl start httpd
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[root@71dbcffe7ad9 ~]# httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[root@71dbcffe7ad9 ~]# curl localhost
docker_httpd_server
[root@71dbcffe7ad9 ~]# curl http://localhost:80
docker_httpd_server
[root@71dbcffe7ad9 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
外层访问:
[root@docker ~]# curl http://172.17.0.2:80
docker_httpd_server
外层真机不能访问

退出容器后镜像不存在,需要重新启动

[root@docker ~]# docker attach c0   #将c0终端的界面挂到当前终端
[root@71dbcffe7ad9 ~]# httpd -k start
[root@71dbcffe7ad9 ~]# curl localhost
docker_httpd_server
[root@docker ~]# curl http://172.17.0.2:80   #外层访问
docker_httpd_server
​

7.远程管理

启动、查看服务
[root@docker ~]# systemctl status docker
[root@docker ~]# docker images

1.状态

#查看sock套接字
ls -l /var/run/docker.sock
#允许远程连接,需要有一个服务,使用端口体现
netstat -lnput|grep 2375

2.设置允许远程管理

1.停用docker服务 2.修改/usr/lib/systemd/system/docker.service

[root@docker ~]# vim /usr/lib/systemd/system/docker.service  13 ExecStart=/usr/bin/dockerd   #修改

3.修改daemon.json

[root@docker ~]# vim /etc/docker/daemon.json  #添加 
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]    #镜像
,
​"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}

4.加载daemon.json

systemctl daemon-reload

5.启动服务

[root@docker ~]# ls -lh /var/run/
srw-rw----.  1 root   docker    0 8月  22 14:15 docker.sock
[root@docker ~]# systemctl stop docker
[root@docker ~]# systemctl start docker   #正常!!!
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl start docker
[root@docker ~]# ls -lh /var/run/
srw-rw----.  1 root   docker    0 8月  22 16:10 docker.sock

6.查看状态

#查看sock套接字
ls -l /var/run/docker.sock
##允许远程连接,需要有一个服务,使用端口体现
netstat -lnput|grep 2375

7.与昂管理

[root@docker ~]# docker -H 192.168.1.50 images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

这篇关于34次8.22(docker基础)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097474

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是