容器与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
相关推荐
项目題供诗5 小时前
黑马k8s(四)
云原生·容器·kubernetes
杰克逊的日记5 小时前
大项目k8s集群有多大规模,多少节点,有多少pod
云原生·容器·kubernetes
小张童鞋。5 小时前
k8s之k8s集群部署
云原生·容器·kubernetes
long_21455 小时前
k8s中ingress-nginx介绍
kubernetes·ingress-nginx
luck_me55 小时前
k8s v1.26 实战csi-nfs 部署
linux·docker·云原生·容器·kubernetes
邪恶的贝利亚6 小时前
《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
docker·容器·架构
一直学下去7 小时前
K8S中构建双架构镜像-从零到成功
容器·kubernetes·cicd·多架构
知其_所以然7 小时前
使用docker安装clickhouse集群
clickhouse·docker·容器
hnlucky8 小时前
《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
运维·数据库·nginx·云原生·容器·kubernetes·mariadb
_板栗_8 小时前
livenessProbe 和 readinessProbe 最佳实践
云原生·容器·kubernetes