目录
Dockerfile
是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成脚本。
对比docker从安装到简单使用(中级)_明天一定.的博客-CSDN博客中的commit命令来说,可以一次构建你需要的环境,而不是去一次次的commit。
构建三个步骤:
- 编写Dockerfile文件
- docker build命令构建镜像
- docker run 命令运行容器
Dockerfile文件基本知识
保留字指令必须为大写字母且最少跟随一个参数
指令从上到下依次执行
#代表注释
每条指令都会创建一个新的镜像层并提交
总的来说:Dockerfile面向开发,Docker镜像是交付的标准,Docker容器是设计运维和部署。
常用保留字
1)FROM:表示当前镜像是基于哪个镜像的。
2)MAINTAINER:镜像维护者的姓名和邮箱地址。
3)RUN:容器构建时需要运行的命令。一般指额外的linux命令。
4)EXPOSE:当前容器对外暴露出的端口。
5)WORKDIR:指定在创建容器并进入容器后,终端默认登录进来的工作目录。不写默认是根目录。
6)ENV:用来在构建镜像过程中设置环境变量。
7)ADD:将宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理URL和解压tar压缩包。
8)COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源文件>的文件/目录复制到镜像内的<目标路径>位置。但与ADD的唯一区别是COPY不会自动解压。
9)VOLUME:容器数据卷,用于数据保存和持久化工作。
10)CMD:指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后的参数替换。但是注意,如果DockerFile中可以有多个CMD命令,在docker build时同样会执行,但是在docker run时只会run最后一个CMD参数。会被覆盖
11)ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是指定容器启动程序及参数。不会被覆盖。
Dockerfile微服务实战
实质就是把jar包打包为镜像运行
可以参考Dockerfile微服务实战_小楼昨天又东风的博客-CSDN博客_docker部署微服务实战
虚悬镜像
仓库和标签都为none的镜像,这种镜像一般代表残缺的,不必保留
删除:docker image prune
Docker网络
四种网络模式
bridge和host是最常用的
命令
[root@localhost ~]# docker network --help
Usage: docker network COMMAND
Manage networks
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
作用
- 容器间的互联和通信以及端口映射
- 容器IP变动时候可以通过服务名直接网络通信而不受影响
容器网络通信时,最好自定义网络,不要通过IP通信,要通过服务名通信。(自定义网络本身就维护好了主机名和ip的对应关系)
Docker-compose
简介
负责实现对Docker容器集群的快速编排。经常会碰到需要多个容器相互配合来完成某项任务的情况,Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Linux安装:Install Docker Compose | Docker Documentation
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
compose常用命令:Docker入门之docker-compose - minseo - 博客园
portainer
轻量级容器可视化工具
CAdvisor+InfluxDB+Granfana
重量级容器监控工具