IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker的介绍 -> 正文阅读

[系统运维]docker的介绍

1.什么是docker

docker解决了软件环境部署复杂的问题

对于一个传统的软件工程,开发人员把写好的代码放到服务器上去运行是一件很头疼的事情,因为常常会出现环境不兼容而导致各种各样的bug

比如说,开发是windows系统下编写的代码,放到linux服务器上可能会出问题,开发在本地依赖了一个系统自带的驱动,服务器上却没有这个驱动,开发在本地设置了很多环境变量,服务器上又得重新设置

在软件部署的时候,经常会发生在这台机器上可以跑,但是在另一台机器上却运行失败的情况。运维人员需要不断在开发环境和服务器环境之间调试

有了docker,只需要简单的几行命令,就可以做到所有运行环境都一致

?docker使用的技术几乎没有新技术,大多是对linux已经存在的技术的封装,docker中的容器,是使用linux之前的一些技术,把开发需要设置的环境,全部隔离在一起,形成一个集装箱。当有其他的环境要配置的时候,只需要复制一个集装箱即可

2.为什么使用docker

作为一个测试来说,使用docker的主要原因就是用来搭建测试环境

例如:不同的公司使用的环境大不相同

语言? ? ? web框架? ??数据库

Java + spring bott + mysql + redis

php? ?+? ? yii? ? ?+? ? oracle

python + Django + mysql

接口自动化需要安装的内容:

  • linux --- centos,ubuntu
  • python
  • 设置环境变量
  • pip install -r requirements.txt
  • git /?svn
  • jenkins

传统的安装环境的方式缺陷:

  • 没有固定的脚本可以执行
  • 系统发行版本不一样
  • 系统版本不一致
  • python版本不一致
  • 没有办法移植

docker?为什么能解决传统安装呢?因为它像虚拟机VMware相似,使用的是镜像文件(ISO)

不管你想安装什么软件,什么环境,只需要下载这个软件的镜像,通过docker运行即可,这样就避免了测试环境与生产环境,版本等因素造成的问题

在环境配置的时候,还可以使用创建虚拟机的方式来实现环境同步。如果服务器用的是centos的系统,可以在开发的时候就用centos开发。这确实解决了一些问题,但是还是需要去独立配置每一台机器。而且,虚拟机本身对多个程序之间的环境不兼容的时候无能为力,可能需要借助第三方的一些管理工具,而docker却可以轻松在一台机器上运行多个容器

容器不是一台机器,docker利用的是linux的资源分离机制,例如cgroups,以及linux核心命名空间(namespaces),来建立独立的容器(containers)?。容器看上去是一台机器,实际上是一个进程

相比于虚拟机,容器的优势主要有:

  • 资源占用少
  • 启动速度快
  • 本身体积小

docker给软件开发领域带来的不公公是提供环境,可以说它直接带火了Golang编程语言。因为docker容器创建和销毁非常方便,很适合用来动态扩容和缩容,可以直接用在云计算当中的弹性服务当中。另外,基于docker容器的隔离性,一台服务器上可以同时跑多个程序而做到管理方便,很符合微服务架构的需要

docker依赖于linux,在windows上安装比较麻烦,所以建议在linux上操作,最好在服务器上部署docker,因为工作中不可能给你台虚拟机去部署环境,都是使用服务器部署环境

3.购买云服务器

安装docker之前,我们需要先有服务器,没有的话需要先去购买云服务器,我这里纯是练习总结,所以选择了ucloud,因为他们家可以按量收费,大家要是想长期使用服务器,可以选择国内的大厂家的,如腾讯云,华为云,阿里云等,百度一搜好多广告

打开ucloud网站,然后注册登录,购买服务器

地区最好选择国外的,因为国内可能速度差点?

镜像如果选择的是centos的话,那最好选择7.几的版本,8.几的版本问题比较多,我这里自用,CPU1核,内存2G够用了,磁盘选择云盘即可

