Day01-环境准备与镜像案例

Day01-环境准备与镜像案例

  • 1. 容器架构
    • 1.1 Iaas Paas Saas (了解)
    • 1.2 什么是容器
    • 1.3 容器vs虚拟机
    • 1.4 Docker极速上手指南
      • 1)配置docker源(用于安装docker)
      • 2)docker下载镜像加速的配置
      • 3)自动补全
    • 1.5 Docker C/S架构
    • 1.6 Docker的镜像管理
      • 1)案例01:下载nginx:alpine镜像并查看
      • 2)案例02:sl大法
      • 3)案例03:删除镜像
      • 4)案例04:镜像清理用的命令
      • 5)案例05:给镜像设置标签
      • 6)案例06:查看镜像详细信息
      • 7)案例07:自定义镜像
      • 8)小结
  • 今日总结

1. 容器架构

1.1 Iaas Paas Saas (了解)

  • Iaas:基础设施即服务 Infrastructure-as-a-Service

  • Paas:平台即服务 Platform-as-a-Service

  • Saas:软件即服务 Software-as-a-Service

  • Caas:容器即服务 介于IAAS和PAAS

  • IAAS,PAAS,SAAS这些服务,用于帮助人们更快实现目标(搭建环境,使用产品)

  • 从左到右,人们需要管理与维护的地方越来越少,人们可以把重点关注在使用/应用上

  • IAAS平台:基础设施,阿里云,云厂商

  • PAAS平台:服务/运行环境是ok,公有云,负载均衡SLB

  • SAAS平台:服务已经准备好,您直接用,具体产品,processon,wps,亿图

  • 严格模式

  • 小结:

  • 了解Iaas,Paas,Saas含义

1.2 什么是容器

  • 容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止
  • 容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理,相当于一个mini的系统

1.3 容器vs虚拟机

虚拟机 容器
优点 1、使用简单
2、也有成熟管理工具,vmware esxi,KVM,Openstack
3、可以随意定制
4、启动虚拟机要经历完整的Linux启动流程
1、快速部署(扩容,弹性伸缩)
2、大部分环境都有现成镜像
3、让我们不再关注系统基础设施,把关注点放在配置,升级,优化
4、不依赖硬件
5、启动容器秒级
6、相当于一个进程
缺点 1、需要硬件支持虚拟化技术(VT-X)
2、资源利用率不高
3、同一台虚拟跑多个服务,可能有冲突
4、占用资源较多
5、不满足目前升级,快速扩容,快速部署,回滚不方便
1、使用较为复杂
2、共享linux系统内核,推荐使用较新linux内核

1.4 Docker极速上手指南

Linux内核: 3.10以上. 如果旧的内核需要升级内核才能使用

  • 安装docker环境,docker-ce(开源) docker-ee(企业版)

  • 从1.13开始改成年-月版本命名方式.

  • 使用20.10版本

docker环境 ip 配置
docker01.oldboylinux.cn 10.0.0.81/172.16.1.81 2c4G(至少1c2G)
docker02.oldboylinux.cn 10.0.0.82/172.16.1.82 2c4G(至少1c2G)

1)配置docker源(用于安装docker)

#1.安装相关依赖.
yum install -y yum-utils device-mapper-persistent-data lvm2
#2.下载官方的docker yum源文件
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#3.替换yum源地址
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
#4.安装docker-ce
yum install -y docker-ce
systemctl enable --now docker
#5.检查
docker version
  • docker下载镜像加速

    阿里云,腾讯云有加速用的地址

  • 阿里云为例,说明如何获取加速用的地址

2)docker下载镜像加速的配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://o0ot3ltv.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3)自动补全

yum install -y bash-completion bash-completion-extras

1.5 Docker C/S架构

  • cs client/server 客户端/服务端
  • Docker服务端:docker daemon 叫dockerd
  • Docker客户端:docker命令(下载镜像,运行容器…)
docker相关词汇 说明
镜像 存放各种的环境或服务
容器 进程,运行起来的镜像
仓库(存放镜像) 远程仓库,本地仓库

  • docker pull nginx 下载nginx镜像到本地仓库

    • 如果本地仓库有则提示镜像已经下载
    • 如果本地出仓库没有,则docker服务端访问远程仓库,下载镜像
  • docker run -d -p 80:80 nginx 启动容器

    • -d容器后台运行
    • -p端口映射
    • nginx镜像名字
docker run -d -p 80:80 nginx
docker run -d -p 80:80 --name "oldboy_first_docker_nginx" nginx:alpine
# docker客户端找dockerd服务端,问是否有nginx镜像
# 如果有,则启动这个镜像,后台运行,访问容器端口是80端口.
# 如果没有,则从远程仓库下载镜像,启动这个镜像,后台运行,访问容器端口是80端口.

#1. 提示你本地没有nginx镜像 nginx:latest最新版
Unable to find image 'nginx:latest' locally
#2. 找远程仓库下载
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
#3. 运行镜像,成为docker容器.
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
9020c66ace48effa904063f84c664535b8cc3aa2b95535df438c9f2f4952cc35
#4.查看镜像
docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx       latest   605c77e624dd   4 months ago   141MB
#5.查看容器
docker ps
#6. 访问10.0.0.81:80 --->容器的80端口
# 或者hosts文件做解析,使用域名访问

