| |
|
开发:
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.什么是dockerdocker解决了软件环境部署复杂的问题 对于一个传统的软件工程,开发人员把写好的代码放到服务器上去运行是一件很头疼的事情,因为常常会出现环境不兼容而导致各种各样的bug 比如说,开发是windows系统下编写的代码,放到linux服务器上可能会出问题,开发在本地依赖了一个系统自带的驱动,服务器上却没有这个驱动,开发在本地设置了很多环境变量,服务器上又得重新设置 在软件部署的时候,经常会发生在这台机器上可以跑,但是在另一台机器上却运行失败的情况。运维人员需要不断在开发环境和服务器环境之间调试 有了docker,只需要简单的几行命令,就可以做到所有运行环境都一致 ?docker使用的技术几乎没有新技术,大多是对linux已经存在的技术的封装,docker中的容器,是使用linux之前的一些技术,把开发需要设置的环境,全部隔离在一起,形成一个集装箱。当有其他的环境要配置的时候,只需要复制一个集装箱即可 2.为什么使用docker作为一个测试来说,使用docker的主要原因就是用来搭建测试环境 例如:不同的公司使用的环境大不相同 语言? ? ? web框架? ??数据库 Java + spring bott + mysql + redis php? ?+? ? yii? ? ?+? ? oracle python + Django + mysql 接口自动化需要安装的内容:
传统的安装环境的方式缺陷:
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步骤: 如果之前安装过可以执行以下命令进行卸载旧版本,没有安装过不用理
?安装命令:
遇到是否安装,直接输入y即可 ?重启docker
重启后,可以输入docker查看是否安装成功,显示了docker相关内容说明安装成功 5.docker的镜像docker的镜像和容器关系: 镜像相当于是安装包 容器相当于是运行的软件,进程 通过镜像去形成容器 我们可以通过docker image查看镜像相关的操作指令 ?镜像相关的操作指令:(我们测试常用到的有以下)
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脚本的镜像:
dockerfile定制版的镜像: dockerfile , 构建了一个 python 的容器 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文件时,把后面的注释删除掉
?Jenkinsfile配置:(在项目中增加一个?Jenkinsfile文件,添加如下代码)
然后把项目git push?到仓库 安装两个docker插件 ?然后新建一个流水线 ?只需要配置仓库的地址及用户名密码,点击保存 最后点击立即构建即可? 可以通过控制台Console Output,查看运行的过程 总结:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |