参考

https://www.runoob.com/docker/docker-resources.html
https://docs.docker.com/engine/
https://www.cnblogs.com/jackzz/p/10024043.html
https://www.bilibili.com/video/bv1kv411q7Qc/?spm_id_from=333.788.b_636f6d6d656e74.11

基础概念


图片具体可查看百度云链接:
链接:https://pan.baidu.com/s/14Cu94HRJdNGcmv2tiSRLag
提取码:atb3
复制这段内容后打开百度网盘手机App,操作更方便哦

docker是一个用于开发、发布和运行应用程序的开发平台,可将应用程序与基础架构分开,从而快速交付软件。
借助docker,可以与管理应用程序相同的方式管理基础架构,可利用docker方法来快速交付、测试和部署代码,可大大减少编码和在生产环境中运行代码的延迟。
docker提供松散隔离环境(容器)中打包和运行应用程序的功能,其隔离性和安全性使得可以在给定主机上同时运行多个容器(容器是轻量级的,直接在主机内核中运行即可)
docker通过内核虚拟化技术提供容器的资源隔离与安全保障等功能。由于docker是通过操作系统层的虚拟化实现隔离,所以docker容器在运行的时候,不需要类似虚拟机额外的操作系统开销,提升资源利用率。
docker提供工具和平台管理容器的生命周期:

  • 使用容器开发应用程序及其支持组件
  • 容器成为分发和测试应用程序的单元
  • 准备就绪后可将应用程序作为容器或协调服务器部署到生产环境中。无论生产环境是本地数据中心、云提供商还是二者混合,工作原理同,都是在其中安装docker后部署多个容器,然后在容器上运行打包的应用程序

docker中的容器完全使用沙箱机制,相互之前不会有任何借口,性能开发很低。
docker从17.03版本之后分为CE(Community Edition社区版)和EE(Enterprise Edition企业版),日常使用CE即可

Docker Hub:用于分享、管理Docker容器的Docker SaaS平台
docker使用C/S架构,c与docker守护进程通信,守护进程处理复杂繁重的任务,例如建立、运行、发布docker容器。docker的c(客户端)和守护进程间通过socket/RESTful API通信。

应用场景

  • Web应用的自动化打包和发布(打包成镜像+镜像获取)
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他后台应用
  • 从头编译或扩展现有的OpenShift或Clout Foundry平台搭建自己的PaaS环境

优点

docker是一个用于开发、交付和运行应用程序的开放平台,可以将应用程序与基础架构分开,从而快速交付软件。
借助docker可以与管理应用程序相同的方式管理基础架构,利用docker快速交付、测试和部署代码,可大大减少编写代码和在生产环境中运行代码之间的延迟。

  • 快速一致交付应用程序

    • 允许使用容器在标准化环境中工作,从而简化开发的生命周期
  • 响应式部署和扩展
    • docker是基于容器的平台,允许高度可移植的工作负载
  • 在同一硬件上运行更多的工作负载
    • docker适合于高密度环境以及中小型部署,可以用更少的资源做更多的事情

docker Vs. VM

类别 docker KVM/OpenStack
部署难度 非常简单 组件多,部署复杂
启动速度 秒级 分钟级
镜像体积 MB级别 GB级别
管理效率 简单 组件相互依赖,管理复杂
隔离性 彻底隔离
管理效率 单进程 完整的系统管理
网络连接 较弱 可借助Neutron灵活组件各类网路架构

基本组件

docker包括三个基本概念:镜像image、容器container、仓库repository


镜像 image

image相当于一个root文件系统,容器运行的只读模板,每个镜像有一系列的层layers组成。
Docker 使用 UnionFS 来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新 的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。

容器 container

image和container的关系类似类和实例(class和new xxx()),镜像是静态的定义,容器是镜像运行的实体。
docker容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的容器可以被创建、启动、停止、删除、暂定等。docker容器是docker的运行部分。

每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为 容器存储层。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。
所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

仓库 repository

仓库课可以看成是一个代码控制中心,用来保存镜像,可以理解为代码控制中的代码仓库。
Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。

安装部署

1.查看系统版本内核 3.0以上最好
uname -r

2.删除旧版本docker
yum remove docker

3.安装需要的安装包
yum install -y yum-utils

4.镜像仓库设置为国内的
yum-config-manager
–add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

报错:

查看python

修改/usr/bin/yum-config-manager和/usr/bin/yum文件,修改首行python版本为2.6

重新设置镜像仓库,成功

5.更新yum软件包索引
yum makecache fast

6.安装docker相关的docker -ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io

出错的话:

如果下载不下来,手动下载:
拉取rpm包
wget
http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/Packages/docker-engine-17.03.0.ce-1.el7.centos.x86_64.rpm

安装rpm包
yum install docker-engine-17.03.0.ce-1.el7.centos.x86_64.rpm

验证docker版本确认安装成功
docker --version

6.启动docker
systemctl start docker

7.使用docker version查看是否安装成功
docker version

