centos安装、docker配置、容器运行

2023-11-16

Linux下安装docker的使用

一、课程目标

1、docker是什么
2、docker的架构、名词解析
3、都看恻然对测试人员的意义
4、docker安装
5、镜像命令
6、容器命令
7、DockerFile介绍
8、部署项目实战(Tomcat+JDK+MySQL)

二、centos相关配置

centos系统安装与配置
   https://www.runoob.com/w3cnote/vmware-install-centos7.html

centos安装 docker 
	1) https://www.cnblogs.com/tianfengcc/p/14320255.html
	2) https://zhuanlan.zhihu.com/p/342836513
	
docker配置 mysql
	https://www.jianshu.com/p/979881019aef

docker容器错误
	https://blog.csdn.net/qq_32828933/article/details/107208444
	

1、docker是什么

docker是一个开源的应用容器引擎,让开发者可以快速打包所需要的应用以及依赖包 到一个可移植的容器中,然后发布到服务器上,也可以实现虚拟化,容器是完全使用沙箱机制,互相之间不会有任何接口

没有docker之前,需要把一套环境所用到的工具都部署一遍,花费的时间非常久。有了 docker 之后,只需要把环境打包成一个镜像,复制到另外一台服务器上安装镜像即可

官网:https://www.docker.com/

image-20221106102658154.png

2、docker的架构、名词解析

窗口(repository):
Docker hub,存储镜像的仓库,分为私有仓库和共有仓库

镜像(image):
一种轻量型、可执行的独立软件包,用来打包软件运行环境和给予运行环境开发的软件,可基于此模板运行处 多个容器

容器(container):
镜像的运行实例,通过镜像创建独立运行的一个或一组应用

image-20221106103028467.png

3、docker容器对测试人员的意义

1、解决环境不一致
容器部署的对象是镜像,镜像不仅仅包含代码版本,还包含 系统运行所需的基础环境,使用同样的镜像版本进行测试,不会存在环境不一致的情况。容器消除环境差异,降低环境类型的bug

2、快速部署测试环境
容器采用"一次构建多次部署",大大提升测试环境交付速率,节省测试人员的等待时间

3、环境隔离
不同任务运行在不同容器中,互相之间不影响

image-20221106103347676.png

4、docker安装

官方文档地址(Linux系统要求-CentOS7或更高版本)
https://docs.docker.com/get-docker/ 

docker安装
1)更新yum源
	yum update 
2)安装必要的包,提供yum-config-manager,可用来管理yum源
	yum install -y yum-utils 
3)配置国内镜像源
	yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	
	如果配置后使用 yum报错404解决方案
		1、执行:
				wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
		2、如还未解决详情请看:
		      https://zhuanlan.zhihu.com/p/272603210
	
4)安装docker
	yum install docker-ce docker-ce-cli containerd.io

docker启动/查看状态/停止
1)systemctl start  docker
2)systemctl status docker
3)systemctl stop   docker


docker卸载
1)查看yum 安装列表,关于docker信息
	yum list installed | grep docker   
	
2)删除docker目录下的 某文件
	yum -y remove containerd.io.x86_64
  	yum -y remove docker-ce-cli.x86_64
3)删除 环境变量中所有docker文件
	rm -rf /var/lib/docker

5、docker镜像命令

拉取镜像mysql:5.7
	docker pull mysql:5.7
	
ps:
1、默认docker从Docker Hub上拉取镜像https://hub.docker.com/,确保已存在
2、不写版本号,默认下载最新版	
1)列出本地已有的镜像
	docker images
	docker image ls
	
2)强制删除镜像
	docker rmi -f [镜像名/id]
3)查看镜像详细信息
	docker inspect [镜像名/id]
	

6、容器命令

1)创建并运行一个 mysql 名为 my_mysql 的容器
docker run -p 3303:3306 --name my_mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7


说明:

创建容器时,最后mysql:5.7表示mysql镜像的版本,可以写,表示指定该版本;如果不写也可以,docker会自动在本地检测有没有最新的,如果没有会自动去docker hub上去下载。

上述命令各个参数的含义:
run 运行一个docker容器
--name 后面这个是生成的容器的名字 my_mysql
-p 3303:3306 表示这个容器中使用3306(第二个)映射到本机的端口号也为3303(第一个)
-v 容器所挂载的路径/目录/文件;如不写默认在 root根目录下
-e MYSQL_ROOT_PASSWORD=admin 初始化root用户的密码
-d 表示使用守护进程运行,即服务挂在后台

解释:
--name 容器名称、 -d后台运行、-p映射端口 -e 设置参数 3306mysql默认端口

1)列出当前正在运行的容器
	docker ps  
	
2)列出当前正在运行及退出的容器
	docker ps -a  
	
3)启动/停止/重启容器	
	docker start/stop/restart [容器Id]  
	