注意事项: 此处使用到了docker -p端口映射公共,需要使用iptables的nat功能,需要开启系统的内核转发功能

[root@docker01.oldboylinux.cn ~]# tail -1 /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@docker01.oldboylinux.cn ~]# sysctl -p
net.ipv4.ip_forward = 1

1.6 Docker的镜像管理

镜像管理核心指令:

docker命令 指定功能 详细功能
docker image ls
docker images  ===  docker image ls

docker search 搜索镜像, 优先选官方,stars数量多
docker pull   拉取镜像(下载镜像),注意版本
docker push   推送镜像(上传镜像)
docker load   导入镜像
   例子: docker load  -i docker_nginx.tar.gz
docker save   导出镜像
   例子:docker save centos:7 -o 
docker_centos7.tar.gz
docker images   查看镜像列表
docker rmi     删除镜像
docker tag     给镜像打标签

1)案例01:下载nginx:alpine镜像并查看

#1.
docker pull #下载镜像
docker pull nginx:1.22-alpine 
#2.
docker image ls #简写为docker images查看镜像
#查找镜像:
docker search 
访问hub.docker.com
  • 镜像命名:
#指定版本
只写服务名字一般下载服务的最新版本.
nginx 下载ngx最新版本 nginx:latest
下载ngx最新稳定的版本  nginx:stable 
下载指定的版本         nginx:1.20.2 
#指定系统
nginx镜像默认的系统是Debian系统
docker pull nginx:1.20.2-alpine 使用alpine系统更加节约空间
docker镜像使用的系统
ubuntu 都可以做镜像的系统
debian 都可以做镜像的系统. bullseye ,bluster
centos 都可以做镜像的系统 最大
alpine 镜像非常小(命令,依赖精简) linux内核+busybox
  • 待讲解docker push 一般用于上传镜像hub.docker.com,未来主要用于自建docker镜像仓库

2)案例02:sl大法

  • 保存docker镜像(save),其他节点上导入(load)

  • 未来也可以搭建镜像仓库

docker image save   #docker save 
docker image load   #docker load 

#1.1g个节点保存docker 镜像 -o输出到指定的文件.
docker save nginx:alpine -o nginx_alpine.tar

#2. 导入load 
docker load -i nginx_alpine.tar
  • 批量导出镜像
docker images |awk 'NR>1{print "docker save",$1":"$2,"-o",$1"_"$2".tar"}'
最后通过|bash运行

可以书写批量导出docker镜像脚本

3)案例03:删除镜像

  • 条件:镜像不能在使用中(没有基于这个镜像的容器)
docker image rm  ===  docker rmi
删除镜像

4)案例04:镜像清理用的命令

  • 用于清理一些临时镜像,未来我们自定义镜像的时候会有
docker image prune
docker images -a #可以查看系统中所有镜像,包含隐藏镜像

5)案例05:给镜像设置标签

  • 给镜像设置一个新的名字
  • 应用场景:
    • 自定义镜像
    • 搭建与使用内部镜像仓库.registry
[root@docker01.oldboylinux.cn ~]# docker images 
REPOSITORY   TAG           IMAGE ID       CREATED         SIZE
nginx        1.22-alpine   652309d09131   2 weeks ago     23.5MB
nginx        alpine        cc44224bfe20   14 months ago   23.5MB
nginx        latest        605c77e624dd   14 months ago   141MB
centos       latest        5d0da3dc9764   17 months ago   231MB

[root@docker01.oldboylinux.cn ~]# docker tag nginx:1.22-alpine nginx:1.22-alpine-oldboy 
[root@docker01.oldboylinux.cn ~]# docker images 
REPOSITORY   TAG                  IMAGE ID       CREATED        SIZE
nginx        1.22-alpine          652309d09131   2weeks ago     23.5MB
nginx        1.22-alpine-oldboy   652309d09131   2weeks ago     23.5MB
nginx        alpine               cc44224bfe20   14months ago   23.5MB
nginx        latest               605c77e624dd   14months ago   141MB
centos       latest               5d0da3dc9764   17months ago   231MB

6)案例06:查看镜像详细信息

  • 做镜像巡检的时候使用
docker 家目录     /var/lib/docker/ 

#查看 nginx:alpine镜像的信息,输出的是json格式. 
docker image inspect nginx:alpine

7)案例07:自定义镜像

未来讲解dockerfile再说

docker image build == docker build 

8)小结

  • docker pull/ docker images #docker push 未来再说
  • docker save/load
  • docker rmi/image prune
  • docker tag
  • docker image inspect
  • docker build #未来自定义镜像

今日总结

  • 容器vs虚拟机
  • docker rpm在手,天下我有
  • docker cs架构
  • docker 镜像管理与案例

版权声明:本文为博主作者:我心中有一片海原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/dws123654/article/details/137822838

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