8.测试一下
docker run hello-world

9.查看一下下载的镜像
docker images

10.卸载依赖

yum remove docker-ce docker-ce-cli container.io

11.删除资源
rm -rf /var/lib/docker

/var/lib/docker为Docker的默认工作路径

docker使用

注意docker命令都是只能在主机上运行,不能在容器内部运行,即进入容器之后就是一个新的独立环境,使用其各自的命令即可。(例如进入一个centos容器中,使用linux正常命令即可)

docker允许在容器中使用docker run命令运行应用程序

也可以直接运行docker的hello-world镜像,系统会先在宿主机上找镜像是否存在,如果没有的话会先从镜像仓库Docker Hub中拉取hello-world镜像然后构造成容器。

-t:在心容器中制定一个伪终端/终端
-i:允许对容器内的标准输入(STDIN)进行交互

进入容器后可使用cat /proc/version查看当前系统的版本信息

可通过exit退出当前容器

确认当前有容器在运行中,使用docker ps

输出参数介绍:
CONTAINER ID:容器ID
IMAGE:使用的镜像
COMMAND:启动容器时运行的命令
CREATED:容器的创建时间
STATUS:容器状态

  • created: 已创建
  • restarting: 重启中
  • running: 运行中
  • removing: 迁移中
  • paused: 暂停
  • exited: 停止
  • dead: 死亡
    PORTS:容器的端口信息和使用的连接类型(tcp/udp)
    NAMES:自动分配的容器名称
容器使用

宿主机内使用docker logs xxxx容器查看容器内的标准输出

使用docker stop xxx容器 停止容器
exit是在某个容器中输入exit退出容器进入到上一层,docker stop是在宿主机上运行

使用docker start xx容器CONTAINER ID/NAMES启动容器

使用docker查看docker客户端的所有命令选项

使用docker command --help具体查看某条command的使用方法

运行并进入容器:docker run -it -P 容器ID /bin/bash
-P:将容器内部使用的网络端口随机映射到使用的主机上

后台运行容器不直接进入容器:docker run -itd 容器名 /bin/bash 后续进入通过docker exec -it 容器ID /bin/bash

导出容器快照:docker export 容器ID > 文件名
导入容器快照:cat 文件名 | docker import - 镜像名

删除容器:docker rm -f 容器ID

查看容器详情:docker info

镜像使用

当运行容器时,使用的镜像本地不存在就会自动从默认的Docker Hub镜像仓库中下载。镜像仓库可以进行自定义配置
yum-config-manager
–add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看系统镜像:docker images

REPOSITORY: 镜像的仓库源
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG定义不同镜像

查找镜像:docker search 镜像名

NAME: 镜像仓库源的名称
DESCRIPTION: 镜像描述
OFFICIAL: 是否为docker官方发布
stars:点赞
AUTOMATED:自动构建

拉取镜像:docker pull 镜像名

使用镜像:docker run 镜像名

删除镜像:docker rmi 镜像名

