前言·

【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili

【狂神说Java】Docker进阶篇超详细版教程通俗易懂_哔哩哔哩_bilibili

Overview of the get started guide | Docker Docs || Docker文档

前言 · Docker – 从入门到实践 (docker-practice.github.io)||网络开源文档/书籍

其实网上关于docker的博客讲解或文档挺多的

其实对于Linux命令的熟悉要求还是很高的

跳过章节·

29、CMD和ENTRYPOINT的区别08

16 作业三:部署ES+Kibana16:04

30、实战:Dockerfile制作tomcat镜像26:19

Docker概述·

出现原因:

之前产品从开发到上线,两套环境和配置 开发和运维(程序在我的电脑上可以运行)

jar+(环境:Redis、Mysql、jdk、ES)

跨平台

一键打包环境镜像

What is Docker? The spark for the container revolution | InfoWorld docker 集装箱_什么是Docker? 集装箱革命的火花-CSDN博客

dotcloud–>Docker 相比虚拟机vm,小巧

Docker Hub

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

什么是 Docker · Docker – 从入门到实践 (docker-practice.github.io)

Docker的好处,不再赘述:为什么要用 Docker · Docker – 从入门到实践 (docker-practice.github.io)

Docker 包括三个基本概念

  • 镜像Image):是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
  • 容器Container):容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
  • 仓库Repository):镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务Docker Registry 就是这样的服务。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

按照文档和博客安装Docker(服务器CentOS7):Install Docker Desktop on Linux | Docker Docs 注意配置阿里云镜像

简单的使用及常见命令·

docker run:本机寻找镜像–>docker hub下载

关于底层原理:客户端到docker守护进程 不太懂 8、Run的流程和Docker原理_哔哩哔哩_bilibili

理论还没有实践,实践后再来看就懂了

Docker的抽象层相比虚拟机更少,docker利用的是宿主机的内核,而vm则是 Guest OS

1
2
docker --help #很多简单的和linux思路类似
docker info #显示docker系统信息,镜像容器

镜像的基本命令:·

边学边敲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker images#显示镜像
docker search mysql#搜索镜像 || 也可以在docker hub上搜
# <也没搞懂filter的用法,现用现查> https://blog.csdn.net/lw001x/article/details/107152016 || https://docs.docker.com/config/filter/
# 比如我们想搜索官方提供的 mysql 镜像,命令如下:
docker search --filter=is-offical=true mysql
# 我们想搜索 Stars 数超过 100 的 mysql 镜像:
docker search --filter=stars=100 mysql

#拉取镜像
docker pull mysql
docker pull mysql:5.7
#分层下载 联合文件系统

#删除镜像
docker rmi -f 容器id #删除指定的容器
docker rmi -f $(docker images -aq)#删除所有容器,还以为-f也是filter,结果是force强制
Error response from daemon: conflict: unable to delete xxx (cannot be forced) - image is being used by running container #无法删除,因为正在被容器使用

容器相关命令·

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker run -it centos /bin/bash#例子 想知道和nt关系
exit #从容器中退出主机,并停止
Ctrl + P + Q#从容器中退出主机,不停止
docker ps#查看运行中容器 -a 查看运行过的容器 -n=1最近一个
docker run [可选参数] image
参数:
--name='Name' 容器名字,区分容器 tomcat1
-d 后台方式运行
-it 交互方式运行,进入容器查看内容
-p 指定容器端口 8080:8080
-p ip:主机端口:容器端口
-P 随机指定端口

docker rm 容器id # -f 强制删除
docker rm $(docker ps -aq) #删除所有容器

docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止容器

常用的其他命令·

*单杠是缩写的,双杠需要写具体的

Portainer可视化面板

容器数据卷使用·

容器数据的持久化和同步操作,容器间数据共享

直接用命令挂载 -v : docker run -it -v 主机目录:容器内目录

docker inspect 容器id 查看详细信息 mounts 挂载

具名挂载和匿名挂载·

匿名:只指定容器内路径

具名: 卷名:容器内路径

指定路径: /宿主机内路径:容器内路径

Dockerfile·

你1倍速看一遍就懂了 你非两倍速看两遍

数据卷容器:实现多个容器之间的数据共享 --volumes-from继承 软连接

容器之间配置信息传递,数据卷生命周期持续到最后一个容器被删除,如果持久化到本地,本地数据不删除

Dockerfile用来构建docker镜像文件

步骤:

  1. 编写Dockerfile文件
  2. docker build 构建成一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像

看完容易,敲完难,这些视频我看了好久

构建自己的centos:

很多都是从基础镜像开始:FROM scratch

docker centos没有vim命令,进入的是根目录 手把手教你用 Docker 构建自己的 CentOS 基础镜像_docker centos基础镜像-CSDN博客

没搞懂:workdir就是直接进入docker的目录吗,还是说WORKDIR 指定工作目录 · Docker – 从入门到实践 (docker-practice.github.io)

发布镜像·

看了自己dockerhub账号,好像一年前了解过,不知道是要做什么项目

login–>docker push,加上版本号

发布到阿里云容器服务上,跳过

看着docker小结的图片,想到了之前的

截至33、Docker所有流程小结_哔哩哔哩_bilibili 暂时齐全

感觉能看懂下面这张图,搜索能部署好项目,就算是docker OK!

Docker基础详细讲解,看这一篇就够了!_docker讲解_Indra_ran的博客-CSDN博客

接下来就关于运维、集群

Docker网络·

理解docker0·

先清空容器、镜像

ip addr查看网卡lo 本机回环地址;eth0服务器内网地址;docker0,docker生成的网卡

容器互联—— --link 不ping ip,直接pinh服务名(host映射)

几句话的事讲的太细

自定义网络

Gateway网关

好处:不同集群使用不同的网络,保证集群是安全健康的

网络模式:

none:不配置

host:和宿主机共享网络

container:容器内网络连通

网络连通:docker network --help ||connect(确实,–help挺方便的)容器和那个网络连通,但是不会在容器间传递

Redis集群部署实战

分片+高可用+负载均衡

完结撒花,对学习充满了兴趣~~~

其他资料·

Docker 10分钟快速入门_哔哩哔哩_bilibili||也没看懂,适用于学会了的人

分类: Docker系列 | 我不是咕咕鸽 (laoda.de)

image-20231206235455256

PandoraNext项目私有化部署教程 - 路飞博客 (woniu336.github.io)

pandora-next/deploy: Pandora Cloud + Pandora Server + Shared Chat + BackendAPI Proxy + Chat2API = PandoraNext. New GPTs(Gizmo) UI, All in one! (github.com)