学习思路:
l Docker是什么?
l Docker有什么特点?
l Docker 怎么用?
l 不论什么知识框架都要以官方文档为主
一、认识docker
Docker的概念
Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器。
· Docker容器引擎:该引擎可以让开发者打包它们的应用和依赖包到一个可移植的容器中,然后将其发布到任何流行的Linux机器上。
· Docker Hub注册服务器:用户可以在该服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker,可实现软件的一次配置,处处运行。
Docker引擎可以将任何应用打包成一个轻量的、易移植的、隔离的容器。
通过标准的操作系统接口使得应用可以在各种运行环境下保持一致。
容器和虚拟机
Docker是容器的一种,容器是一种轻量级的虚拟技术,和容器对应的更为重量级的虚拟技术是虚拟机。
虚拟机是一种基于硬件的虚拟技术,它采用指令级的虚拟,完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等设备,给用户呈现的就是一个物理主机的特性。用户可以在虚拟机里安装各种各样的操作系统,一切操作都看起来和真机一样。(第一类虚拟机管理程序,如Virtualbox和VMWare Workstation,它运行在操作系统之上。第一类虚拟机管理程序,如Xen,它直接运行在裸机上。)
容器是一种基于操作系统的虚拟技术,它运行在操作系统之上的用户空间,所有的容器都共用一个系统内核,甚至是公共库,容器引擎提供进程级别的隔离,让每一个容器都想运行在单独的系统之上,但又能共享很多底层资源。比起虚拟机,容器更为轻量、快速、易于管理。
除了Docker,常见的容器还有Solaris Zone、BSD jails、OpenVZ和LXC等。
更为详细的对比如下表:
Docker与容器
Docker早期是基于LXC(Linux Containers,LXC)4容器的,但是其具有很多LXC这类容器所没有的新特性。
· 跨平台的可移植性。Docker定义了一种统一标准的打包格式,将应用及其依赖打包进单个镜像中,该镜像可以在任何Docker可运行的机器间便携传输,并且在不同机器上,Docker隔离了应用与平台的直接联系,对配置进行了抽象,使得在任何平台上应用的运行环境都一样。LXC的配置却不是可移植的,它依赖于某台具体的机器。
· 面向应用。Docker是为优化应用部署而诞生的,LXC则是面向机器的,这是两者设计哲学上的不同。Docker面向应用的哲学体现在API、用户接口以及文档等各个方面,Docker都是为了更简单地做事。而LXC则是更关注于使用更少地CPU、更少地RAM,成为一个更轻量地机器。
· 版本控制。Docker地版本控制和git工具非常类似,Docker可以跟踪一个容器地版本信息,查看版本差异,提交和回滚版本等。所有地版本信息都将被记录,这样可以清晰地看到一个应用服务器地更改历史。
· 组建复用。Docker容器以组件式搭建,可以利用一个基础镜像构建更多的应用容器。
· 共享性。Docker用于一个公共的注册服务器。开发者上传它们的镜像,我们可以通过这些共享的镜像来进一步定制自己的镜像。Docker的注册服务器本身也是一个开源项目,所以任何人都可以下载源码后在自己的网络中部署自己的注册服务器。
· 工具生态系统。Docker提供了API以供自动化创建和部署容器,而越来越多的工具加入到Docker之中来扩展它的能力,Docker已经形成了自己的软件工具生态圈。
Docker的组件
Docker采用的是C/S架构,Docker客户端,即Docker可执行程序,可以通过命令行和API的形式与Docker守护程序进行通信,Docker守护程序提供Docker服务。
Docker的特性
Docker是利用容器技术实现的一种轻量级的虚拟技术。
· 隔离性:Docker采用libcontainer作为默认容器,取代了之前的LXC。libcontainer的隔离性主要是内核的命名空间来实现的,具体有pid、net、mnt和uts等命名空间,它们将容器的线程、网络、消息、文件系统和主机名进行隔离。
· 可度量性:在Docker中,主要通过cgroups(控制组)来控制资源的度量和分配。
· 移植性:Docker利用AUFS来实现对容器的快速更新。AUFS是一种支持将不同目录挂载到同一虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。另外,AFUS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改内容将形成新的文件层,而不会影响原有的层。采用AUFS作为Docker容器的文件系统,具有如下好处
· 节省存储空间:多个容器可以共享一个基础镜像存储
· 快速部署
· 升级方便
· 增量修改
· 安全性
有关docker其他更详细的概述请结合docker官网学习
二、使用docker
1 安装docker
我这里以Centos 为例:
要在CentOS上开始使用Docker Engine,请确保您 满足先决条件,然后 安装Docker
前提条件
操作系统要求
要安装Docker Engine,您需要一个CentOS 7的维护版本。不支持或未测试存档版本。
该centos-extras库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要 重新启用它
overlay2建议使用存储驱动程序。
第一步:Yum安装gcc相关环境
yum -y install gcc
yum -y install gcc-c++
第二步:卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第三步:安装yum-utils软件包
yum install -y yum-utils
第四步:设置镜像仓库。
#默认的
yum-config-manager \
--add-repo \
#正确使用的国内的
yum-config-manager \
--add-repo \
第五步:更新yum软件包索引
yum makecache fast
第六步:安装DOCKER引擎
安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本:
yum install docker-ce docker-ce-cli containerd.io
第七步:启动Docker
systemctl start docker
第八步:检查docker是否安装成功。
docker version
docker run hello-world
docker images
此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
Docker Engine已安装并正在运行。您需要使用sudo来运行Docker命令。继续进行Linux后安装,以允许非特权用户运行Docker命令以及其他可选配置步骤。
2 卸载Docker
卸载Docker Engine,CLI和Containerd软件包:
yum remove docker-ce docker-ce-cli containerd.io
主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
rm -rf /var/lib/docker
您必须手动删除所有已编辑的配置文件。
三、docker安装 MySQL
首先你对应的服务器要有docker引擎以及相关配置
首先下载自己需要的MySQL版本镜像
第一步:docker pull mysql:5.7
第二步:启动MySQL
以上启动命令解释
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-e:环境配置
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
以上数据卷挂载 先没有做容器内部文件与Linux文件的挂载映射
以上的MySQL容器已经创建成功
第三步:测试连接
以上已经进入容器内部
第四步:Navicat测试连接
初次安装可能因为权限不足不让远程访问:必须进容器内容设置并刷新权限:
mysql授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
刷新权限:
flush privileges;
三、docker-compose部署项目
首先服务以上要有安装docker-compose以及相关配置:
首先手写一个springboot项目(集成Redis 计数器)
打开IDEA ->File->new->project
第一步:项目准备
下一步
下一步
下一步:
配置:application.properties 文件
编写controller
编写Dockerfile
编写docker-compose.yml
对于以上的文件如何编写docker-compose官网有详细说明
项目打包:
 