创建镜像:当从docker仓库中拉取的镜像不再满足需求的时候,可以通过两种方式对镜像进行更改:

  1. 从已创建的容器中更新这个镜像并提交
    1.1 使用镜像创建容器
    1.2 在容器中使用apt-get udpate更新或其他更新操作
    1.3 exit退出此容器,使用docker commit -m="提交的描述信息" -a="镜像作者" 容器ID 目标镜像名提交容器副本
    1.4 使用docker images查看新镜像

    1.5 使用新镜像启动一个容器(注意tag勿忘

  2. 使用Dockerfile指领创建一个新的镜像
    使用docker build创建新的镜像

创建Dockerfile文件用一组指令构建镜像

容器连接

容器中如果运行网络应用的话,可使用-p参数指定端口映射,使得外部也可访问这些应用
-P:容器内部端口随机映射到主机的高端口
-p:容器内部端口绑定到指定的主机端口

docker port 容器名命令:查看端口的绑定情况

多个容器互连推荐使用docker-compose
参考:
https://www.cnblogs.com/jackzz/p/10024043.html

仓库管理

登录docker hub:docker login
退出:docker logout
推送镜像到自己的仓库中:docker push 镜像名

docker compose

compose:用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
compose使用的三个步骤:

  • 使用Dockerfile定义应用程序的环境
  • 使用docker-compose.yml定义构成应用程序的服务,这样他梦珂在隔离环境中一起运行
  • 执行docker-compose up命令启动并运行整个应用程序

centos on docker

1.拉取指定版本的 CentOS 镜像
docker pull centos:centos7

2.查看本地镜像
docker images

3.运行容器,并且可以通过 exec 命令进入 CentOS 容器
docker run -itd --name centos-test centos:centos7
docker exec -it centos-test /bin/bash

4.通过 docker ps命令查看容器的运行信息

hbase on docker

单机版

参考:
https://blog.csdn.net/boling_cavalry/article/details/78041775

集群版

参考:
https://blog.csdn.net/boling_cavalry/article/details/78041811

docker-compose下载:

  1. wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64

  2. rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64

  3. chmod +x /usr/local/bin/docker-compose

  4. 再通过docker-compose version命令进行查看

如果有权限问题:进行赋权 chmod a+wrx xxx文件

如果zookeeper集群中有节点启动失败显示
ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/…/conf/zoo.cfg Error

检查创建数据目录是否正确,zoo.cfg配置文件里dataDir指定的那个目录下(本参考中配置的是zkdata/myid)

mysql on docker

redis on docker

mongodb on docker

MongoDB默认使用27017端口

前提:虚拟机上安装好Docker

1.搜索mongodb镜像

docker search mongo

2.拉取mongodb镜像

docker pull mongo:lastest
或
docker pull mongo

可以看到镜像是一个层状结构,拉取下载的时候是从底而上依次下载

3.查看已下载的本地镜像

docker images

4.运行容器

# -p 表示指定分配端口号
# -P 表示随机分配端口号
# --name mongo表示运行的容器名
# -i:交互式操作
# -d:后台运行
# -t:终端
docker run -itd --name mongo -p 27017:27017 mongo

5.查看已运行容器的详细信息

docker ps

docker ps -a:查看历史运行容器信息

docker ps -l:查看最近一次运行容器信息

docker ps:查看当前运行容器信息

6.进入容器并设置mongodb容器的用户名和密码

# 命令最后的admin是用户名 密码是123456
docker exec -it mongo mongo admin


7.连接数据库

结果返回1表示连接成功

8.查看数据库的用户

db.system.users.find()

9.插入数据并查询数据

demo是一个集合

Docker学习小总结相关推荐

  1. Docker学习四:Docker 网络

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  2. docker学习笔记(四)使用docker搭建环境

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(二)docker常用命令 docker学习笔记(三)镜像 docker学习笔记 ...

  3. docker学习笔记(二)docker常用命令

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(三)镜像 docker学习笔记(四)使用docker搭建环境 docker学习 ...

  4. docker学习笔记(三)镜像

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(二)docker常用命令 docker学习笔记(四)使用docker搭建环境 ...

  5. docker学习笔记(五)如何创建自己的阿里云镜像仓库(这是2021版的阿里云教程)

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(二)docker常用命令 docker学习笔记(三)镜像 docker学习笔记 ...

  6. Docker学习(2)-Docker基础1

    Docker学习(1)-Docker简介 1.2 Docker安装及基础命令介绍 https://www.docker.com/#Docker官网 Docker 运行系统 OS 版本选择: Docke ...

  7. 狂神docker学习笔记

    狂神docker(基础+进阶)-学习笔记 狂神说docker 三体:弱小和无知不是生存的障碍,傲慢才是. 从基础到进阶,每个视频都有认真看,做笔记和练习,以此篇分享整个学习过程 画图网页 docker ...

  8. 狂神 Docker学习笔记 从基础到进阶 一步到位

    Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...

  9. docker 学习记录1

    一. 1. Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

最新文章

  1. [转]在cocos2d-x中让一个项目适配iphone、iphone retina、ipad、ipad retina四种分辨率
  2. Asp.net MVC 学习之路-002
  3. xps文档打印后winform界面文字丢失
  4. LogStash 中字段的排除和数据的排除
  5. postgresql 安装_CentOS7安装使用PostgreSQL数据库
  6. Windows Containers 大冒险: 加速
  7. 针对开发人员的Microsoft SQL Server元数据
  8. luogu_P3345[zjoi2015]幻想乡战略游戏
  9. JavaEE Tutorials (25) - 使用Java EE拦截器
  10. PHPstrom的Disable Power Save Mode
  11. Notification通知
  12. python发起http请求(httplib)
  13. Master PDF Editor for Mac(PDF文档编辑软件)
  14. Shell中的Quoting
  15. python 穷举法 算24点(史上最简短代码)
  16. cad2023三维立体图形图纸工程设计绘图软件Autodesk AutoCAD 2023 中文
  17. PTES标准中的渗透测试阶段
  18. 微信内置浏览器不能下载应用文件的解决方案-微信跳转手机默认浏览器
  19. 大数据实训整体解决方案
  20. matlab做拉普拉斯反演,拉普拉斯变换性质和反演.ppt

热门文章

  1. 【TaaS】什么是测试即服务?
  2. 智能手环产品分析(资料来源网上,自己总结)
  3. 【c++】2.处理数据
  4. 再读Golang中的异常处理
  5. 宝宝专业智力测试软件,0-3岁6个月婴幼儿智能综合格塞尔Gesell智力测试工具包及软件...
  6. 智慧城市井盖监测系统中的RTU应用
  7. [django]django+post+ajax+highcharts使用方法
  8. 如何加速AI落地?第四范式提供“开箱即用”集成系统
  9. 在线五子棋对战测试用例
  10. Filenet基金会关于场外交易FN风险提示公告