Docker

Docker

文章目录

  • 简介
  • docker了解
  • docker安装
    • 前提
  • 安装步骤
    • 镜像下载加速
  • 底层原理
  • 3.docker的常用命令
    • docker帮助命令
    • docker镜像命令
  • docker pull mysql

简介

虚拟机:启动时间分钟级别
完整镜像4个多G
时间长

带环境安装

看上去和vm一样,虚拟机是一个普通文件
,不需要就删了,不会影响我们原本的OS
缺点:

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

docker了解

docker是一种容器虚拟技术
图标解读
前置知识

  • linux下的测试/部署
  • git基础命令

开发与运维的那些事
开发开发出一个应用,打包war包,发给运维,运维做部署。

docker提供了标准的解决方案
软件可以带环境安装,安装是将原始环境一模一样复刻过来
eg:

养鱼:如果我们只是买条鱼回来可能会死,因为环境不一样嘛,淡水养殖,你非得用盐水,那不就死了,最好你连着海搬过来,这样肯定没问题

搬家:原本你在一个地方,各种家具摆放的都挺好,然后你要搬家,你觉得怎么摆放都摆不好,这时候最好就是带楼搬

相应技术: 镜像技术

docker打破程序即应用,通过镜像技术,做到一次封装, 处处运行

跨平台,跨服务器

解读docker图标

  • 海水:我们的操作系统,环境平台,一般都是linux,当然windows也有,但是大部分都是linux
  • 鲸鱼:就是我们的docker
  • 集装箱:就是我们一个一个的镜像容器

devops:开发/运维,解决了运维时环境与开发不一致的问题

优势:

  1. 更快捷的应用交付和部署
  2. 更便捷的升级和扩容
  3. 更简单的系统运维
  4. 更高效的计算资源利用

docker与传统虚拟化方式的不同之处:

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的OS、在该OS上再运行所需应用进程
  • 而容器内的应用进程直接运行与宿主的内核,容器内没有自己的内核,而且也没有硬件虚拟,因此容器要比传统虚拟机更为便捷。
  • 每个容器之间相互隔离,每个容器有自己的文件系统,容器之间的进程不会互相影响,能区分计算资源。
    Docker_第1张图片

docker安装

docker官方地址

前提

centos 7 64bit(都是64位机),内核在3.10以上
centos6.5以上,版本在2.6.32-431以上

如何查看内核版本:username - r
Docker_第2张图片
基本组成:

  • 镜像(image):只读的模板,创建的Docker容器,一个镜像可以创建多个容器
  • 容器:镜像创建的运行实例,
    docker利用容器独立运行一个或一组应用。容器使用镜像创建的运行实例。可以被启动,停止,开始,删除,相互隔离,保证安全。 可以把容器看成一个简易的linux系统,和运行在上应用,容器的定义和镜像几乎一致,也是一堆层的统一视角,唯一区别在于最上面那一层是可读可写的
  • 仓库:
    是集中存放镜像的场所,仓库和仓库注册服务器是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了很多镜像,每个镜像有不同的标签tag
    仓库分为public和private两种形式
    最大的公开仓库是Docker Hub
    存放了数量庞大的镜像供用户下载,国内的公开仓库包括阿里云、网易云等

需要正确的理解仓储/镜像/容器这几个概念:
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image 文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。

  • image文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器

安装步骤

centos 6.8 安装
centos 7 安装
官方地址
Docker有 社区版和 专业版

  1. 确定你是centos7以上版本
    cat /etc/redhat - release
    在这里插入图片描述

  2. yum安装gcc相关
    要求: yum能连上外网

yum -y install gcc
Docker_第3张图片

yum -y install gcc-c++
Docker_第4张图片

  1. 卸载旧版本
    yum -y remove docker docker-common docker-selinux docker-engine
    Docker_第5张图片

  2. 安装需要的软件包
    yum install -y yum-utils device-mapper-persistant-data lvm2
    Docker_第6张图片

  3. 设置stable镜像仓库
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

  1. 更新yum软件包索引
    yum makecache fast
    Docker_第7张图片

  2. 安装docker-ce
    yum -y install docker-ce
    Docker_第8张图片

  3. 启动docker
    启动docker:systemctl start docker
    在这里插入图片描述