选择web设置,管理员的密码,主机名称,其他不用设置,选择付款方式购买即可,如果没有实名认证是付款不了的,所以要先进行实名认证

购买完成后可以看到服务器

因为默认开启的端口号很少,所以我们需要自己去开放端口号,点击【关联产品操作】-->【更换外网防火墙】

?

点击【外网防火墙页面】-->?选择默认的防火墙 --> 点击【复制】按钮

添加新的防火墙,输入名称点击确定即可,从列表可以查看新添加的

点击新增加的防火墙,点击【添加规则】--> 设置端口号

?

?开放完端口后,以下图片显示的端口就可以使用了,超出这些端口是不可以使用的

使用一些连接服务器工具可以连接,如xshell、finalshell、putty等,我这里使用的是xshell,已经安装好了

?登录成功后可以看到root的身份

?可以检查一下有没有安装过docker,显示没有就可以进行安装了

4.docker的安装

可以直接去docker官网查看centos的安装命令,具体步骤如下:

?需要什么命令,自行向下滑动页面,查找对应的命令

?安装docker步骤:

如果之前安装过可以执行以下命令进行卸载旧版本,没有安装过不用理

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

?安装命令:

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

遇到是否安装,直接输入y即可

?重启docker

sudo systemctl start docker

重启后,可以输入docker查看是否安装成功,显示了docker相关内容说明安装成功

5.docker的镜像

docker的镜像和容器关系:

镜像相当于是安装包

容器相当于是运行的软件,进程

通过镜像去形成容器

我们可以通过docker image查看镜像相关的操作指令

?镜像相关的操作指令:(我们测试常用到的有以下)

  • docker image pull?镜像名称? ? 下载镜像
  • docker image? rm? image_id(镜像ID)? ?删除镜像**
  • docker image?ls? 显示所有的镜像

nginx是用来搭建web的服务器?,网上直接搜索docker nginx?即可,然后复制docker pull nginx到xshell中执行,就可以下载nginx了

下载完后,可以通过docker image ls?查看镜像

?

删除镜像:删除的镜像ID不需要输入完整,部分就可以了,删除完可以查看没有nginx镜像了

想安装什么镜像,可以直接搜索,复制命令,如jenkins

6.docker的容器

run运行容器

基础使用:

docker container? run nginx

docker?会到本地区查找有没有叫做nginx的镜像,如果没有会在Docker Hub官方仓库当中下载

docker?每条命令里都有可选参数,收下是run经常使用的一些可选参数:

-p /? --publish

开方端口,比如开放容器的80和22端口,分别映射到宿主机的8000和5000端口。nginx必须要开放端口才可以使用

docker container? run -p 8000:80 -p 5000:22 nginx

开放端口前,一定要确定服务器开放了8000端口的防火墙

?开放端口后,就可以访问了

?-d? / --detach

后台运行,打印容器ID

没有后台运行时,会显示nginx的日志:

?后台运行以后,打印容器ID后可以接着做其他的事:

?--name

给容器取一个名字,更容易记得住。默认容器名称是随机生成的

-e / --env

给容器添加环境变量

--rm

退出容器时自动删除容器,通常用在调试过程中

-v / --volume

添加volume数据卷(数据卷是宿主机和容器之间的数据通道)

logs日志查看

查看某个容器运行的日志

docker container logs container_id

stop命令

停止容器运行

docker container stop?container_id(name)

rm命令

删除容器

docker container rm?container_id(name)

ls查看容器

docker container?ls

可选择的参数:

-a / --all

展示所有的容器,包含运行的和没有运行的

-q / --quiet

只显示IDs

-f / --filter

筛选容器

列举所有退出的容器,并显示ID

docker container ls -aq -f "status=exited"

7.jenkins运行docker容器

?使用官方的安装时,老是报错,所以我换了一种方式安装

执行如下命令即可:

注意:端口号根据自己开放的端口来填写,一定要确定填写的端口号是服务器开放的端口号

