当前位置: 首页 > article >正文

springcloud篇3-docker需熟练掌握的知识点

docker的原理请参考博文《Docker与Kubernetes》。

一、安装docker的指令

1.1 安装yum工具

yum install -y yum-utils \
            device-mapper-persistent-data \
            lvm2 --skip-broken

在这里插入图片描述

补充:配置镜像源

注意:
yum安装是在线联网下载安装,而很多的资源在国外,会去国外的网站安装,速度会很慢,此时需要配置镜像源。
命令如下:

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun\/docker-ce/g'

yum makecache fast

1.2 安装docker

yum install -y docker-ce

说明:
-y 表示“遇到问题都选y”
在这里插入图片描述

1.3 启动docker

注意:
启动docker前,一定要关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

启动docker服务:

# 启动docker服务
systemctl start docker
# 查看状态
systemctl status docker

在这里插入图片描述
关于docker的一些其他指令:

systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v #查看docker版本

1.4 配置docker镜像

以使用华为云的docker镜像加速器为例。
登录华为云账号(公司买的IAM用户,使用的是公司购买的华为云服务器)找到docker镜像服务。
在这里插入图片描述
先创建一个镜像配置文件:
在这里插入图片描述
在这里插入图片描述

# 使docker重新读取镜像库配置文件
 systemctl daemon-reload
# 重启docker服务
systemctl restart docker

说明:
每次修改daemon.json文件都要执行上面两个命令。

二、docker的基本操作

2.1 镜像的命令规范

镜像名称一般分为两部分:[repository]:[tag]
tag指镜像版本,若是没有该项则默认为最新版本的(lastest)。
在这里插入图片描述

2.2 docker的镜像操作

在这里插入图片描述
docker build构建镜像
docker pull 从镜像服务器拉取镜像
docker push 推送镜像到镜像服务器
docker img 查看镜像
docker rmi 删除镜像
docker save 保存镜像为一个压缩包
docker load 加载压缩包为镜像

例如:
在这里插入图片描述

三、容器相关命令

**docker run 创建容器(运行状态)
docker rm 删除容器(删除容器及硬盘上的文件)
docker pause 暂停容器(保留容器的内存及硬盘上的文件)
docker unpause 唤醒容器
docker stop 停止容器(删除容器的内存,保留硬盘上的文件)
docker start 启动容器
docker exec 进入容器执行命令
docker ps 查看所有运行的容器及状态
docker logs 查看容器运行日志
**
在这里插入图片描述

3.1 容器基本命令(创建、删除)

在这里插入图片描述
说明:
在这里插入图片描述
容器是与外界隔离的,任何人都无法访问。为了能使外部请求能够访问到容器, 需要暴露容器的端口(与宿主机端口关联)。
例如上图,nginx容器的端口为80,把容器端口与宿主机端口关联。当访问http://宿主机ip:80时,会把请求转发到nginx容器。
例如:
在这里插入图片描述
在这里插入图片描述
访问容器:
在这里插入图片描述
在这里插入图片描述
跟踪日志输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 进入容器执行命令

在这里插入图片描述
创建一个容器后进行容器控制台:
在这里插入图片描述
在这里插入图片描述

3.2.1 案例1-修改nginx容器首页内容

从上图中可以看出,容器有自己的文件系统。
下面进行一个小案例来体验一下(修改nginx欢迎页内容):
找到index.html文件,
在这里插入图片描述
修改文件:

sed -i 's#Welcome to nginx#hello docker#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

在这里插入图片描述
注意:都不要重启docker服务。
查看效果:
在这里插入图片描述
在这里插入图片描述

3.2.2 案例2-使用redis容器

docker run --name redis-docker -p 6379:6379 -d redis redis-server --appendonly yes

说明:
“–appendonly yes”执行可持支aof持久化。
在这里插入图片描述
创建docker后可以用redis desktop Mamager连接:
在这里插入图片描述
在这里插入图片描述
进入容器的控制台进行操作:
在这里插入图片描述
也可以直接进入redis的客户端:
在这里插入图片描述
查看效果:
在这里插入图片描述

