容器与K8s

一、容器

容器 vs 虚拟机

二、Docker容器使用

三个概念:

2.1 镜像

Docker镜像除了运行程序也打包了程序运行环境。

2.2 镜像仓库

存放镜像的仓库,需要login之后拉去响应的镜像。

2.3 容器

基于Docker镜像创建的linux容器,本质是宿主机上的一个进程,与其他资源隔离。

图2 Docker容器典型使用流程

  1. 首先开发者在开发环境机器上开发应用并制作镜像。 Docker执行命令,构建镜像并存储在机器上。

  2. 开发者发送上传镜像命令。 Docker收到命令后,将本地镜像上传到镜像仓库。

  3. 开发者向生产环境机器发送运行镜像命令。 生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,基于镜像运行容器。

三、使用示例

使用Docker将基于Nginx镜像打包一个容器镜像,基于容器镜像运行应用,推送到容器镜像仓库。

3.1 安装Docker

复制代码
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl restart docker

3.2 Docker打包镜像

复制代码
# 使用官方提供的Nginx镜像作为基础镜像
FROM nginx:alpine

# 执行一条命令修改Nginx镜像index.html的内容
RUN echo "hello world" > /usr/share/nginx/html/index.html

# 允许外界访问容器的80端口
EXPOSE 80

执行docker build命令打包镜像。

docker build -t hello .

其中**-t表示给镜像加一个标签,也就是给镜像取名,这里镜像名为hello。.**表示在当前目录下执行该打包命令。

执行docker images命令查看镜像,可以看到hello镜像已经创建成功。您还可以看到一个Nginx镜像,这个镜像是从镜像仓库下载下来的,作为hello镜像的基础镜像使用。

3.3 本地运行容器镜像

复制代码
# docker run -p 8080:80 hello

docker run命令启动一个容器,命令中**-p(端口映射)** 将本地机器的8080端口映射到容器的80端口,即本地机器的8080端口的流量会映射到容器的80端口,当您在本地机器访问http://127.0.0.1:8080时,就会访问到容器中,此时浏览器中返回的内容应该就是"hello world"。

3.4 把镜像推送到镜像仓库

登录需要先login到镜像仓库,然后给镜像换一个名字。

复制代码
# docker tag hello swr.cn-east-3.myhuaweicloud.com/container/hello:v1
  • swr.cn-east-3.myhuaweicloud.com是仓库地址,每个区域的地址不同。
  • container是组织名,组织一般在SWR中创建,如果没有创建则首次上传的时候会自动创建,组织名在单个区域内全局唯一,需要选择合适的组织名称。
  • v1则是hello镜像分配的版本号

********** 想给本地镜像打tag,可以不带仓库地址;如果要想推送到仓库,就必须带仓库地址,因为后面的docker push 命令,会默认把第一个斜线前面的内容当做仓库,如果没有仓库地址,会带上默认的仓库地址,类似 "https://index.docker.io/v1" ,后果是这个地址要么不通,要么你上传到错误地方******************

3.5 推送到镜像仓库

执行docker push命令就可以将镜像上传到SWR。docker push <仓库地址>/<镜像名称>:<标签>

复制代码
# docker push swr.cn-east-3.myhuaweicloud.com/container/hello:v1

当需要使用该镜像时,使用docker pull命令拉取(下载)该命令即可。

复制代码
# docker pull swr.cn-east-3.myhuaweicloud.com/container/hello:v1
相关推荐
张忠琳10 小时前
【NVIDIA】 NVIDIA Container Toolkit v1.19.1 — OCI 模块超深度分析之三
云原生·容器·架构·kubernetes·nvidia
阿里云云原生11 小时前
让 AI Agent 看见正在发生的业务,阿里云 EventHouse 正式商业化
云原生
Elastic 中国社区官方博客11 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
AOwhisky12 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
风曦Kisaki14 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着201314 小时前
docker 安装 ,在centos7.9
运维·docker·容器
微三云 - 廖会灵 (私域系统开发)15 小时前
电商系统从单体到微服务拆分实践:拆什么、怎么拆、拆完后怎么办
微服务·云原生·架构
骑上单车去旅行16 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka
前端Baymax18 小时前
K8s PodCrashLoopBackOff假阳性排查
云原生·容器·kubernetes
spider_xcxc18 小时前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s