4)进入到容器的内部
	docker exec -it [容器ID] /bin/bash 
    
5)显示容器日志 -tf 实时日志&时间 --tail n 限制条数
	docker logs -tf --tail n 容器id 
    
6)删除掉已退出的容器 -f强制删除
	docker rm [容器Id] 
	
7)本机host向 docker容器传输文件
	docker cp [本地文件路径] [容器ID]:[容器内部路径]  
		
Docker 容器的退出状态码及重启策略

Docker 容器的退出状态码:
    0:表示正常退出
    非 0:表示异常退出(退出状态码采用 chroot 标准)
    125:Docker 守护进程本身的错误
    126:容器启动后,要执行的默认命令无法调用
    127:容器启动后,要执行的默认命令不存在
    其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码
    
Docker 容器的重启策略如下:
    no:默认策略,在容器退出时不重启容器
    no-failure:在容器非正常退出时(退出状态非 0),才会重启容器
    no-failure:3:在容器非正常退出时重启容器,最多重启 3 次
    always:在容器退出时总是重启容器
    unless-stopped:在容器退出时总是重启容器,但不考虑在 docker 守护进程启动时就已经停止了的容器 

7、项目环境架构

并不是所有项目都是这个架构:
我们项目用的操作系统centos、应用服务器tomcat、数据库mysql
1) tomcat:应用服务器软件,“项目容器” ,开发的代码包放到tomcat上运行
2) mysql:数据库服务,“数据仓库”

image-20221106120319601.png

项目环境包含:
基础软件 + 项目代码 + 数据库脚本等

基础软件:
操作系统centos、应用服务器tomcat(依赖java环境-jdk)、数据库mysql
1) 项目代码:war包、properties配置文件 — 开发提供
2) 数据库脚本:sql脚本文件 — 开发提供

ps:
1) 用于tomcat连接数据库的配置文件,需要改配置
	jdbc_ningmengban.properties  

2)用于日志输出格式的配置文件,不需要改
	log4j.properties 

image-20221106120704419.png

8、Docker部署项目实战(Tomcat+JDK+MySQL)

1、开发或运维直接把项目环境所需要部署的基础软件+项目代码+数据库脚本等,直接构建成镜像,打包成压缩包lemonban.tar;或者上传docker hub

2、lemoban.tar传递到测试服务器上,直接加载镜像,完成测试环境部署

1)加载镜像
docker load -i lemonban.tar

2)查看本地已有的镜像
docker images

3) 运行容器
docker run --name=ningmengban -d -p 3308:3306 -p 8088:8080 lemonban:0.1

4)测试访问地址
http://云服务器ip:8088/ningmengban/app/register/register.html

说明:
这里项目用到 两个容器,所对应默认端口为:mysql(3306)、tomcat(8080)
容器运行访问对外开放所设置端口为:mysql(3308)、tomcat(8088)

注意:
访问不了,确认云服务器开放8088端口、3308端口
--> 在云服务器设置-安全组配置

配置后访问比如:
http://139.224.61.195:8088/ningmengban/app/register/register.html

tomcat目录结构说明- 项目容器
bin Linux或windows平台上可执行脚本文件,如启动和关闭Tomcat的脚本
conf Tomcat服务器的各种全局配置文件,其中包括
server.xml:Tomcat的主要配置文件,服务器配置信息,如端口号、虚拟主机等
tomcat-users.xml:Tomcat用户的文件,保存tomcat的用户名、密码、角色信

web.xml:部署描述符文件,注册了很多MIME类型,即文档类型
lib 所有jar文件
logs 执行时的日志文件比如启动报错,会保存在该目录的文件中
temp 运行时所产生的临时文件
webapps 主要Web发布目录,默认情况下把Web应用文件(项目包)放于此目录
work Tomcat会将JSP生成的Servlet源文件和字节码文件放到这个目录下,缓存文件
LICENSE 许可证
NOTICE 说明文件
RELEASE-NOTES 版本说明
RUNNING.txt 运行说明文件
如何查看项目服务器日志?定位错误日志?
tomcat项目日志文件 
	logs目录下catalina.out实时日志文件;

如果是非tomcat项目 ,服务器日志看哪个文件,问开发
如何查看服务器端日志?

1)进入到容器内部,通过tail -f 查看:
	docker exec -it [容器id] /bin/bash
	cd 切换到tomcat/logs目录
	tail -f catalina.out
2)用docker命令查看:
  docker logs -tf [容器id]
  
3)过滤错误日志?  
	| grep exception
	

9、Docker项目部署

1、将开发的项目war包、sql脚本、配置文件properties;所需的tomcat、jdk放置在同一个目录/opt下

2、准备好Dockerfile文件 —— 开发或运维写好的,内容详情讲解 /opt目录下

3、确认sql脚本有包含到创建库

