docker进阶知识笔记

目录

一、Dockerfile解析

1.1.什么是Dockerfile

1.2.Dockerfile构建过程解析

1.2.1.Dockerfile内容基础知识

1.2.2.Docker执行Dockerfile的大致流程

1.3.Dockerfile常用保留字指令

1.3.1.FROM

1.3.2.MAINTAINER

1.3.3.RUN

1.3.4.EXPOSE

1.3.5.WORKDIR

1.3.6.USER

1.3.7.ENV

1.3.8.ADD

1.3.9.COPY

1.3.10.VOLUME

1.3.11.CMD

​​​​​​​1.3.12.ENTRYPOINT

1.3.13.各命令运行时期

1.4.Dockerfile实践

1.4.1.生成微服务jar包

1.4.2.编写Dockerfile

1.4.3.将微服务jar包和Dockerfile文件上传到同一个目录下/mydocker

1.4.4.在/mydocker路径下构建镜像,打包成镜像文件

1.4.5.运行容器

二、Docker网络

2.1.常用命令

2.2.作用

2.3.网络模式

三、Docker-compose容器编排

3.1.Docker-compose使用的三个步骤

3.2.Docker-compose常用命令

3.3.Docker-compose实践

3.3.1.编写docker-compose.yml文件

3.3.2. 执行docker-compose up或者执行docker-compose up -d

四、Docker轻量级可视化工具Portainer

五、Docker容器监控之CAdivisor+InfluxDB+Granfana

5.1.编写docker-compose.yml

5.2.启动docker-compose文件


一、Dockerfile解析

1.1.什么是Dockerfile

        Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

        构建三部曲:

        1)编写Dockerfile文件;

        2)docker build 命令构建镜像

        3)docker run 以镜像运行容器实例

1.2.Dockerfile构建过程解析

1.2.1.Dockerfile内容基础知识

        1)每条保留字指令都必须为大写字母且后面要跟随至少一个参数

        2)指令按照从上到下,顺序执行

        3)#表示注释

        4)每条指令都会创建一个新的镜像层并对镜像进行提交

1.2.2.Docker执行Dockerfile的大致流程

        1)docker从基础镜像运行一个容器

        2)执行一条指令并对容器作出修改

        3)执行类似docker commit的操作提交一个新的镜像层

        4)docker再基于刚提交的镜像运行一个新容器

        5)执行dockerfile中的下一条指令直到所有指令都执行完成

1.3.Dockerfile常用保留字指令

1.3.1.FROM

        基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from

1.3.2.MAINTAINER

        镜像维护者的姓名和邮箱地址

1.3.3.RUN

        容器构建时需要运行的命令,在 docker build时运行

有两种格式:

        shell格式:RUN yum -y install vim

        exce格式:RUN ["./test.php", "dev", "offline"]   等价于   RUN ./test.php dev offline

1.3.4.EXPOSE

        当前容器对外暴露出的端口

1.3.5.WORKDIR

        指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

1.3.6.USER

        指定该镜像以什么样的用户去执行,如果都不指定,默认是root

1.3.7.ENV

        用来在构建镜像过程中设置环境变量

1.3.8.ADD

        将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包

1.3.9.COPY

        类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置

        COPY src dest

1.3.10.VOLUME

        容器数据卷,用于数据保存和持久化工作

1.3.11.CMD​​​​​​​

        指定容器启动后的要干的事情,在docker run 时运行

        Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

​​​​​​​1.3.12.ENTRYPOINT

        也是用来指定一个容器启动时要运行的命令

        类似于 CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖, 而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序 

1.3.13.各命令运行时期

BUILDBothRUN
FROMWORKDIRCMD
MAINTAINERUSERENV
COPYEXPOSE
ADDVOLUME
RUNENTRYPOINT
ONBULID
.dockerignore

1.4.Dockerfile实践

1.4.1.生成微服务jar包

1.4.2.编写Dockerfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER yjw
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001

