• Docker从初学到进阶二(使用Docker命令,自定义镜像,部署微服务集群,配置自己的镜像仓库)


    一:使用Docker命令

    1.镜像命令

    在这里插入图片描述

    在这里插入图片描述
    命令解析:docker --help 通过该命令可以查询到所有的docker操作命令,

    在这里插入图片描述
    通过docker 命令 --help可以查看某个命令的详细信息
    在这里插入图片描述

    案例:从DockerHub中拉取一个nginx镜像并查看

    • 步骤一:访问dockerHub的官方网址:https://hub.docker.com/

    • 步骤二:搜索nginx,根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
      如果pull后面不增加版本号,默认拉去最新的版本
      在这里插入图片描述

    • 步骤三:通过命令:docker images查看已安装的镜像
      -

    利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

    • 步骤一:利用docker xx --help命令查看docker save和docker load的语法
      -

    • 步骤二:使用docker save导出镜像到磁盘
      -

    • 步骤三:,先使用docker rmi删除nginx使用docker load加载镜像
      - 、

    -

    2.Docker镜像命令联系

    在这里插入图片描述

    2.容器命令

    容器相关命令

    • docker exec 进入容器执行命令
    • docker logs 查看容器运行日志
    • docker ps 查看所有运行的容器及状态
    • docker rm 删除指定容器

    在这里插入图片描述
    创建运行一个Nginx容器

    • 步骤一:去docker hub查看Nginx的容器运行命令
    docker run --name containerName -p 80:80 -d nginx
    
    • 1

    在这里插入图片描述

    使用该命令生成用于标识容器的唯一id

    在这里插入图片描述

    • 步骤二:使用docker ps查看容器状态,在游览器上访问服务器ip+80,出现下面界面代表成功。
      在这里插入图片描述
      在这里插入图片描述
      警告:如果游览器访问失败,请注意:我的是阿里云服务器+CenOS8
      方法一:查看防火墙是否关闭
      systemctl使用

    systemctl unmask firewalld #执行命令,即可实现取消服务的锁定

    systemctl mask firewalld # 下次需要锁定该服务时执行

    systemctl start firewalld.service #启动防火墙

    systemctl stop firewalld.service #停止防火墙

    systemctl reloadt firewalld.service #重载配置

    systemctl restart firewalld.service #重启服务

    systemctl status firewalld.service #显示服务的状态

    systemctl enable firewalld.service #在开机时启用服务

    systemctl disable firewalld.service #在开机时禁用服务

    systemctl is-enabled firewalld.service #查看服务是否开机启动

    systemctl list-unit-files|grep enabled #查看已启动的服务列表

    systemctl --failed #查看启动失败的服务列表
    方法二:配置服务器的安全组
    进入阿里云,选择云服务器ECS
    在这里插入图片描述
    在这里插入图片描述

    • 步骤三:游览器访问成功后,通过docker logs nginx查看日志
      -
    docker exec -it mn bash
    cd /usr/share/nginx/html
    sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
    sed -i 's###g' index.html
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

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

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

    在这里插入图片描述

    3.容器卷命令在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
    数据卷操作:

    • docker volume create
    • docker volume ls
    • docker volume inspect
    • docker volume rm
    • docker volume prune
      在这里插入图片描述
      在这里插入图片描述

    4.容器卷命令案例(创建一个MySQL容器)

    • 步骤一:拉取mysql镜像:docker pull mysql:8.0
    • 步骤二:创建目录/tmp/mysql/data,/tmp/mysql/conf,将我提供的hmy.cng文件上传到/tmp/mysql/conf
    • 步骤三:去DockerHub查阅资料,创建并运行MySQL容器,要求:
      在这里插入图片描述

    在这里插入图片描述

    
    docker run \
           --name mysql \
           -p 3306:3306 \
           -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf  \
           -v /tmp/mysql/data:/var/lib/mysql  \
           -e MYSQL_ROOT_PASSWORD=12345 \
           -d mysql:8.0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    二:使用Docker自定义镜像

    1.镜像结构

    在这里插入图片描述

    在这里插入图片描述

    2.自定义镜像

    在这里插入图片描述
    更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
    在这里插入图片描述

    自定义镜像文件包:
    链接:https://pan.baidu.com/s/128FRCwlL5NZnZ08zqLIEhQ?pwd=t8xs
    提取码:t8xs
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    将以上文件下载下来,放置到temp/cloud-demo文件夹内
    运行该命令创建镜像:docker build -t javaweb:1.0 .
    在这里插入图片描述
    查看并基于镜像运行容器
    在这里插入图片描述
    访问项目测试 : 通过ip+端口+接口路径访问项目
    在这里插入图片描述
    简便版本:
    将Dockefile文件内容改成:

    # 指定基础镜像
    FROM java:8-alpine
    
    # 拷贝jdk和java项目的包
    COPY ./docker-demo.jar /tmp/app.jar
    
    # 暴露端口
    EXPOSE 8090
    # 入口,java项目的启动命令
    ENTRYPOINT java -jar /tmp/app.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    使用该命令启动:docker build -t javaweb:2.0 .
    在使用该命令运行容器:docker run --name web -p 8090:8090 -d javaweb:2.0
    在这里插入图片描述
    在这里插入图片描述

    3.DockerCompose

    作用:帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。

    在这里插入图片描述
    安装请看这里:
    链接:https://pan.baidu.com/s/14llDeYp8LqmttuMv9NKdyg?pwd=7ef3
    提取码:7ef3

    三:部署微服务集群

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    nacos启动过于慢,建议先部署nacos,或者启动其他服务

    docker-compose restart userservice gateway orderservice
    
    • 1

    四:配置自己的镜像仓库

    1.简化版镜像仓库

    Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
    搭建方式比较简单,命令如下:

    sh docker run -d \ --restart=always \ --name registry	\ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
    
    • 1

    命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
    访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

    2.带有图形化界面版本:

    由于我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

    vi /etc/docker/daemon.json
    
    • 1

    添加内容:

    "insecure-registries":["http://192.168.150.101:8080"]
    
    • 1

    在这里插入图片描述
    重加载:systemctl daemon-reload
    重启docker:systemctl restart docker

    在tmp目录下新建registry-ui目录,新建一个docker-compose.yml文件夹,修改该文件

    version: '3.0'
    services:
      registry:
        image: registry
        volumes:
          - ./registry-data:/var/lib/registry
      ui:
        image: joxit/docker-registry-ui:static
        ports:
          - 8080:80
        environment:
          - REGISTRY_TITLE=传智教育私有仓库
          - REGISTRY_URL=http://registry:5000
        depends_on:
          - registry
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    使用以下命令启动:docker-compose up -d
    访问:http://47.92.165.116/8080

    上传镜像
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    文字雨特效
    OpenTCS客户端开发之Web客户端(一)
    java编程基础总结——24.Map接口及其实现子类
    千万级大型API网关设计
    【算法题】2530.执行 K 次操作后的最大分数
    OSINT技术情报精选·2024年5月第1周
    ATV32变频器在堆垛机应用
    javaee ssm框架项目整合thymeleaf2.0 更多thymeleaf标签用法 项目结构图
    所有子数组的(最小值 x 累加和)中的最大值
    第七章节 Qt的UI界面设计详解
  • 原文地址:https://blog.csdn.net/qq_51269815/article/details/126798767