查看状态:systemctl status docker
Docker_第9张图片
绿了就对了

  1. 测试
    查看docker版本:docker version
    Docker_第10张图片

运行helloworld镜像:docker run hello-world
Docker_第11张图片

肯定第一次是没有的,就要先pull镜像,从register下载,然后在更具镜像生成容器,运行容器

镜像下载加速

这里使用阿里云的镜像加速

  1. 打开:https://dev.aliyun.com/serch.html
    Docker_第12张图片

  2. 注册一个属于自己的账号(这里可以用淘宝账号)

  3. 产品与服务
    Docker_第13张图片
    Docker_第14张图片
    Docker_第15张图片

  4. 安装镜像服务=>镜像加速器=>centos

配置加速器:
前提:centos 7
步骤:

  1. 创建一个docker文件
    mkdir -p /etc/docker
    这里的-p是创建多级目录的意思

  2. 编辑daemon.json
    vim /etc/docker/daemon.json
    赋值{}以及里面的内容
    在这里插入图片描述

  3. 重启docker
    systemctl daemon-reload
    在这里插入图片描述

systemctl restart docker
在这里插入图片描述

systemctl status docker
Docker_第16张图片

底层原理

docker是怎么工作的:c/s结构
为什么docker快于vm

3.docker的常用命令

docker帮助命令

docker version:版本等内容
docker info:更多信息
docker help:帮助文档

docker镜像命令

列出本地镜像:docker images

options 说明
-a
-q
–digests
–no

docker search

options 说明
–notrunc 显示完整的镜像描述
-s 列出收藏数
–digests
–no

安装依赖:
web项目为Jpress
安装nginx依赖:docker pull nginx
后台启动运行nginx
docker run -d nginx
将8080端口映射
docker run -d -p 8080:80 nginx

安装tomacat依赖:docker pull tomcat
在jpress.war所在目录建立Dockefile文件:cat Dockerfile
说明是以tomcat为基础模板

# 说明是以tomcat为基础模板
from tomcat
# 容器的版权信息
MAINTAINER jack [email protected]
# 拷贝war包发布到tomcat的www web程序发布目录
COPY jpress.war /usr/local/tomcat/webapps

3.创建一个叫做jpress:latest的镜像
[root@node1 ~]# docker build -t jpress:latest .

启动容器将容器的8080端口映射到宿主机的8888
[root@node1 ~]# docker run -d -p 8888:8080 jpress
04252a52ecffab83d151a7d37aa24c0acd0b7bc75607b6cc8da2c017ee84ac4b

访问tomcat,可以看到能够正常访问jpress,http://192.168.3.177:8888/jpress/

4.安装mysql镜像
因为jpress后台依赖mysql数据库,需要安装mysql

docker pull mysql

运行mysql容器,3306映射到宿主3306,创建密码,数据库为jpress
[root@node1 ~]# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=jpress mysql
7b2ea4ced739ef2e296513f67fcef5fea104a70a1b6badef56cd4fde99df6bc7

现在jpress依赖的mysql和tomcat安装启动完毕,需要继续安装jpress程序,注意数据库主机需要填写宿主机的ip,因为Localhost是找容器的localhost,jpress容器中没有mysql只有Jpress程序

5.重新启动Jpress,再次访问网站就ok了
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b2ea4ced739 mysql “docker-entrypoint.s¡­” 8 minutes ago Up 8 minutes 0.0.0.0:3306->3306/tcp vigilant_perlman
04252a52ecff jpress “catalina.sh run” 23 minutes ago Up 23 minutes 0.0.0.0:8888->8080/tcp lucid_tesla
16f19cac5349 nginx “nginx -g 'daemon of¡­” About an hour ago Up About an hour 0.0.0.0:32768->80/tcp competent_davinci
[root@node1 ~]# docker restart 04252a52ecff

至此,使用docker部署我们自己的一个Java web程序就告一段落

你可能感兴趣的:(docker)