@docker 介绍及教程—概念篇
1. docerk 为什么会出现,为什么那么热门
a)因为软件部署上线阶段开发环境和配置与实际生产环境与配置不同导致程序无法运行。同时软件版本的迭代,不同版本环境的兼容,都会岛主软件无法运行。
b)热门原因:它提供了一种针对环境及配置的一种标准化解决方案。
c)传统运行的环境需要安装各种软件、各种驱动包,这样配置麻烦、工作量大、同时不能跨平台。移植到相同的服务器也很麻烦。在这个过程难免会有异常发生。
d) docker镜像的设计,使docker打破传统的程序即应用的观念。通过镜像将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运行。
举例:传统的方式:开发有一台系统,上面安装了n个软件,同时还需要进行各类的配置。繁琐、耗时、又没办法标准化。
现在方式:把开发环境做成一个镜像,这个镜像可以快速复制n个副本。
2. docker的理念:
a)docker是基于go语言实现的云开源项目。
b)docker主要的目标是“Build,ship and run any app,anywhere”
翻译过来就是:通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的app(可以是一个web应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
c)解决了运行环境和配置问题软件容器,方便做持续集成并由助于整体发布的容器虚拟化技术。
d)docker三个概念:镜像、容器、仓库 —-docker架构图
3. docker能干什么/strong>
a)与虚拟机区别:
1.虚拟机就是带环境安装的一种解决方案。包含环境、软件、硬件的一套模拟系统。
缺点:资源占用多、冗余步骤多、启动慢
虚拟机是分钟级。
容器是秒级。
2.容器虚拟化 (linux容器 简称lxc):
Linux容器不是模拟一个完整的操作系统,对进程进行隔离。没有自己的内核。
容器不需要一整套操作系统,只需要软件工作所需要的软件和配置。
4.docker安装 —只列举centos 6.8 其他登录官 查看
a)前提说明
docker支持centos版本
centos 7 64位
centos 6.564位或更高版本
b)前提条件
centos内核要求:centos7 内核3.10以上
centos-6.5 内核要求 2。6.32-431或更高版本
c)查看内核版本:uname -r
查看系统版本:cat /etc/redhat-release
-
如何从仓库内下载一个镜像,运行。—阿里云镜像加速
1、访问阿里云 址。 dev.aliyun.com/search.html
2、注册一个阿里云平台的账 。
3、获得加速器地址链接—登陆阿里云开发者平台—-获取加速器地址。 (登陆-镜像加速器–选择版本- 根据要求进行修改)
4、配置本机docker运行镜像加速器 (不同系统不同操作方式)
/etc/sysconfig/docker
vim /etc/sysconfig/docker
修改(other_args=“拷贝此处”)
5、重新启动docker后台服务:service docker restart
6、linux系统下配置完加速器需要检查是否生效。
ps -ef|grep docker
(查看加速期地址是否正确) -
启动docker 后台容器(测试运行hello world)
a)docker run
docker run hello-world。(通过docker客户端运行一个hello-world的镜像)
b)run干了什么
先从本地搜索 hello-world镜像,没有从阿里云搜索。
docker 容器数据卷
1、是干什么br> 做持久化
容器间继承+共享数据
docker的理念:
将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据要求希望是持久化的。容器之间希望有可能共享数据。
docker 容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。
为了能保存数据在docker中我们使用卷2、能干嘛br> 1、数据卷可在容器之间共享或重用数据
2、卷中的更改可以直接生效
3、数据卷中的更改不会包含在镜像的更新中
4、数据卷的生命周期一直持续到没有容器使用为止。
容器间继承+共享数据
容器的持久化
3、数据卷br> 1、如何添加容器卷
a)直接命令添加
不带权限命令:docker run -it -v /宿主机绝对路径目录:/容器内目 镜像名
如:docker run -it -v /mydate:/datecentos centos
-v有新建功能
带权限命令:
docker run it -v /宿主机绝对路径目录:/容器内目:ro 镜像名
:ro(只读)4、数据卷容器br> 是什么br> 命名的容器挂在数据卷,其它容器通过挂在这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。
白话: 活动硬盘上挂活动硬盘实现数据之间的传递。1.先启动一个父容器dc01
docker run -it –name dc01 容器名2、dc02/dc03继承自dc01。 –volumes-from
命令:
docker run -it –name dc02 –volumes-from dc01 容器名3.回到dc01可以看到02/03各自添加的都能共享了
4.删除dc02后dc03可否访问
docker rm -f dc015、新建dc04继承dc03后再删除dc03
docker run -it –name dc04 –volumes-from dc03 容器名
docker rm -f dc03
6、结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用为止。dockerFile 重要
dockerfile是什么/strong>
dockerfile构建三步骤:编写dockerfile文件-docker build –docker run
文件什么样以我们数据的centos为例。自定义镜像
编写此centos的dockerfile
需要在宿主机内创建一个这样的dockerfile文本
将以上内容放进去
示例 docker build -t 新镜像名字:TAG. (.代表当前路径)
实际写:在宿主机上
docker build -f dockerfile路径 -t 新镜像名字:TAG.
docker run -it 新建的镜像名称:TAG.
尝试是否可以使用vim。ifconfig 等等
列出镜像的变更历史
docker images 新的镜像名称案例2:cmd和ENTRYPOINT区别
docker常用安装
总体步骤
搜索镜像
拉取镜像
查看镜像
启动镜像
停止容器
移除容器安装mysql
docker search mysql
docker pull mysql:5.6. (:5.6版本 )
docker run -p 12345:3306 –name mysql
-v /date/mysql/conf:/etc/mysql/conf.d
-v /date/mysql/logs:/logs
-e MYSQL_ROOT_PASSWORD=123456
-d mysql:5.6
mysql -uroot -p。 进入mysql数据备份
本地镜像发布到阿里云流程1.安装相关插件
yum -y install gcc
yum -y install gcc-c++
2.卸载之前的docker4.安装阿里云上的docker
5。更新yum软件包
6.安装docker ce
7.启动docker
sysemctl start docker
8.docker run hello-word
9。配置镜像加速
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8595 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!