4、确认jdbc.properties配置文件 是连接到已创建的库

进入/opt目录
    1)构建镜像
    	docker build -t lemonban2:2.0 ./
    
    2)查看已有镜像
    	docker images

image-20221106122650570.png

1)运行容器
docker run --name=lemonban2 -d -p 3305:3306 -p 8085:8080 lemonban2:2.0

2)将镜像打包成一个压缩包/或者传到docker bub
docker save -o ningmengban.tar lemonban:1.1

10、DockerFile构建镜像

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。

Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像
具体步骤:
    1、编写一个dockerfile 文件
    2、docker build 构造一个镜像
    3、docker run 运行镜像
    4、docker push 发布镜像

image-20221106122853770.png

11、DockerFile指令

FROM 		#基础镜像
MAINTAINER 	#镜像是谁写得
RUN     	#镜像构建是所需运行的命令
ADD     	#添加基础镜像之外的其他内容
WORKDIR 	#镜像工作目录
VOLUME  	#设置容器卷挂载目录
EXPOSE  	#暴露端口,作用与 -p 一样指定端口
CMD     	#指定容器启动时运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  #指定容器启动时的命令,可以追加命令
ONBUILD   	#当构建一个基础 dockerfile 时 ,触发 ONBUILD
COPY      	#类似 ADD,将文件拷贝到镜像中
ENV       	#构建时设置环境变量
 

image-20221106123637957.png

FROM mysql:5.7 
MAINTAINER tudou 

#复制文件并解压文件 
ADD apache-tomcat-8.0.30.tar.gz /opt/ 
ADD jdk-8u141-linux-x64.tar.gz /opt/ 

#进入容器之后的路径 
ENV MYPATH /opt 
WORKDIR $MYPATH 

#设置编码集,防止tomcat中文乱码 
ENV LANG C.UTF-8 

#设置mysql root密码 
ENV MYSQL_ROOT_PASSWORD 123456 

#设置java环境变量 
ENV JAVA_HOME /opt/jdk1.8.0_141 
ENV CLASSPATH $JAVA_HOME/lib 
ENV CATALINA_HOME /opt/apache-tomcat-8.0.30 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin 

#复制文件到容器内部 
COPY ningmengban.war /opt/apache-tomcat-8.0.30/webapps/ 
COPY log4j.properties /opt/apache-tomcat-8.0.30/conf/ 
COPY jdbc_ningmengban.properties /opt/apache-tomcat-8.0.30/conf/
COPY ningmeng.sql /opt/ 

#运行容器时执行的命令
#1、启动mysql 
#2、执行ningmeng.sql脚本 
#3、启动tomcat 
#4、在控制台持续输出tomcat日志 
CMD nohup sh -c 'service mysql start && mysql < /opt/ningmeng.sql && /opt/apache-tomcat-8.0.30/bin/startup.sh && tail -f /opt/apache-tomcat-8.0.30/logs/catalina.out'

12、内外网知识点

内、外网区别
1) 内网又称为局域网或者私网
2) 外网又称为广域网或者公网
本地电脑需访问测试环境,确保在同一个局域网,即保证在同一个ip网段

image-20221106123835159.png

13、以上配置、部署操作截图

image-20221106124229416.png

image-20221106124257659.png

image-20221106124353424.png

image-20221106124450407.png

image-20221106124517126.png

image-20221106124615295.png

image-20221106124853418.png

image-20221106124911531.png

image-20221106124927048.png

image-20221106124948709.png

image-20221106125026752.png

image-20221106125059409.png

image-20221106125115906.png

image-20221106125651156.png

image-20221106125849423.png

image-20221106125910425.png

image-20221106130102079.png

image-20221106130248502.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos安装、docker配置、容器运行 的相关文章