四、数据卷命令

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。且不同的容器可以共享同一个数据卷(适用于集群)。
在这里插入图片描述
在这里插入图片描述
实例-创建一个数据卷并查看它在宿主机上的位置:
在这里插入图片描述

4.1 案例1-使用数据卷修改nginx首页内容

docker run --name nm -p 80:80 -v html:/usr/share/nginx//html -d nginx

说明:
-v 是使用数据卷(注意:如果-v 指定的数据卷html不存在会自动新建)

在这里插入图片描述
编辑index.html文件:
在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

4.2 案例2-创建一个MySQL容器,将宿主机目录直接挂载到容器

在这里插入图片描述

五、Dockerfile自定义镜像

5.1 镜像结构

以MySQL镜像为例。

在这里插入图片描述

5.2 Dockerfile

Dockerfile是一个文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
第一行必须是FROM,从一个基础镜像来构建。
在这里插入图片描述
说明:
(1)EXPOSE指令后的端口后用于docker run的-p参数后的端口值。

5.3 案例-基于Ubuntu构建一个运行java项目的新镜像

创建前的资源如下:
在这里插入图片描述
Dockerfile的内容如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷到jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar

执行创建镜像指令:

docker build -t javaweb:1.0 .

说明:
上述指令最后的"."表示Dockerfile所在目录。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述

补充:简化Dockerfile

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷到jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 前面的命令在安装基础镜像和JDK,每次都写很重复

COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar

如上,安装前几层(基础镜像和jdk)的步骤可以单独打包。
事实上,有一个名为java:8-alpine的镜像,基于它,可以将一个Java项目构建为镜像。
Dockerfile简化如下:

# 指定基础镜像
FROM java:8-alpine

COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar

六、DockerCompose

Docker Compose可以基于Compose文件帮我们快速地部署分布式应用,而无需手动一个个创建和运行容器。
Compose文件是个文本文件,通过指令(其实是把docker run和docker-build指令转换了一下)定义集群中的每个容器如何运行。
Compose文件示例如下:
在这里插入图片描述

6.1 DockerCompose安装

(后续补充)

6.2 部署微服务集群

(后续补充)

七、Docker镜像仓库(搭建企业私有镜像)

(后续补充)


http://www.kler.cn/a/467004.html

相关文章:

  • REVERSE-COMPETITION-CCSSSC-2025
  • 22408操作系统期末速成/复习(考研0基础上手)
  • 密码学精简版
  • 面试题解,JVM中的“类加载”剖析
  • uni-app深度解码:跨平台APP开发的核心引擎与创新实践
  • java实验4 反射机制
  • leetcode hot 100 分割等和子集
  • 自动化立体仓库堆垛机SRM控制系统主系统控制功能块开发
  • 传统测量VS三维扫描
  • SquareLine Studio教程 图形化 LVGL 移植实际硬件 RP2040
  • cmd指令查看关闭端口进程
  • T-SQL语言的正则表达式
  • idea java.lang.OutOfMemoryError: GC overhead limit exceeded
  • 《learn_the_architecture_-_aarch64_exception_model》学习笔记
  • SAP MM物料管理模块常见BAPI函数清单
  • React之从0开始(3)
  • pcl源码分析之计算ISS描述子(一)
  • 力扣--70.爬楼梯
  • 故事可视化AI
  • Python学习(5):数据结构
  • 基于单片机的光控窗帘设计
  • DetToolChain: A New Prompting Paradigm to Unleash Detection Ability of MLLM论文解读
  • ⾃定义类型:联合和枚举
  • oscp备考 oscp系列——Kioptix Level 1靶场 古老的 Apache Vuln
  • NLP CH8 属性级情感分析复习
  • Python:交互式物质三态知识讲解小工具