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

文章目录

docker环境准备

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

docker version

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

powershell 复制代码
镜像(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

docker 镜像相关命令

powershell 复制代码
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 .

docker 容器相关命令

powershell 复制代码
# 有了镜像才可以创建容器
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 # 进入容器正在执行的终端,不会启动新的进程

容器和主机之间信息传递

powershell 复制代码
从容器内拷贝文件到主机上
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 卷的技术,可以实现自动同步

内网中将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

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

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

这里去内网docker仓库页面就可以可看到创建的镜像了

可以在k8s集群管理平台拉取镜像创建容器

相关推荐
盐真卿10 小时前
python2
java·前端·javascript
一嘴一个橘子11 小时前
mybatis - 动态语句、批量注册mapper、分页插件
java
组合缺一11 小时前
Json Dom 怎么玩转?
java·json·dom·snack4
危险、11 小时前
一套提升 Spring Boot 项目的高并发、高可用能力的 Cursor 专用提示词
java·spring boot·提示词
kaico201811 小时前
JDK11新特性
java
钊兵11 小时前
java实现GeoJSON地理信息对经纬度点的匹配
java·开发语言
jiayong2312 小时前
Tomcat性能优化面试题
java·性能优化·tomcat
秋刀鱼程序编程12 小时前
Java基础入门(五)----面向对象(上)
java·开发语言
纪莫12 小时前
技术面:MySQL篇(InnoDB的锁机制)
java·数据库·java面试⑧股
Remember_99312 小时前
【LeetCode精选算法】滑动窗口专题二
java·开发语言·数据结构·算法·leetcode