docker run -u root --rm -d --name blueocean -p 8084:8080 -p 50004:50000 -v $(which docker):/usr/bin/docker -v $HOME/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

?查看一下可以看到 jenkins?的镜像安装成功

确认安装成功,就可以访问网址了

安装成功后,我们要去查看 jenkins?的初始密码,所以需要先查到?container id,然后再查看日志信息找到密码

把管理员密码复制到输入框内,然后点击【继续】按钮

之后的步骤可以参考我之前的一篇文章jenkins介绍与使用_晒不黑的黑煤球的博客-CSDN博客去进行设置,我这里就不一步一步介绍了

配置完成后的界面如下

点击开始使用后,就自动进入jenkins页面?

接下来,我们需要在 docker?上安装一个定制版的 python?镜像文件

怎么去打包一个python脚本的镜像:

  1. 远程服务器,安装python,推荐python3
  2. docker运行python,通过Dockerfile

dockerfile定制版的镜像:

dockerfile , 构建了一个 python 的容器
构建操作(steps): ?python run.py
构建后的操作(post): 生成测试报告

dockerfile常用命令:

FROM

必须写,表示从哪个基镜像开始构建

FROM?untuntu

#?从0开始

FROM?scratch

WORKDIR

工作目录

WROKDIR /usr/share

#?相当于运行cd /usr/share

COPY / ADD

添加本地文件,一般使用COPY

COPY?localfile/dest/file

ENV

添加环境变量?

ENV <key> <value>

ENV <key>=<value>

EXPOSE

开放端口,容器可以监听的端口,EXPOSE 80/udp,协议可以不填。注意和运行程序的-p区分

VOLUME

数据卷

RUN?

要运行的指令,可以是?shell格式,也可以是exec格式

RUN?yum install wget

RUN ["yum","install","wget"]

CMD

一个 Dockerfile中只出现一次,容器开启时运行的命令。比如启动一个python程序:python run.py

格式也支付shell?和?exec?格式

CMD?python run.py

Dockerfile配置:(在项目中增加一个Dockerfile文件,添加如下代码)

注意:复制下面代码时到Dockerfile文件时,把后面的注释删除掉

FROM python:3.9-slim # 从python开始构建
WORKDIR /api_testing
COPY . . # 把本地文件复制到容器中
RUN pip3 install -r requirements.txt  # 安装所有的第三方库
CMD [ "python3", "run.py"] # 运行run.py

?Jenkinsfile配置:(在项目中增加一个?Jenkinsfile文件,添加如下代码)

pipeline {
    agent { dockerfile { additionalBuildArgs "-t api_testing:${currentBuild.number}"} }
    stages {
        stage('test') {
            steps {
                sh 'python run.py'
            }
            post {
                always {
                    publishHTML (target : [allowMissing: false,
                        alwaysLinkToLastBuild: true,
                        keepAll: true,
                        reportDir: 'reports',
                        reportFiles: '*.html',
                        reportName: 'My Reports',
                        reportTitles: 'The Report'])
                }
            }
        }
    }
}

然后把项目git push?到仓库

安装两个docker插件

?然后新建一个流水线

?只需要配置仓库的地址及用户名密码,点击保存

最后点击立即构建即可?

可以通过控制台Console Output,查看运行的过程

总结:

  1. jenkins一定要确定两个插件(docker plugin 和 docker pipeline)是否安装成功,否则构建结果会报错,我在搜索docker plugin时搜索不到,换了各种国内镜像文件也不行,最后我安装的docker后,查看已安装的插件时显示docker plugin已经安装好了
  2. 构建结果显示错误:pytest:ERROR: usage: run_tests.py [options] [file_or_dir] [file_or_dir] [...],这是因为requirements.txt中缺少pytest-html第三方库(不知道为什么,本地也未安装pytest-html运行就OK)
  3. 查找映射的地址,我的没有在home目录下,而是在 /root/jenkins/worksapce?下
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:26:30  更:2021-12-03 13:26:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:47:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码