关键词:
一.docker简介:
docker是容器技术的一个代表,而容器技术是将程序打包和隔离的一种技术,其实它并不是一个新技术,之前在linux内核中早已存在,真正被大众所用所了解是因为docker的出现。docker之所以流行起来,是因为解决了一些计算机领域的痛点,它解决了软件包装的问题,保证开发与运维及测试环境的一致。docker可以将任何应用以轻量级容器的形式来打包,迁移发布和运行。可以简单的认为是一个轻量级的虚拟机,但是也不算是虚拟机。
2013年docker开源,它跨平台,支持windows,Mac,Linux系统。Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎.
docker官网:https://www.docker.com/
docker的github托管地址:https://github.com/docker
docker官方文档:https://docs.docker.com/get-started/
docker下载地址:https://get.daocloud.io/
二. Docker思想:
1.集装箱
docker的logo是一个鲸鱼上面装着很多集装箱,想象下在没有集装箱之前,运输货物非常零散,没有规矩,运输过程中说不定有些东西会掉了,优良集装箱,所有货物就被密封在集装箱中,集装箱很大也不容易丢失,这样就保证了我们货物的安全原样的送到目的地。那么我们可以把货物想象成我们的程序,假如能把一台机器上的程序部署到新的一台机器上,那么会拷贝过去,但是这过程中有可能会因为人为的疏忽少拷贝了一些配置文件或者相关文件,导致在另一台机器上程序启动不起来。有了docker的集装箱就是帮我们解决这样的问题,它会保证我们的程序不管在哪运行不会缺少应有的东西。
2.标准化
可以从三个方面解释标准化,1.运输方式的标准化。2.存储方式标准化。3.Api接口标准化。
3.隔离
docker是一种轻量级容器,它有自己的一套内部环境,比如cpu,内存,磁盘等,可以隔离外面主机。docker使用了LXC技术来实现这种独立的环境,LXC又名Linux container,是一种虚拟化的解决方案,这种是内核级的虚拟化,这是一种轻量级的容器虚拟化,可以实现docker环境的快速建立,销毁。
三.docker能解决哪些问题
1.解决环境不一致:
经常遇到开发在本地运行没错,测试那边运行同一个程序出现问题。出现这种问题一般都是运行环境不一致导致的。一个应用程序运行需要一系列的依赖,如操作系统,web服务器,相关的配置文件,对应的编程语言的代码及相应程序解释器等等,如果其中一个变了程序就有可能失败,比如程序调用了一些系统命令,但是换个环境没有这些命令,那么就会导致程序启动失败,程序的版本也会导致程序的错误,如php7和php5.3语法就有些不一样。
而docker就会把所有所需要的配置文件,程序代码等所需要的一切环境打包到一个集装箱中,相当于把开发环境打了一个包,这个包环境和开发的本地的环境一摸一样,这样就保证了运行环境的一致性,这个包就可以被测试引用到他本地运行,所以docker就是解决环境不一致的问题。
2.程序隔离
Linux是多用户系统,上面可以运行多种程序和服务,当其中一个程序或服务运行出现故障时候,消耗很多cpu,或者大量IO操作,占用大量内存,会牵连服务器上的其他运行中的软件,而docker可以避免这种情况出现。因为docker本身就是一个个独立隔离的环境,在docker启动的时候就会被限定使用多大的内存及其他资源使用限度,所以docker环境里的程序出现问题也会只是影响这个docker里的程序,不会影响其他服务和程序。
3.资源快速扩张和弹性伸缩
现在电商系统经常会有秒杀活动,还有双十一,618这样特别的促销活动。每当这样的节日来临时候,电商系统都会面临大量的访问,所以需要更多的软硬件资源去应对这样大量的访问量,而平时却不需要这么多的服务器,不如也会造成极大的浪费,所以在节假日来临前扩充可以应对节日所需要的服务器数量,节日之后在将这些多余的服务器下线,但是这会给运维带来非常大的工作量,因为运维需要分别给每台机器搭建环境配置所需要点一切软件,并且还得调试,这是一个非常繁琐的过程。但是docker让这些事变得简单,只需要通过docker管理软件点击鼠标配置下,就会立马从10台服务器变成100台或者更多。
四.docker核心技术
docker里面有三个核心的词汇镜像,仓库,容器,镜像是上面例子中的集装箱,仓库是存放镜像的地方,容器是运行程序的地方。docker运行一个程序的过程就是去仓库把镜像拉到本地,然后用docker命令在本地把docker运行起来。
1.镜像(image):从本质上来说镜像就是一系列的文件,可以包括应用程序的文件,也可以包括运行环境的文件,这些镜像文件用一种特殊的文件格式来保存。linux有种存储技术叫做联合文件系统(Union File System),这是一种分层的文件系统,可以将不同的文件目录挂载在同一个虚拟文件系统下。怎么理解呢,下面有个例子。
songguojundeMBP:~ songguojun$ ls dir1 //在dir1目录下看到下面三个目录 Desktop Downloads Movies songguojundeMBP:~ songguojun$ ls dir2 //在dir2目录下看到下面另外三个目录
code Documents Library songguojundeMBP:~ songguojun$ ls dir //联合文件系统中,在dir目录下看到下面六个目录,也就是上面两个目录共同的目录文件集合 Desktop Downloads Movies code Documents Library
其实就是联合在不同磁盘上的不同的文件系统到一个公共目录下。通过联合文件系统可以实现文件的分层,docker镜像就是利用这种分层的概念来实现镜像存储。下面这张图就是镜像存储格式。
在Docker镜像分为基础镜像和父镜像,没有父镜像的镜像被称为基础镜像。用户是基于基础镜像来制作各种不同的应用镜像。这些应用镜像共享同一个基础镜像层,提高了存储效率。
2.容器(container)
容器的本质就是一个运行在服务器上的进程,docker镜像中的每一层文件都是只读的,只有最上面一层上可写的,这一层就是容器,容器这一层是可写的,当容器对下一层的镜像去写东西,会将下一层的镜像中要修改的文件拷贝一份到最上层容器中,然后在对它修改,修改之后当程序读取这个最新的文件,因为程序读取会从最顶层开始查找。由于镜像是不可以修改的,所以同一个容器可以生成多个容器独立运行,它们之间没有任何干扰。
镜像和容器区别:
镜像其实是有多个只读层,它们重叠在一起,除了最上面一层可写其它都是只读模板,而容器就是镜像的一个运行实例。一个镜像可以创建很多容器。用编程语言来举例,镜像相当于类,而容器相当于类的一个实例。
3.仓库(repository)
仓库就是存放镜像的地方,可以使用docker pull命令从docker hub拉取我们需要的镜像,进行操作。docker有官方等其他公司提供的镜像中心,也支持搭建自己私有的镜像中心。
常用仓库地址列表:
hub.docker.com (docker官方仓库)
c.163.com(网易蜂巢)
hub.docker.com 里面常用镜像列表
五.Docker 架构
docker架构图(生命周期图)
1.DOCKER_HOST:docker操作宿主机,上面运行了Docker daemon核心程序,负责各种docker操作,比如下载docker镜像或者运行一个容器。
2.Client:客户端用命令和Docker daemon交互,比如pull,build ,run等,交给Docker daemon来操作,和远端镜像仓库交互。
3.Registry:公司的sass服务,是存放 Docker 镜像的仓库,Docker daemon可以和Registry交互。
docker工作流程:
通过docker build将镜像打包出来,在通过docker push将镜像推送到镜像仓库中。
通过docker run向Docker Daemon发出指令运行镜像。
六.docker的安装
安装docker先看下centos版本
[root@localhost ~]# uname -r 3.10.0-514.21.2.el7.x86_64
第一个命令,下载
wget -qO- https://get.docker.com/ | sh
下载完后,docker默认情况是允许root去运行,所有建议添加一个用户到docker组
先查看用户组
cat /etc/group
我们添加一个用户
[root@localhost docker]# usermod -aG docker songguojun
#groups 查看当前登录用户的组内成员
查看加入情况
cat /etc/group
查看docker是否安装成功
docker info
如果出现下面命令
说明docker服务没有启动
我们启动下
service docker start
在执行 docker info
docker安装成功
我们可以直接输入docker命令 查看docker命令的选项
我们看到里面有个run参数,意思是在一个新容器中执行命令,可以单独查看这个参数意思
[root@localhost ~]# docker run --help Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container Options: --add-host list Add a custom host-to-IP mapping (host:ip) -a, --attach list Attach to STDIN, STDOUT or STDERR --blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) --blkio-weight-device list Block IO weight (relative device weight) (default []) --cap-add list Add Linux capabilities --cap-drop list Drop Linux capabilities --cgroup-parent string Optional parent cgroup for the container --cidfile string Write the container ID to the file --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpu-rt-period int Limit CPU real-time period in microseconds
docker window安装:https://docs.docker.com/docker-for-windows/install/
Mac安装:https://docs.docker.com/docker-for-mac/install/
更多安装参考: http://www.docker.org.cn/book/install/supported-platform-17.html
window安装需要注意下,需要开启控制面板(快捷键Ctrl+Alt+Delete)->程序->启用或关闭Windows功能->把Hyper-v勾上。启用后电脑会重启。
查看详情
docker安装和基本使用
centos6安装dockersudo yum install docker-io sudo service docker start sudo chkconfig docker on 报错Docker#dockerdeadbutpidfileexists错误查看/v 查看详情
docker安装和使用
安装docker先看下centos版本[[email protected]~]#uname-r3.10.0-514.21.2.el7.x86_64 第一个命令,下载wget-qO-https://get.docker.com/|sh 下载完后,docker默认情况是允许root去运行,所有建议添加一个用户到docker组先查看用户组cat/etc/group  查看详情
[转]docker和rancher的安装与基本使用
本文转自:https://blog.csdn.net/wangshouhan/article/details/80405672一.Docker1.CentOS下Docker安装安装$yum-yinstalldocker-io查看docker版本$dockerversion启动docker$servicedockerstart以上都没问题表示docker安装成功。2.docker基础命令#查看doc 查看详情
mac下docker安装和使用(代码片段)
环境说明操作系统:macOSHighSierraDocker版本:docker内容摘要:Docker安装直接访问docker官网,下载dockerCE版本进行安装https://store.docker.com/editions/community/docker-ce-desktop-macdocker默认的本地镜像时存在当前用户目录下的,为了方便管理,... 查看详情
centos7上docker的安装和基本使用
Centos7上Docker的相关操作Docker的安装1、检查内核版本docker使用linux的内核必须是3.10以上,首先需要#uname-r 2、使用yum安装docker#yuminstalldocker3、启动&停止重启:#systemctlrestartdocker停止:#systemctlstopdocker启动:#systemctlstartdocker开机自... 查看详情
docker的安装和使用说明——dockerforwindows
一、Docker安装1.1官方方法官方下载页面:http://www.docker.com/products/docker#/windows官方下载地址:https://download.docker.com/win/stable/InstallDocker.msi1.2推荐方法:1.2.1DockerToolbox官方地址:http://www.docker.com/products/docke 查看详情
docker的安装和使用说明——dockerforwindows
一、Docker安装1.1官方方法官方下载页面:http://www.docker.com/products/docker#/windows官方下载地址:https://download.docker.com/win/stable/InstallDocker.msi1.2推荐方法:1.2.1DockerToolbox官方地址:http://www.docker.com/products/docke 查看详情
docker安装和使用(代码片段)
安装docker1.卸载旧版本sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc2.更新apt包索引sudoapt-getupdate3.安装apt依赖包sudoapt-getinstallapt-transport-httpsca-certificatescurlgnupg-agentsoftware-properties-co 查看详情
docker的安装和使用(附带详细docker命令)(代码片段)
Docker的安装移除旧版本(视情况而定):$sudoyumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-selinuxdocker-engine-selinuxdocker-engine更新yum(centos 查看详情
docker buildkit 是不是可以与已安装的 docker.sock 和 docker compose 一起使用?
】dockerbuildkit是不是可以与已安装的docker.sock和dockercompose一起使用?【英文标题】:Doesdockerbuildkitworkwithamounteddocker.sockanddockercompose?dockerbuildkit是否可以与已安装的docker.sock和dockercompose一起使用?【发布时间】:2021-12-1506:01:45【问... 查看详情
docker-compose介绍,安装和使用(代码片段)
Docker-Compose介绍有时候运行一个镜像需要大量的参数,可以通过Docker-Compose编写这些参数.而且Docker-Compose可以版主我们批量管理容器,这些信息值需要通过一个docker-compose.yml文件去维护即可下载并安装Docker-Compose下载Docker-Compose去githu... 查看详情
docker安装与使用相关
之前docker没有系统整理,现在经常会重新安装docker,部署docker环境,进行重启的创建和操作,下面进行记录和备忘:安装docker-ce:现在常用的docker版本为docker-ce为docker社区版;官方提供的文档已经很简洁;https://docs.docker.com/engine... 查看详情
使用 docker 和 openfoam 在 /mnt 上安装 sdb
】使用docker和openfoam在/mnt上安装sdb【英文标题】:mountingsdbon/mntusingdockerandopenfoam【发布时间】:2017-05-2908:01:18【问题描述】:我最近在2016年10月在此站点上发现了题为“如何在openFOAM的docker版本中挂载卷”的帖子。该帖子自动询... 查看详情
使用docker安装elasticsearch和kibana(代码片段)
使用Docker安装安装ES【先读官方文档!!!】拉取镜像dockerpullelasticsearch:7.6.1创建网络dockernetworkcreateelastic加上内存限制启动ESdockerrun-d--namees01-test--netelastic-p9200:9200-p9300:9300-e"discovery.type 查看详情
使用docker安装elasticsearch和kibana(代码片段)
使用Docker安装安装ES【先读官方文档!!!】拉取镜像dockerpullelasticsearch:7.6.1创建网络dockernetworkcreateelastic加上内存限制启动ESdockerrun-d--namees01-test--netelastic-p9200:9200-p9300:9300-e"discovery.type 查看详情
2docker基础安装和基础使用(代码片段)
基础环境本次环境使用Centos7.x版本系统,最小化安装,系统基础优化配置请查看Centos7.x系统基础优化安装使用命令:yuminstalldocker-io-y[[email protected]~]#yuminstalldocker-io-yLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base 查看详情
云原生之docker-compose篇docker-compose工具的安装和基本使用
【云原生之docker-compose篇】docker-compose工具的安装和基本使用一、docker-compose介绍1.docker-compose简介2.docker-compose的特点二、docker-composev1版本的安装1.下载docker-compose二进制包2.给文件增加执行权限3.检查docker-compose版本三、docker-compose... 查看详情