Docker进阶

#博学谷IT学习技术支持#


一、遇到的问题

在之前的命令中,进入容器内部之后,因为没有vi命令,如果要对文件进行编辑,修改是极其不方便的。这便是容器与数据耦合的后果。

这里学习数据卷来解决这个问题。

二、数据卷

数据卷(volume) 是一个虚拟目录,指向宿主机文件系统中的某个目录。

三、数据卷命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume 命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

四、挂载数据卷命令

注: 只能在创建容器时进行挂载。

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

    docker run \
      --name mn \
      -v html:/root/html \
      -p 8080:80 \
      nginx

这里的-v就是挂载数据卷的命令:

  • -v html:/root/html :把html数据卷挂载到容器内的/root/html这个目录

挂载之后便可以进入数据卷内部,对文件进行方便的修改了。

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

五、挂载本地目录命令

容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。

命令是相似的,只是将数据卷的目录(文件)换成了本地目录(文件)

六、两种方式区别

  • 带数据卷模式:宿主机目录 --> 数据卷 —> 容器内目录
  • 直接挂载模式:宿主机目录 —> 容器内目录

七、自定义Docker镜像

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
在这里插入图片描述
简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

我们要构建镜像,其实就是实现上述打包的过程。

八、Dockerfile语法

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
在这里插入图片描述

九、实践

需求:基于Ubuntu镜像构建一个新镜像,运行一个java项目

  • 将准备好的docker-demo.jar(换成自己的项目)和jdk8.tar.gz (linux下的安装包) 放在一个docker-demo目录

  • 创建Dockerfile文件

    # 指定基础镜像
    FROM ubuntu:16.04
    # 配置环境变量,JDK的安装目录
    ENV JAVA_DIR=/usr/local
    
    # 拷贝jdk和java项目的包
    COPY ./jdk8.tar.gz $JAVA_DIR/
    COPY ./docker-demo.jar /tmp/app.jar
    
    # 安装JDK
    RUN cd $JAVA_DIR \
     && tar -xf ./jdk8.tar.gz \
     && mv ./jdk1.8.0_144 ./java8
    
    # 配置环境变量
    ENV JAVA_HOME=$JAVA_DIR/java8
    ENV PATH=$PATH:$JAVA_HOME/bin
    
    # 暴露端口
    EXPOSE 8090
    # 入口,java项目的启动命令
    ENTRYPOINT java -jar /tmp/app.jar
    
  • 将准备好的docker-demo上传到虚拟机任意目录,然后进入docker-demo目录下

  • 执行命令

docker build -t javaweb:1.0 .
  • 访问自己项目的接口便可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值