• k8s系列-kuboard创建工作负载 docker上传java微服务jar包到仓库的过程


    docker环境准备

    1.查看环境中是否存在docker环境

    docker version

    2.不存在的话需要创建docker

    镜像(image):
    docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像>run>容器(提供服务
    器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
    
    容器(container):
    Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.
    启动,停止,删除,基本命令
    目前就可以把这个容器理解为就是一个简易的 Linux系统。
    
    仓库(repository):
    仓库就是存放镜像的地方!
    仓库分为公有仓库和私有仓库。(很类似git)
    Docker Hub是国外的。
    阿里云…都有容器服务器 (配置镜像加速!)
    
    安装docker 
    1.环境准备
    linux要求内核3.0以上
    centos7
    2.环境查看
    #系统内核要求3.0以上
    [root@localhost ~]# uname -r
    3.10.0-1062.el7.x86_64
    #系统版本
    [root@localhost ~]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    
    2.安装
    #1.卸载旧版本
    yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine
    #2.需要的安装包
    yum install -y yum-utils
    #3.设置镜像的仓库
    #推荐使用国内的
    yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    #更新软件包索引
    yum makecache fast
    #4.安装docker docker-ce 社区版 而ee是企业版
    yum install docker-ce docker-ce-cli containerd.io # 这里我们使用社区版即可
    #5.启动docker
    systemctl start docker
    #6.使用docker version 查看是否安装成功
    docker version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    docker 镜像相关命令

    docker version # 显示docker的版本信息
    docker info # 显示docker的系统信息,包括镜像和容器的数量
    docker 命令 --help # 帮助命令
    
    # 镜像命令
    docker images  查看镜像信息
    REPOSITORY 镜像的仓库源
    TAG 镜像标签
    IMAGE ID 镜像id
    CREATED 镜像的创建时间
    SIZE 镜像的大小
    #可选项
    Options:
    -a, --all # 列出所有镜像
    -q, --quiet # 只显示镜像id
    
    docker search 搜索镜像
    eg:docker search mysql
    docker pull 镜像名[:tag]
    eg: docker pull mysql:5.7
    
    删除镜像
    [root@localhost /]# docker rmi -f 镜像id #删除指定镜像
    [root@localhost /]# docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
    [root@localhost /]# docker rmi -f $(docker images -aq) #删除全部镜像
    
    将本目录下所有文件打包成镜像
    docker build -t app-cli:1.1 .
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    docker 容器相关命令

    # 有了镜像才可以创建容器
    1.新建镜像并启动容器
    docker run -d app-cli:1.1
    # 参数说明
    --name="Name" 容器名字 tomcat01 tomcat02 ,用来区分容器
    -d 后台方式运行
    -it 使用交互方式运行,进入容器查看内容
    -p 指定容器的端口 -p 8080:80
    -p ip:主机(即宿主机)端口:容器端口
    -p 主机端口:容器端口 #这种方式常用
    -p 容器端口
    容器端口P
    -P 随机指定端口(大写P)
    
    列出所有容器
    docker ps    列出正在运行的容器
    docker ps -a 列出历史上所有容器
    exit # 直接退出容器
    Ctrl + p + q # 容器不停止退出
    删除容器
    docker rm 容器id # 删除指定容器,不能删除正在运行的容器,如果要强制删rm -f
    docker rm -f $(docker ps -aq) # 删除所有容器
    docker ps -a -q|xargs docker rm # 删除所有容器
    启动和停止容器的操作
    docker start 容器id # 启动容器
    docker restart 容器id # 重启容器
    docker stop 容器id # 停止当前正在运行的容器
    docker kill 容器id # 强制停止当前正在运行的容器
    显示日志
    docker logs -f -t --tail 数字 容器id
    # 显示日志
    -tf # 显示日志
    --tail # 要显示的日志条数
    [root@localhost /]# docker logs -tf --tail 10 ce989f90023d
    
    # 查看容器中进程的信息
    # 命令 docker top 容器id
    [root@localhost /]# docker top ce989f90023d
    
    进入当前正在运行的容器
    # 方式一
    docker exec -it 容器id bashShell
    # 方式二
    docker attach 容器id
    # 测试
    [root@localhost /]# docker attach ce989f90023d
    # docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
    # docker attach # 进入容器正在执行的终端,不会启动新的进程
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    容器和主机之间信息传递

    从容器内拷贝文件到主机上
    docker cp 容器id:容器内目标文件路径 目的主机路径
    # 查看当前主机目录
    [root@localhost home]# ls
    ztx
    # 进入docker容器内部
    [root@localhost home]# docker attach ce989f90023d
    [root@ce989f90023d /]# cd /home/
    [root@ce989f90023d home]# ls
    # 在容器内新建一个文件
    [root@ce989f90023d home]# touch test.java
    [root@ce989f90023d home]# exit
    exit
    [root@localhost home]# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS
    PORTS NAMES
    ce989f90023d centos "/bin/bash" 44 minutes ago Exited (0) 46 seconds
    ago nifty_johnson
    # 将docker内文件拷贝到主机上
    [root@localhost home]# docker cp ce989f90023d:/home/test.java /home
    [root@localhost home]# ls
    test.java ztx
    [root@localhost home]#
    # 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现自动同步
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    内网中将jar包上传到docker仓库中

    1.环境说明

    1.开发人员将java微服务打包成在linux中可运行的jar包,将其传送给运维人员
    2.外网和内网可以传送文件
    3.内网需要有linux服务器,并且配置了docker环境和命名空间
    这里过程是基于k8s的集群kuoard控制器,上传docker的过程,环境都是配置完毕的

    2.创建dockerfile
    先在命名空间中创建一个项目目录,用于接收项目的多个微服务
    这里选择/app 命名空间

    mkdir /app/B2C-cph

    将指定部署包上传到指定目录下

    mkdir /app/B2C-cph/app
    mkdir /app/B2C-cph/nginx
    mkdir /app/B2C-cph/mysql
    mkdir /app/B2C-cph/redis

    不同服务上传到不同的目录下

    每个服务下编写不同的dockerfile
    这里选择一个java微服务做个dockrfile

    1.从仓库中拉取jdk1.8环境
    from 仓库地址/项目名/镜像:latest
    2.添加微服务jar包
    ADD app.jar app.jar
    3.环境设置
    ENV LANG=en_US.utf8
    4.启动命令
    ENTRYPOINT ["java","-jar","app.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    app目录下只有app.jar和dockerfile文件

    1.将app目录打包成镜像
    # docker build -t app-cli:1.0 . 
    2.打标签
    # docker tag app-cli:1.0 仓库地址/项目名/app-cli:1.0
    3.上传到仓库
    # docker push 仓库地址/项目名/app-cli:1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里去内网docker仓库页面就可以可看到创建的镜像了
    可以在k8s集群管理平台拉取镜像创建容器

  • 相关阅读:
    【SpringBoot高级篇】SpringBoot: 事件的发布和监听
    服装商城网站 毕业设计-附源码241505
    OPSF —— LSA-7 和 特殊区域(STUB区域&完全STUB区域 + NSSA区域&完全NSSA区域)
    【JavaWeb开发-Servlet】day02-使用eclipse实现Servlet开发
    pGlu-GRF-NH2, 107535-01-3
    kotlin图片合成和压缩
    域名抢注和域名注册
    RocketMQ第一话 -- Docker安装以及Springboot集成RocketMQ
    基于springboot实现学生综合成绩测评系统项目【项目源码】计算机毕业设计
    linux上安装qt creator
  • 原文地址:https://blog.csdn.net/qq_48975137/article/details/134344439