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篇的更多相关文章

  1. 云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍

    云原生 • Kubernetes 认识 k8s.k8s 架构.核心概念点介绍 一.Kubernetes 简介Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌.谷歌早在十几年之 ...

  2. 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    @ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...

  3. Longhorn 企业级云原生容器存储解决方案-部署篇

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 安装 Longhorn 可以通过多种方式安装 ...

  4. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

  5. Longhorn,企业级云原生容器分布式存储 - K8S 资源配置示例

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...

  6. Docker: Jenkins与Docker的自动化CI/CD流水线实战

    什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...

  7. 云原生之旅 - 2)Docker 容器化你的应用

    前言 上文中我们用Golang写了一个HTTP server,本篇文章我们讲述如何容器化这个应用,为后续部署到kubernetes 做准备. 关键词:Docker, Containerization, ...

  8. docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)

    前言 背景 最近在帮学校导师写项目,团队有4个人,项目前后端分离.如果是选择瀑布式开发:(在约定好接口的情况下)A.B同学写前端,C.D同学写后端,然后约定一个时间统一联调,最后将项目交付安装到客户机 ...

  9. Longhorn,企业级云原生容器分布式存储 - 高可用

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...

  10. Longhorn 云原生容器分布式存储 - Air Gap 安装

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...

随机推荐

  1. vs2022的一些调试技巧——远程调试&线程检查&性能检查

    visual studio一直都是.net/c#开发人员最受欢迎的编译器,除了强大的代码提示和项目模板,还拥有大量的调试工具,这一期我们介绍下code freeze阶段的一些调试技巧.包括测试环境/生 ...

  2. 在DevExpress的GridView的列中,使用RepositoryItemSearchLookUpEdit控件实现产品列表信息的展示和选择

    有时候,我们为了方便,我们往往使用扩展函数的代码方式创建很多GridView的操作功能,如在随笔<在DevExpress中使用BandedGridView表格实现多行表头的处理>中介绍过多 ...

  3. Swift4 入门到精通(第二章基本数据类型与量值)

    第二章 量值和基本数据类型 Swift 支持的基本数据类型, 整型,浮点型,布尔型,元组,可选类型. 学习的目标: 常量与变量的意义.声明.命名规范.类型 数据进制与计算机存储原理 整型数据.浮点型数 ...

  4. JUC同步锁原理源码解析五----Phaser

    JUC同步锁原理源码解析五----Phaser Phaser Phaser的来源 A reusable synchronization barrier, similar in functionalit ...

  5. vCenter报错:Vmware vAPI Endpoint

    vCenter报错:Vmware vAPI Endpoint 问题现象: 平台警报1:设备管理运行状况警报 平台警报2:Vmware vAPI Endpoint服务运行状况警报 vcenter版本:v ...

  6. Blazor前后端框架Known功能介绍:系统安装激活及自定义

    本章介绍系统安装与激活及其自定义功能. 概述 框架内置简单的系统安装功能. 录入企业编码.名称.系统名称.产品密钥.管理员密码信息完成安装. 可自定义高级安装功能,如安装数据库等您产品所需的安装信息. ...

  7. CH32V003使用ADC八通道转换注意事项

    本文以CH32V003_F4P6(20Pin)为模板 1.PA1.PA2为外部晶振输入引脚,同时也是ADC的CH1与CH0,所以需要先在system_ch32v00x.c文件中更改为内部48M的宏即可 ...

  8. 基于python+django的宠物商店-宠物管理系统设计与实现

    该系统是基于python+django开发的宠物商店-宠物管理系统.是给师妹开发的课程作业.现将源码开放给大家.大家学习过程中,如遇问题可以在github咨询作者. 演示地址 前台地址: http:/ ...

  9. 【转载】Linux虚拟化KVM-Qemu分析(七)之timer虚拟化

    原文信息 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...

  10. 利用python的PyPDF2和PyMuPDF库玩转PDF的提取、合并、旋转、缩放、加密

    一.安装PyPDF2和PyMuPDF库 pip install PyPDF2 pip install pymupdf # fitz是pymupdf的子模块 二.工具类代码 from PyPDF2 im ...