1.4.3.将微服务jar包和Dockerfile文件上传到同一个目录下/mydocker

1.4.4.在/mydocker路径下构建镜像,打包成镜像文件

docker build -t zzyy_docker:1.6 .
#注意后面的空格和.

1.4.5.运行容器

 docker run -d -p 6001:6001 zzyy_docker:1.6

二、Docker网络

         docker启动后,主机网络会产生一个名为docker0的虚拟网桥      

2.1.常用命令

        docker network create xxx网络名字:添加网络

        docker network ls:查看网络

        docker network inspect xxx网络名字:查看网络源数据

        docker network rm xxx网络名字:删除网络

2.2.作用

        1)容器间的互联和通信以及端口映射

        2)容器IP变动时候可以通过服务名直接网络通信而不受到影响

2.3.网络模式

        1)bridge模式:使用--network  bridge指定,默认使用docker0

        2)host模式:使用--network host指定

        3)none模式:使用--network none指定

        4)container模式:使用--network container:NAME或者容器ID指定

三、Docker-compose容器编排

3.1.Docker-compose使用的三个步骤

        1)​​​​​​​编写Dockerfile定义各个微服务应用并构建出对应的镜像文件

        2)使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务

        3)最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线

3.2.Docker-compose常用命令

        docker-compose -h:查看帮助

        docker-compose up:启动所有docker-compose服务

        docker-compose up -d : 启动所有docker-compose服务并后台运行 

        docker-compose down:停止并删除容器、网络、卷、镜像

        docker-compose exec  yml里面的服务id:进入容器实例内部 

        docker-compose ps:展示当前docker-compose编排过的运行的所有容器

        docker-compose top:展示当前docker-compose编排过的容器进程

        docker-compose logs  yml里面的服务id:查看容器输出日志

        docker-compose config:检查配置

        docker-compose config -q: 检查配置,有问题才有输出

        docker-compose restart: 重启服务

        docker-compose start:启动服务

        docker-compose stop:停止服务

3.3.Docker-compose实践

3.3.1.编写docker-compose.yml文件

version: "3"services:microService:image: zzyy_docker:1.6container_name: ms01ports:- "6001:6001"volumes:- /app/microService:/datanetworks: - atguigu_net depends_on: - redis- mysqlredis:image: redis:6.0.8ports:- "6379:6379"volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/datanetworks: - atguigu_netcommand: redis-server /etc/redis/redis.confmysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: '123456'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'db2021'MYSQL_USER: 'zzyy'MYSQL_PASSWORD: 'zzyy123'ports:- "3306:3306"volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- atguigu_netcommand: --default-authentication-plugin=mysql_native_password #解决外部无法访问networks: atguigu_net:

3.3.2. 执行docker-compose up或者执行docker-compose up -d

四、Docker轻量级可视化工具Portainer

        安装命令如下

docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always     -v /var/run/docker.sock:/var/run/docker.sock     -v portainer_data:/data     portainer/portainer

五、Docker容器监控之CAdivisor+InfluxDB+Granfana

5.1.编写docker-compose.yml

version: '3.1'volumes:grafana_data: {}services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DB=cadvisorports:- "8083:8083"- "8086:8086"volumes:- ./data/influxdb:/datacadvisor:image: google/cadvisorlinks:- influxdb:influxsrvcommand: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086restart: alwaysports:- "8080:8080"volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rografana:user: "104"image: grafana/grafanauser: "104"restart: alwayslinks:- influxdb:influxsrvports:- "3000:3000"volumes:- grafana_data:/var/lib/grafanaenvironment:- HTTP_USER=admin- HTTP_PASS=admin- INFLUXDB_HOST=influxsrv- INFLUXDB_PORT=8086- INFLUXDB_NAME=cadvisor- INFLUXDB_USER=root- INFLUXDB_PASS=root

5.2.启动docker-compose文件

docker-compose up


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部