容器与K8s
容器 vs 虚拟机。
一、容器
容器 vs 虚拟机
二、Docker容器使用
三个概念:
2.1 镜像
Docker镜像除了运行程序也打包了程序运行环境。
2.2 镜像仓库
存放镜像的仓库,需要login之后拉去响应的镜像。
2.3 容器
基于Docker镜像创建的linux容器,本质是宿主机上的一个进程,与其他资源隔离。
图2 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
更多推荐
所有评论(0)