Docker的进阶使用分享

75 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

image.png

docker commit 将容器制作成镜像文件

docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

1.根据当前容器作为模板制作为镜像文件

docker commit -m="mayikt tomcat" -a="lijianb"  3a06b4c779a8 lijianb-tomcat:1.0

2.在以当前自己制作的镜像文件运行

docker run -p 8088:8080   lijianb-tomcat:1.0

数据卷就是宿主机上的一个文件或目录

容器内部文件与容器外部文件共享(一般共享文件夹)

数据卷--添加两种方式

  1. 直接命令形式添加  docker run -it -v 宿主机绝对路径目录:容器内目录 镜像文件名称

  2. Dockerfile方式添加

挂载nginx html文件

hub.docker.com/search?q=ng…

  1. 创建挂载目录

mkdir -p /data/nginx/{conf,conf.d,html,logs}

  1. 启动docker容器

docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx

-v /data/nginx/html 虚拟机目录 --挂载 容器目录 /usr/share/nginx/html

上传一个 html 放入到  /data/nginx/html

docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx

-v /data/nginx/html: linux虚拟机目录

/usr/share/nginx/html 容器中html目录

docker底层运行原理

CS体系架构:client客户端,server服务端(比如docker,先安装安装包,才能使用)

BS体系架构:browser浏览器,server服务端(基于浏览器使用)

原理:首先启动docker,后台会有守护进程,监听docker build、docker pull、docker run等命令。比如docker run,接到命令后,现在本地检查是否存在镜像文件,如果没有该镜像文件,就回去docker hub中查找镜像文件,如果存在就会下载到本地镜像,容器再去运行。

基于docker安装tomcat服务器 是否需要配置jdk环境变量呢?

docker安装tomcat会自动安装jdk环境

docker安装tomcat:8 --jdk8 配置环境变量

docker安装tomcat:9 --jdk9 配置环境变量

如何封装配置环境依赖的呢?

Dockerfile---文件(描述了镜像文件的配置,打包成镜像文件)

image.png

镜像加载的原理

Linux文件系统由bootfs和rootfs两部分组成

bootfs:包含bootloader(引导加载程序)和 kernel(内核)

rootfs: root文件系统,包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc等标准目录和文件

不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等

image.png

Docker镜像底层实际上是有多个不同的联合文件系统组成的

最底层:bootfs,并使用宿主机的bootfs-复用

第二层:root文件系统rootfs,称为base image

Union fs

然后再往上可以叠加其他的镜像文件

统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,隐藏多层的存在,我们看来只是存在一个文件系统。

所以当我们安装的tomcat镜像大小是600多MB 是因为里面还包含了jdk和centos的镜像

而centos镜像复用了宿主机的bootfs 下载的只有rootfs 所以小很多

DockerFile指令

  1. FROM 指定父镜像:  基于哪个镜像image构建  指定基础镜像,必须为第一个命令

  2. MAINTAINER :维护者

  3. RUN: 容器创建的时候执行一段命令   构建镜像时执行的命令

  4. ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

  5. COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源

  6. CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件

  7. ENV: 设置环境变量

  8. EXPOSE: 指定于外界交互的端口

  9. VOLUME  用于指定持久化目录

  10. WORKDIR 设置进入容器时的路径

Tomcat docker File:

github.com/docker-libr…

github.com/docker-libr…

\