云原生(docker jenkins k8s)docker篇
docker
(1)架构

● Docker_Host:
○ 安装Docker的主机
● Docker Daemon:
○ 运行在Docker主机上的Docker后台进程
● Client:
○ 操作Docker主机的客户端(命令行、UI等)
● Registry:
○ 镜像仓库
○ Docker Hub
● Images:
○ 镜像,带环境打包好的程序,可以直接启动运行
● Containers:
○ 容器,由镜像启动起来正在运行中的程序
(2)安装
- 移除以前docker相关包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 配置yml源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
#安装最新版本的
sudo yum install -y docker-ce docker-ce-cli containerd.io
#安装指定版本的
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
- 启动
systemctl enable docker --now
- 配置加速
在阿里云服务找到-容器镜像服务

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://nnyse9wk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.常用命令和说明
(1)下载、删除镜像
#下载最新版本
docker pull nginx
#下载指定版本
docker pull nginx:1.20.1
#查看下载的所有镜像
docker images
#删除镜像
docker rmi 镜像名:版本号/镜像id
docker rmi nginx:1.20.1
#或者
docker rmi c8d03f6b8b91
(2)启动容器、删除容器
#简单运行
docker run nginx:1.20.1
#参数化运行
# --name 设置容器的别名
# -d后台启动
# --restart=always 开机自启
#-p 映射端口,将主机的9010和容器的80端口对应
docker run --name=mynginx -d --restart=always -p 9010:80 nginx:1.20.1
#查看正在运行中的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm 容器id/名字
docker rm -f mynginx #强制删除正在运行中的
#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字
4、进入容器
(1)进入容器,修改容器内容
# 进入容器内部的系统,修改容器内容
docker exec -it 容器id /bin/bash
#修改nginx页面
cd /usr/share/nginx/html
echo "this is nginx index" > index.html
#退出nginx
exit

(2)挂载数据到外部修改
#-v表示挂载 将/usr/share/nginx/html挂载到根目录的/dta/html并赋予读写权限,ro是只读权限
docker run --name=mynginx -d --restart=always -p 88:80 -v :/usr/share/nginx/html:rw nginx:1.20.1
此时修改data/html会映射到容器内
例子:将nginx的配置文件挂载到/data/conf下
首先在在/data/conf下将nginx.conf文件复制过来。因为使用-v只能建立文件夹
然后执行
docker run -d -p 80:80 -v /data/conf/nginx.conf:/etc/nginx/nginx.conf --name mynginx-02 nginx
5、修改提交,供远程使用
(1)将自己修改好的容器,使用commit保存在本地仓库,供以后回滚
docker commit -a "cgy" -m "首页变化" 8d44b98ca259 testnginx:v1.0

