Docker学习小总结

参考

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

在这里插入图片描述

类别dockerKVM/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是一个集合

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值