随机推荐

  • 【报错】RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasLtMatmul( ltHandle,

    在GPU上运行hugging face transformer的时候出现如下报错 RuntimeError CUDA error CUBLAS STATUS EXECUTION FAILED when calling cublasLtMat
  • 【Android】JUnit和Espresso单元测试新手快速入门

    引入依赖 android defaultConfig testInstrumentationRunner androidx test runner AndroidJUnitRunner dependencies testImplementa
  • JavaScript 中的模块化

    封面图说明 Michael J Kochniss mjk photo de instagram com mjk photo 在早期 JavaScript 程序主要用来实现一些页面上的动画或者简单的交互 所以程序不会太复杂 页面也不会有太多的
  • 【满分】【华为OD机试真题2023 JS】优秀学员统计

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 优秀学员统计 知识点排序统计编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司某部门软件教导团正在组织新员工每日打卡学习活动 他们开展这项学习活动已经
  • 说说React中setState执行机制?

    setState是异步的 1 调用setState是不会立即更新的 2 所有组件使用的是同一套更新机制 当所有组件didmount之后 父组件didmount 然后统一执行更新 3 更新时会把每个组件的更新合并 每个组件只会触发一次更新后的
  • 合肥工业大学 软件学院 软件质量保证与测试 第九章 软件测试

    文章目录 第九章 软件测试 1 软件测试概述 1 1 软件测试的定义 1 2 软件测试的目的 2 软件测试过程 3 软件测试类型 3 1 单元测试 3 2 集成测试 测试方法 3 3 系统测试 3 4 验收测试 3 5 回归测试 3 6 补
  • 高通功耗调试16之连接BT待机功耗大问题分析(Android P)

    问题背景 Android P上Google修改了BT的代码 在待机时允许modem上报网络信号强度给AP 因此连接BT待 机时AP会被频繁唤醒 导致待机功耗增加 问题解决 问题分析请参考KBA 190212004248 适用平台 ALL A
  • iOS安全攻防—目录

    The most difficult thing to do in a strange city is not to forget why you started the trip 在光怪陆离的城市拼尽全力 最难的是勿忘初心 一 工具篇 C
  • 响应式网页设计初探

    我首次接触响应式网页设计还要从应用bootstrap说起 我们运用bootstrap的网格类简单的将响应式设计带入我们的网页设计当中 当然bootstrap框架其实还做了其他事情以支持网页响应式设计 现在 就让我们一窥响应式网页设计背后的原
  • 【工具使用】Spyder代码补全问题

    我的Spyder突然不能够进行自动补全了 试了以下几种方法 1 如下图操作 但是没有任何用 2 在anaconda控制台输入pip list 查看安装了哪些包 如果存在enum34 则删除 pip uninstall enum34 重启sp
  • 利用偏函数设计学习率下降方式

    Python partial 首先 我们需要简单了解下偏函数的作用 和装饰器一样 它可以扩展函数的功能 但又不完成等价于装饰器 通常应用的场景是当我们要频繁调用某个函数时 其中某些参数是已知的固定值 通常我们可以调用这个函数多次 但这样看上
  • IP代理

    IP作为互联网的重要的桥梁 是计算机网络相互连接进行通信而设计的协议 正是因为有了P协议 因特网才得以迅速发展成为庞大的 开放的计算机通信网络 IP代理中常常可以看到IPv4与IPv6 今天就给各位跨境老板详细解释 他们是什么 如何选择 一
  • 计算机大四找不到工作怎么办?应届生如何找到合适的工作?

    计算机大四找不到工作怎么办呢 金三银四的到来 很多大四计算机专业学生最近很是焦虑 自己在校成绩不够突出 技术实力也是平平 投递了很多企业迟迟得不到反馈 眼看着毕业季越来越靠近 身边同学都已获得大厂offer 而自己手上一个offer都没有
  • Mac电脑M1芯片Python环境搭建

    一 安装miniforge 1 从github中下载miniforge 也可以在我的阿里云盘中下载miniforge 提取密码为 R6pb 2 打开终端 找到下载的文件的位置 进行安装 进入下载位置 cd XXX Downloads lis
  • flutter 打包安装后闪退问题

    问题 升级flutter插件后 生成release版apk 安装到手机启动flutter代码时出现闪退问题 log日志回报一系列的so库错误 原因 具体原因我不知道到什么原理造成 个人理解的应该是flutter sdk 版本问题 解决 在a
  • Linux查看文件大小的命令du的简单介绍

    文章目录 官方介绍 简单介绍 常用选项 与单位相关的选项 apparent size B block size SIZE b bytes k m 与遍历深度相关的选项 s summarize d max depth N h human re
  • 时间序列突变点检测

    我对时间序列异常点算法小结 基于时间序列的异常检测算法小结 Jasminexjf的博客 CSDN博客 基于时间序列的异常检测算法 当前异常检测类型 最重要的异常类型 例如意外的峰值 下降 趋势变化和水平转移 我主要研究的是负荷预测的突变点
  • mysql8的卸载

    mysql8的卸载 卸载mysql8 卸载mysql8 先在Windows界面使用快捷键Windows R搜索services msc进入服务 找到mysql并停止它 然后进入C盘将隐藏文件显示出来 进入装有mysql文件夹的三个文件并删除
  • 软件测试基础与基于生命周期的软件测试

    软件测试基础 2 1软件测试 2 1 1定义 在规定的条件下对程序进行操作 以发现程序是否满足设计错误 衡量软件质量并对其是否满足设计要求进行评估的过程 2 1 2目的 发现缺陷 提高质量 验证是否满足需求 建立软件质量的信心 2 1 3原
  • centos安装、docker配置、容器运行

    Linux下安装docker的使用 一 课程目标 1 docker是什么 2 docker的架构 名词解析 3 都看恻然对测试人员的意义 4 docker安装 5 镜像命令 6 容器命令 7 DockerFile介绍 8 部署项目实战 To