• docker 复习


    1. docker 基础

    1.1 docker 安装

    1. 查看是否安装的镜像已经在系统中存在: docker images (存在2,不存在 3)

    2. 卸载旧版本 yum remove docker

    3. 首先安装 yum 工具
      yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken

      -yyum 的一个命令,表示在安装软件包的时候不需要用户确认。使用 -y 选线会自动回答 yes 来确认安装
      --skip-broken:这是yum命令的另一个选项。当使用–skip-broken选项时,yum会尝试安装尽可能多的软件包,而不会停止在遇到依赖问题或错误的软件包上。
      lvm2:这是要安装的第三个软件包的名称。lvm2是Logical Volume Manager的一个实现,用于管理磁盘卷和逻辑卷。

    4. 设置docker 镜像
      yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

      sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
      yum makecache

    5. 安装docker,安装docker时直接安装docker-compose (安装docker时直接安装docker-compose)

    6. systemctl stop firewalld ,启动docker,要关闭防火墙

    7. systemctl disable firewalld 禁止开机启动防火墙

    8. 查看防火墙状态 systemctl status firewalld

    9. 启动docker systemctl start docker

    10. 查看docker的状态:systemctl status docker

    11. 查看docker 的版本 docker -v
      还没结束哦!!看接下来的…

    配置镜像加速器

    1. tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF 复制内容,注意把其中的镜像加速地址改成你自己的
    2. sudo systemctl daemon-reload 重新加载
    3. sudo systemctl restart docker 重启docker
      在这里插入图片描述

    拉取镜像的仓库:

    https://hub.docker.com/

    docker 本身也是一个拂服务,输入的一切命令都是发给进程的。

    docker 部署Mysql 镜像

    按照下图运行即可:

    docker run
    –name mysql
    -e MYSQL_ROOT_PASSWORD=密码
    -p 3309:3306 – 端口映射
    -v /root/images/mysqlImage/tmp/mysql/conf/hmy.cnf://etc/mysql/conf.d/hmy.cnf
    -v /root/images/mysqlImage/tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25

    在这里插入图片描述
    在这里插入图片描述

    注:

    • 当我们利用docker 安装应用的时候,docker 会自动搜索并下载应用镜像,镜像不仅包含应用本身,还包含应用运行所需要的环境、配置 、函数库。docker 会在运行镜像时创建一个隔离环境,称为容器。
    • 运行镜像时创建一个隔离环境,因此可以开启多个服务。

    在这里插入图片描述

    docker 命令的详细解释

    在这里插入图片描述

    • -d 服务器在后台运行
    • --name 容器名:给容器起一个名字
    • -p 宿主机端口():容器内端口(进程不需要改动) 转到容器内部
    • -e key = value eviorment -e 配置环境变量 ,由镜像的制作者
    • mysql:版本号 镜像的名称,版本号

    docker 常见命令

    docker 最常见的命令就是操作镜像,容器的命令,详见官方文档: https://docs.docker.com

    https://docs.docker.com/engine/reference/run/ 直接到官方命令文档

    • docker pull 从镜像中拉取镜像
    • docker images 查看所有镜像
    • docker rmi 删除镜像
    • docker rm 删除容器
    • docker build 自己构建镜像
    • docker save 将自己构建的镜像通过 命令 保存到本地,形成一个压缩文件。
    • docker load 拿到压缩包,解压用
    • docker push 推送到镜像仓库中
    • docker exec 进入容器

    在这里插入图片描述

    **注意:

    • **docker stop 相当于停止的时容器内部的进程。容器还在 下次运行可以用 docker start 运行。
    • docker run 运行一个新的容器

    案例实现:

    1. 去docker hub 中搜索nginx 拉取nginx镜像 docker pull nginx
    2. 查看镜像 docker images
    3. 创建并运行容器 docker run -d --name nginxnana -p 80:80 nginx
    4. 查看运行的容器 docker ps
    5. 停掉容器 docker stop 容器名
    6. 查看容器日志docker logs -f nginxnana
    7. 进入容器内部 docker exec -it 容器名 bash
    8. 退出容器 exit
    9. 删除容器 docker rm 容器名 -f -f 强制删除
    10. 还有命令的别名,可以自己研究~~~

    docker 数据卷

    定义: 容器内目录与宿主机目录的之间的映射的桥梁。

    在这里插入图片描述

    案例: 创建一个nginx

    在这里插入图片描述

    • 创建有挂载数据卷的 nginx 容器
      在这里插入图片描述

    • 查看数据卷详细信息 docker volume inspect 数据卷名称
      在这里插入图片描述

    案例2
    在这里插入图片描述
    查看mysql 是是否有数据卷挂载

    • docker inspect 容器名
      Mouth 放的是挂载的信息在这里插入图片描述
      基于数组机目录实现Mysql 数据目录,配置文件,初始化脚本的挂载。
      在使用 docker run 的时候,使用-v 本地目录:容器内目录 可以完成本地目录的挂在

    docker 相关命令总结

    • docker images : 查看镜像
    • docker rmi :删除镜像
    • docker push: 推送镜像到镜像服务器
    • docker save :会将镜像保存为一个压缩包,可以用U盘拷贝,之后docker load 加载压缩包为镜像。
    • docker inspect 容器名 : 查看docker 容器

    2.自定义镜像

    镜像中的概念:

    1. 镜像是分层的
    2. 基础镜像不用每次下载
    3. 入口

    在这里插入图片描述

    在这里插入图片描述

    2.1 dockerfile

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    当我们编写好了dockerfile,可以用命令请去构建镜像: docker build -t myImage.1.0 .

    • -t 是给构建的镜像起名字,格式: repository:tag, 不指定tag,默认为latest
    • . 是指定dockerfile 所在的目录,如果就在当前目录则指定为 .

    2.2 try 构建一个Java镜像,并部署

    1. 将文件打为jar包,上传到linux中:
    2. 加载镜像docker load -i
    3. 构建镜像: docker build -t 镜像名字 dockerfile文件名
    4. 运行: docker run -d --name 名字 -p 端口映射 镜像名字
    5. docker ps 查看运行状态
    6. docker logs -f 容器名

    在这里插入图片描述

    访问: ip:端口号/路径

    2.3 总结:

    在这里插入图片描述

    3. docker 网络

    docker inspect 容器名称: 查看某个容器的配置
    配置中有 NetWork 网络的配置。

    分析: 在安装docker 的时候,docker 会在虚拟机中创建虚拟网卡,名字默认是docker0 .
    在这里插入图片描述

    如上图,每个容器虽然是独立的,但是因为通过 docker 建立了连接(是同一网络段的),因此可以相互访问。测试:通过进入容器,对其他容器 ping ip地址

    但是上面的通过ip ping 的是有风险的,如果一个容器关闭了,新的容器启动占用了上一个容器的ip地址,这时候就ping 不通了,因此这样不合适。因此出现了 自定义网络

    自定义网络

    加入自定义网络 直接 ping 容器名称就可以,即使 ip 改变也可以ping的通
    在这里插入图片描述

    • docker network ls
    • docker network create 名字
    • ip addr
    • docker network connect 网络名 网段名让容器加入网络
    • docker run -d -name 名字 -p 映射端口:端口 --network 网络名称 镜像名称启动容器的时候就是指定连接的网络

    注意: 部署项目的时候容器互联的问题就解决了。

    项目部署

    Mysql部署

    启动mysql
    docker run -d --name mysqlnana -p 3301:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 -v /root/arrange/mysql/data/:/var/lib/mysql -v /root/arrange/mysql/init/:/docker-entrypoint-initdb.d -v /root/arrange/mysql/conf/:/etc/mysql/conf.d --network nana mysql

    后端部署

    1. 项目打包为jar包
    2. 构建镜像 docker build -t 名字:tag dockerfile
    3. 运行容器 docker run -d --name 名字 -p 端口映射:端口 --netwok 网络名称 镜像名称
    4. 查看日志前面有讲过

    前端部署

    创建一个nginx 容器,提供的nginx.conf、html目录与容器挂载

    1. docker run -d --name nginx -p 18080:18080 -p 18081:18081 -v 宿主路径:/usr/share/nginx/html -v 宿主文件:/etc/nginx/nginx.conf --netwok 网络名称 nginx

    在这里插入图片描述

    dockerCompose–图片带过~~~


    在这里插入图片描述
    在这里插入图片描述

    完结!!!!!!

  • 相关阅读:
    mac 本地运行 http-proxy-middleware ,请求超时
    Spring boot 自动装配原理
    问题求解——嵌套列表
    极光笔记 | 推送服务数据中心选择:合规性与传输效率的双重考量
    回溯法:雀魂启动!
    项目踩坑—跨域问题
    rsync + inotify 同步数据
    笔记 | 排序算法实现(Python)
    springMvc22-eclipse创建Maven项目没有src/main/java并不能新建的问题
    SQL查询语句的使用
  • 原文地址:https://blog.csdn.net/m0_44954707/article/details/133862333