(2)将容器保存成tar包,提供下载,供其他机器使用
#将镜像文件打包成tar,然后下载通过u盘传输,或使用传输命令
docker save -o abc.tar testnginx:v1.0
#使用命令将tar包传输到114.115.128.34服务器,前面是用户名,后面是传到的地址,然后输入密码
scp abc.tar root@114.115.128.34:/root/
#在34服务器上加载镜像
docker load -i abc.tar
(3)将镜像推送到远程仓库,其他机器,通过pull拉取
#先打新tag 后面的以华为云为例,要推入仓库的仓库/组织/镜像名:新定义的tag
docker tag testnginx:v1.0 swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0
#推送先登录 用户名 密码 推送地址
docker login -u cn-north-4@xxxxx -p 03c4d9434d665de21b6f2c9ec593 swr.cn-north-4.myhuaweicloud.com
#推送
sudo docker push swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0
#如果其他的机器想使用先登录,然后pull
docker pull swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0
6、查看docker日志
#进行排错时
docker logs 容器名/id
#进入容器
docker exec -it 容器id /bin/bash
7、copy镜像里面的文件
#把容器指定位置的东西复制出来
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp /data/conf/nginx.conf 5eff66eec7e1:/etc/nginx/nginx.conf
docker 构建springboot项目
(1)安装redis
新建/data/redis/redis.conf文件,可以把redis的配置文件copy到改目录
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d --name myredis -p 9002:6379 redis:latest redis-server /etc/redis/redis.conf
说明:
-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
--name redis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/data/redis/redis.conf
(2)redis设置密码
重启redis
docker restart 容器id
(3)dockerfile构建应用镜像
1.构建镜像
在项目下创建Dockerfile文件
FROM openjdk:8-jdk-slim
LABEL maintainer=leifengyang
COPY target/*.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

上传target目录和jar包以及 Dockerfile。在Dockerfile所在目录下执行
#-t表示给运行容器赋值名字和版本 -f表示使用那个dockerfile文件 .表示在当前目录下工作
docker build -t java-demo:v1.0 -f Dockerfilr .
2.启动镜像
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0
k8s篇参考语雀笔记
云原生(docker jenkins k8s)docker篇的更多相关文章
- 云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍
云原生 • Kubernetes 认识 k8s.k8s 架构.核心概念点介绍 一.Kubernetes 简介Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌.谷歌早在十几年之 ...
- 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上
@ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...
- Longhorn 企业级云原生容器存储解决方案-部署篇
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 安装 Longhorn 可以通过多种方式安装 ...
- 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...
- Longhorn,企业级云原生容器分布式存储 - K8S 资源配置示例
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Docker: Jenkins与Docker的自动化CI/CD流水线实战
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...
- 云原生之旅 - 2)Docker 容器化你的应用
前言 上文中我们用Golang写了一个HTTP server,本篇文章我们讲述如何容器化这个应用,为后续部署到kubernetes 做准备. 关键词:Docker, Containerization, ...
- docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)
前言 背景 最近在帮学校导师写项目,团队有4个人,项目前后端分离.如果是选择瀑布式开发:(在约定好接口的情况下)A.B同学写前端,C.D同学写后端,然后约定一个时间统一联调,最后将项目交付安装到客户机 ...
- Longhorn,企业级云原生容器分布式存储 - 高可用
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn 云原生容器分布式存储 - Air Gap 安装
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...
随机推荐
- IIC通信协议
1.IIC 通信协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的, 由于它引脚少,硬件实现简单,可扩展性强,不需要 USART.CAN 等 ...
- 杭电多校第二场 DOS Card
杭电多校第二场 DOS Card 评价一下这道题:我写过最爽的线段树题. 这道题真的非常令人身心愉悦,非常厉害的一道线段树入门题.我写这个一次调试都没有,过了样例就交了就过了,一切都是行云流水. 这道 ...
- uniapp主题切换功能的方式终结篇(全平台兼容)
前面我已经给大家介绍了两种主题切换的方式,每种方式各有自己的优势与缺点,例如"scss变量+vuex"方式兼容好但不好维护与扩展,"scss变量+require" ...
- CSS3+Jquery实现带动画效果的下拉选择框
CSS3+JQuery实现带动画效果的下拉选择框. 元素结构为: 1 <div class="box"> 2 <p>this is the first li ...
- 2023-07-02:给定一个1~N的排列,每次将相邻两数相加,可以得到新的序列,长度是N-1 再对新的序列,每次将相邻两数相加,可以得到新的序列,长度是N-2 这样下去可以最终只剩一个数字 比如 :
2023-07-02:给定一个1~N的排列,每次将相邻两数相加,可以得到新的序列,长度是N-1 再对新的序列,每次将相邻两数相加,可以得到新的序列,长度是N-2 这样下去可以最终只剩一个数字 比如 : ...
- pyinstaller打包程序后提示No module named ‘xxxx‘
解决方法1 1.检查 先在venv环境中安装xxx 报错的这个包 以我的举例 查看settings>project interpreter (存在对应的包) 解决方法2 2.在xxx.spec ...
- 【Redis】模糊查询
Redis模糊查询 1.支持的通配符*.?.[] 2.通配符* a.单个 * 模式 # 查询所有的key keys * b.双 * 模式,匹配任意多个字符 # key中含有rich的key keys ...
- 解决php中通过exec调用python脚本报ModuleNotFoundError错误
背景 出于某些原因,我们有时会在PHP中通过exec来调用Python代码,有可能是某些功能只能用Python实现(或用Python实现比较方便),有可能是出于性能考虑(Python可以执行耗时任务) ...
- [Spring+SpringMVC+Mybatis]框架学习笔记(八):Mybatis概述
第8章 Mybatis概述 8.1 几个概念 ORM Object-Relationship Mapping 对象关系映射,它是一种思想,它的实质是将数据库中的数据用对象的形式表现出来. JPA Ja ...
- Centos7中Jar快速启动脚本
Centos7中Jar快速启动脚本 创建一个文本,将以下脚本内容复制到文本当中,重命名文本后缀为.sh 注意:根据自己的项目进行更改相关内容,对应注释已说明 #!/bin/sh APP_NAME=ma ...