打包成功:
第二步:将打包好的项目放到自己的服务器
我这里用的xftp:
1 首先找一个空的文件夹
2 把打包好的项目、dockerfile 、docker-compose.yml 放到新建的目录下
3 去服务器上检查是否把文件上传成功
第三步:启动项目
首先在服务器上要到所放文件的目录下
输入:docker-compose up 或者后台运行:docker-compose up -d
第四步:访问测试
希望我以上的docker学习的小小分享,希望能对大家有所帮助,有不到之处请大家批评指正!

docker学习汇总的更多相关文章

  1. 【微服务轻量化容器技术相关】同事分享的Docker学习汇总

    还没时间去练习: Docker commands: docker images (list all image on this host) docker ps -a ( list all contai ...

  2. docker 知识点汇总

    目录 什么是 Docker Docker 简介 Docker 的特点 如何使用 Docker 镜像的常用操作 容器的常用操作 Docker 命令汇总 手工制作 java 镜像 使用 Dockerfil ...

  3. Docker学习(十一)Docker系列结束-新的开始K8S

    Docker学习(十一)Docker系列结束-新的开始K8S 标签(空格分隔): docke k8s Docker系列结束 上一篇讲到使用docker官方提供的容器编排工具docker-compose ...

  4. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  5. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  6. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  7. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  8. docker学习资料整理(持续更新中..)

    docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...

  9. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

随机推荐

  1. 原生JS实现下拉列表

    1 <div class="list"> 2 <ul> 3 <li> 4 <a href="#">Web部< ...

  2. 串口wifi

    串口wifi 串口WiFi ZLAN7146是一款wifi转串口的wifi串口服务器.该串口服务器可以方便地使得串口设备连接到WIFI无线网络,实现串口设备的无线化网络升级.RS232接口支持全双工. ...

  3. pytest文档44-allure.dynamic动态生成用例标题

    前言 pytest 结合 allure 描述用例的时候我们一般使用 @allure.title 和 @allure.description 描述测试用例的标题和详情. 在用例里面也可以动态更新标题和详 ...

  4. Linux ALSA音频库(二) 环境测试+音频合成+语音切换 项目代码分享

    1. 环境测试 alsa_test.c #include <alsa/asoundlib.h> #include <stdio.h> // 官方测试代码, 运行后只要有一堆信息 ...

  5. docker系统化学习图文+视频教程

    1.背景 博客对应的视频课程: 9.9元在线学习:https://study.163.com/course/courseMain.htm?share=2&shareId=40000000033 ...

  6. centos下安装mongodb 通过shell脚本

      #! /bin/bash yum -y update echo -e "开始安装mongodb\n" download_url=https://fastdl.mongodb.o ...

  7. HEAP CORRUPTION DETECTED:after Normal block错误方法解决

    一:问题描述: 出现的问题如下: 二:问题产生的原因说明 该问题发生于操作堆内存的时候.产生该问题的原因是:你实际使用的内存大小超出了你实际申请的内存大小,在释放内存的时候就会发生该问题. 举个例子: ...

  8. nginx给consul集群配置负载均衡

    upstream consul { server 127.0.0.1:8501; server 127.0.0.1:8502; server 127.0.0.1:8503; } server { li ...

  9. Tensorflow--Debug

    1.解决tensorflow报错ValueError: Variable conv1/weights already exists, disallowed. 解决方法1:重开一个控制台 解决方法2:在 ...

  10. 平时查询linux服务器与应用版本

    ###JDK版本###java -version ##Tomcat环境版本###进入到tomcat目录的bin下./version.sh ###服务器###(1)osuname -a 查看releas ...