docker

Docker概述

docker为什么会出现
一款产品:开发---->上线 两台电脑,应用环境,应用配置
开发---运维,产生问题:在我的电脑上可以运行,另一台就不行.版本更新,导致服务不可用.对于运维来说,考研很大.
环境配置是十分麻烦的,每一台机器都要部署环境(集群Redis,ES,Hadoop...)费时费力
发布一个项目jar*(Redis,MySqk,jdk,ES)项目能不能带上环境安装打包
之前在服务器配置一个应用环境Reids,MySql,jdk,ES,Hadoop配制超级麻烦,不能跨平台
windows最后发布到lniux
传统:开发jar,运维来做
现在:开发打包部署上线一套流程做完.
java--apk--发布(应用商店)--张三使用apk--安装即可用
java--jar(环境)--打包项目带上环境(镜像)---docker仓库:商店---下载发布的镜像--直接运行即可
docker解决以上问题.
docker的思想来源于集装箱:
jre--多个应用(端口冲突)--原来是交叉的
隔离:docker核心思想,打包装箱,每个箱子互相隔离
docker通过隔离机制,可以将服务器利用到极致
docker历史
Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。
底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的!
2013年,dotCloud 的 PaaS 业务并不景气,公司需要寻求新的突破。于是他们聘请了 Ben Golub 作为新的 CEO,将公司重命名为“Docker”,放弃dotCloud PaaS 平台,怀揣着“将 Docker 和容器技术推向全世界”的使命,开启了一段新的征程。(开源)
如今 Docker 公司被普遍认为是一家创新型科技公司,据说其市场价值约为 10 亿美元。Docker 公司已经通过多轮融资,吸纳了来自硅谷的几家风投公司的累计超过 2.4 亿美元的投资。
几乎所有的融资都发生在公司更名为“Docker”之后。
提示:“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。
docker为什么这么火
docker是go语言开发,开源
在容器技术出来之前,我们都是使用虚拟机技术
虚拟机:在window中安装一个Vmware,通过这个软件我们可以虚拟一台电脑,特别占用内存,笨重
虚拟机也是属于虚拟化技术,docker容器技术,也是一种虚拟化技术
wm:linux cnetos镜像(一台电脑),隔离,需要开启多个虚拟机,几个G,启动需要几分钟
docker:隔离,镜像(最核心环境,4m_+jdk+mysql)十分小巧,运行镜像就可以了,几兆,启动秒级
虚拟机技术与容器化技术

虚拟机技术缺点:

  1. 资源占用十分多
  2. 冗余步骤多
  3. 启动慢

容器化技术:

  1. 容器化技术不是模拟一个完整的操作系统

比较docker和虚拟机的不同

  • 传统虚拟机,虚拟出一组硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核,也没有虚拟我们的硬件,所以就很轻便了
  • 每个容器间互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

DevOps(开发,运维)

  • 应用更快速地交付和部署

    传统:一堆帮助文档,安装程序

    Docker:打包镜像发布测试,一键运行

  • 更便捷的升级扩缩容

    使用了docker之后,我们部署应用就和搭积木一样

    项目打包为一个镜像,扩展服务器a,服务器b

  • 更简单的系统运维

    在容器化之后,我们的开发,测试环境都是高度一致的

  • 更高效的计算资源利用

    docker是内核级别的虚拟化,可以在一个物理机上运行很多容器实例,服务器的性能被压榨到极致

Docker安装

docker名词
  • docker镜像(image):镜像类似一个模板,可以通过这个模板创建容器服务,通过tomcat镜像–run—tomcat1容器(提供服务)通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

  • 容器(container):docker容器技术,独立运行一个或者多个应用,通过镜像来创建容器

    启动,停止,删除,基本命令.目前可以把这个容器看成一个简易版的linux系统

  • 仓库(repository):用来存放镜像的地方

    • 公有仓库

    • 私有仓库

      docker hup默认国外的,速度慢

      阿里云容器加速(配置镜像加速)

安装docker

网址:https://docs.docker.com/engine/install/centos/

环境:CentOS7

uname -r:查看系统内核3.10版本以上

1.卸载旧版本

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

2.安装包

yum install -y yum-utils

3.设置镜像仓库(阿里云镜像下载快)

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新yum软件包索引

yum makecache fast

5.安装docker相关的内容

yum install docker-ce docker-ce-cli containerd.io

6.启动docker

systemctl start docker

7.使用命令查看是否安装成功

docker version

8.卸载docker(卸载依赖,删除目录)

yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
阿里云镜像加速

这个需要输入自己的阿里云地址(容器镜像服务–镜像加速器)

四个命令,一个一个执行

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://06vyb81f.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

底层原理

docker是怎么工作的?

docker是一个Client-Server结构的系统,docker的守护进程运行在主机上,通过socker从客户端访问,DockerServer接收到DockerClient的指令,就会执行这个命令.

docker为什么比vm快?
  1. docker有着比虚拟机更少的抽象层
  2. docker利用的是宿主机的内核,vm需要是CuestOs

所以说,新建一个容器的时候,docker不需要像虚拟机一样更新加载一个操作系统内核,避免引导虚拟机是加载GuestOS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程.秒级的.

docker基本命令

docker version    #显示docker版本信息
docker info       #显示docker的系统信息,包括镜像和容器数量
docker -help      #帮助命令
镜像命令
docker images		#显示所有本地的主机镜像
REPOSITORY	镜像的仓库源
TAG			镜像的标签
TMAGE ID 	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小
docker search + 镜像名称 	#搜索镜像
docker pull + 镜像名称		#下载最新版镜像
docker rmi + TMAGE ID		#删除镜像
docker rmi -f e733			#删除指定镜像
docker rmi -f ajff afdj djsi #删除多个镜像
docker rmi -f $(docker images -aq)#删除所有镜像
容器命令

有了镜像才可以创建容器

docker run [可选参数] image #新建容器启动
#参数说明
--name="name"	容器名字:tomcat1 tomcat2用来区分容器
-d			    后台方式运行
-it				使用交互方式,进入容器查看内容
-p				指定容器端口号 -p 8080:8080(小写) 主机端口:容器端口
-P				随机指定端口(大写)
docker run -it centos /bin/bash	#启动并进入容器
exit						  #退出容器命令(容器停止退出)
ctrl + p + q				   #退出容器命令(容器运行退出)
docker ps		#查看正在启动的容器
docker ps -a	#查看所有容器
docker ps -a -n=1	#查看最近创建的一个容器
docker rm + 容器id	#删除指定容器(先停止运行),后加上-f强制删除
docker rm -f $(docker ps -aq)	#递归删除所有容器
docker ps -q|xargs docker rm 	#删除所有容器
docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止容器
docker kill 容器id	#杀死容器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值