Docker 101
一、使用场景
确保应用运行环境一致,易于部署和分发
二、安装
mac
官网下载docker desktop,然后安装
使命令行生效,需要配置PATH,在~.zhsrc中添加
export PATH=$HOME/bin:/usr/local/bin:/$HOME/.docker/bin:$PATH
debian:文档链接
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
三、原理
容器的本质是进程,一个容器就是一个进程
通过Namespace,修改进程看待计算机的视图,保证容器之间互不影响
通过Cgroups,限制进程使用资源的上限,包括CPU、内存、磁盘、宽带等
通过Union FS,实现文件系统的分层,写时复制,镜像合并
四、构成
镜像:一个文件系统,包含了容器运行时所需的程序、库、资源、配置,分层存储
获取:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
查询:docker search —filter/—limit
列出:docker image ls
查看:docker system df
删除:docker image rm(没有被容器使用,方可删除)
构建:docker image build
dockerfile:镜像构建文件
FROM:基于一个镜像来修改
WORKDIR:指定当前工作目录
COPY:把容器外的内容复制到容器内
EXPOSE:声明容器运行时提供服务的端口
RUN:在容器内执行命令
CMD:容器启动命令
ENTERPOINT:运行前的准备工作
ENV:环境变量,容器运行时使用
ARG:环境变量,容器构建时使用
VOLUME:定义匿名圈
USER:指定用户
HEALTHCHECK:健康检测
容器:镜像运行时的实体
新建并启动:docker run
—name:
-d:后台运行
列出:docker container ls
终止:docker container stop
进入:docker exec
导出/导入:docker export/import
删除:docker container rm
清除所有终止的容器:docker container prune
仓库:存放镜像的地方,有公仓和私仓
数据卷:容器之间可以共享,其更新不会影响容器
创建:docker volume create
查看:docker volume ls
详情:docker volume inspect
删除:docker volume rm
网络:通过外部访问容器或容器互联的方式提供网络服务
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort