Docker&&K8s
一、Docker基本概念
镜像 Image:
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
容器Container:
镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的 类
和 实例
一样,镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。
仓库 Repository:
Docker提供了Hub来保存公有或私有的镜像,也允许第三方搭建。
二、Docker Command
$ docker version //验证是否安装成功 //或者 $ docker info //获取镜像 $ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] $ docker pull ubuntu:18.04 //列出镜像 $ docker image ls //删除本地镜像 $ docker image rm [选项] <镜像1> [<镜像2> ...]
//容器
$ docker container ls -a
$ docker container prune //清理所有终止状态的容器
//docker container run命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取
$ docker container run [image name]
$ docker container kill [containID] //对于不会自动终止的容器,必须用docker cntainer kill 命令手动终止
//查看镜像、容器、数据卷所占用的空间
$ docker system df
$ docker ps
删除镜像之前,需要先把容器删除。容器是镜像的运行实例。
$ docker ps -a # Lists containers (and tells you which images they are spun from) $ docker images # Lists images $ docker rm <container_id> # Removes a stopped container $ docker rm -f <container_id> # Forces the removal of a running container (uses SIGKILL) $ docker rmi <image_id> # Removes an image # Will fail if there is a running instance of that image i.e. container $ docker rmi -f <image_id> # Forces removal of image even if it is referenced in multiple repositories, # i.e. same image id given multiple names/tags # Will still fail if there is a docker container referencing image.
三、Docker Build镜像
构建dockerfile后build docker镜像
docker build [OPTIONS] PATH | URL | -
$ docker build --tag docker-gs-ping .
eg: docker build -t nginx:v3 .
镜像build完成后,跑起来。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 首先在指定镜像上创建一个可写的容器层
- 然后使用指定的命令(COMMAND)启动它
- docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start。
options 说明
option | 作用 |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
-d |
守护进程,后台运行该容器
|
-p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
-P | 随机端口映射,容器内部端口随机映射到主机的端口 |
-u | 以什么用户身份创建容器 |
--name "nginx-lb" | 容器名字 |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 host name |
--dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username="ritchie" | 设置环境变量 |
--restart | Docker 重启后,容器是否自动重启 |
--privileged | 容器内是否使用真正的 root 权限 |
eg: docker run -it -p 8080:8080 content-provider:v1
https://www.cnblogs.com/poloyy/p/13926296.html
四、Docker Doc
DockerHub:
https://registry.hub.docker.com/search?q=node&type=image
https://registry.hub.docker.com/_/node
怎么制作镜像:
https://docs.docker.com/language/golang/build-images/
https://docs.docker.com/engine/install/centos/
https://www.elastic.co/cn/what-is/elasticsearch/
https://yeasy.gitbook.io/docker_practice/image/build
五、 容器编排工具 K8s :
Kibana:
Nginx:
参考:
Docker基础学习指南
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
2018-05-08 APNS