docker 和k8s 入门

docker 和k8s 入门

本文是云原生的学习记录,可以参考以下文档 k8s

https://www.yuque.com/leifengyang/oncloud

相关视频教程可参考如下

https://www.bilibili.com/video/BV13Q4y1C7hS?p=2&vd_source=0882f549dac54045384d4a921596e234

相对于公有云,私有云优势灵活性更强,可搭配自己的环境,控制力更强,隐私泄露风险更低

Docker 概念

不管什么程序语言的程序可以通过Docker 打成一个标准的包

可以去docker hub 下载打包好的Docker镜像

所有软件都可以通过docker run 运行起来

特点

基础镜像MB级别

创建简单docker build

隔离性强cpu 内存,访问设备隔离,网络,用户,用户组隔离

启动速度秒级

分享方便

架构

docker 和k8s 入门_第1张图片

docker安装

卸载系统以前的docker
yum remove docker*

  1. 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  1. 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io


#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

  1. 启动
systemctl enable docker --now
既要开机启动

在这里插入图片描述

通过以上命令查看是否启动成功

  1. 镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker镜像地址可通过以下链接查看 https://blog.csdn.net/yu542771572/article/details/116573666

docker镜像操作
docker 和k8s 入门_第2张图片
docker pull nginx 是下载最新版

docker pull nginx:1.20.1 下载指定版本

docker images 查看镜像

docker rmi nginx 删除最新版本镜像

docker rmi redis:6.2.4 删除指定镜像

docker rmi image_id 通过镜像id删除

docker 容器操作

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

【docker run  设置项   镜像名  】 镜像启动运行的命令(镜像里面默认有的,一般不会写)

# -d:后台运行
# --restart=always: 开机自启
docker run --name=mynginx   -d  --restart=always -p  8084:80   nginx




# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #强制删除正在运行中的

#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字

#应用开机自启 --restart=always
docker update 容器id/名字 --restart=always

进入容器修改内容

进入容器内部修改

# 进入容器内部的系统,修改容器内容
docker exec -it 容器id  /bin/bash
  1. 提交镜像,将保存一个镜像到本地
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a "leifengyang"  -m "首页变化" 341d81f7504f guignginx:v1.0



  1. 保存镜像为一个压缩包
# 将镜像保存成压缩包
docker save -o abc.tar guignginx:v1.0

# 别的机器加载这个镜像
docker load -i abc.tar


# 离线安装
  1. 推送到远程仓库
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

# 把旧镜像的名字,改成仓库要求的新版名字
docker tag guignginx:v1.0 leifengyang/guignginx:v1.0

# 登录到docker hub
docker login       


docker logout(推送完成镜像后退出)

# 推送
docker push leifengyang/guignginx:v1.0


# 别的机器下载
docker pull leifengyang/guignginx:v1.0
  1. 挂载数据到外部修改
docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
nginx

ro 是只读模式,只能在/data/html 进行修改

# 修改页面只需要去 主机的 /data/html
# 如果/data/html 为空,容器也为空,访问nginx会出现403, 需要建立index.html文件

补充

docker logs 容器名/id   排错

docker exec -it 容器id /bin/bash


# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx


#把容器指定位置的东西复制出来 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf

进阶实战

  1. 使用springboot 写个jar包

  2. 将应用打包成jar包

  3. DockerFile

FROM openjdk:8-jdk-slim
LABEL maintainer=leifengyang

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]
在当前目录下读取dockerfile 并执行镜像构建
docker build -t java-demo:v1.0 .
  1. 部署中间件
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

#redis使用自定义配置文件启动

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

# 我的redis 实例
docker run -v /opt/docker/etc/redis/redis1.conf:/etc/redis/redis.conf \
-v /opt/docker/data/redis1/data:/data \
-d --name myredis \
-p 6380:6379 \
redis:latest  redis-server /etc/redis/redis.conf

注意开放6380安全组
  1. 启动容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
  1. 分享镜像
 登录docker hub
docker login

#给旧镜像起名
docker tag java-demo:v1.0  leifengyang/java-demo:v1.0

# 推送到docker hub
docker push leifengyang/java-demo:v1.0

# 别的机器
docker pull leifengyang/java-demo:v1.0

# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

k8s学习

docker 和k8s 入门_第3张图片
k8s是一个容器编排管理系统

Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。 例如,Kubernetes 可以轻松管理系统的 Canary 部署。

k8s 一般运行于多个机器上

架构

Kubernetes Cluster = N MasterNode + N Worker Node:N主节点+N工作节点; N>=1

主节点可能有多个
docker 和k8s 入门_第4张图片
docker 和k8s 入门_第5张图片
docker 和k8s 入门_第6张图片

k8s 安装

docker 和k8s 入门_第7张图片

你可能感兴趣的:(docker,kubernetes,容器)