Docker15:DockerFile

Docker15:DockerFile

Created
Nov 16, 2021 01:35 PM
Last Edited
Last updated December 2, 2021
Tags

1. 简介

Dockerfile就是构建docker镜像的构建文件,命令脚本。
通过这个脚本生成镜像,镜像是一层一层的,脚本是一个一个的命令,每个命令都是一层。

2. 编写文件

  • /home目录下创建测试文件夹docker-test-volume
root@docker:/home# ls ceshi henggao mysql test.java # 1. 创建测试文件夹docker-test-volume root@docker:/home# mkdir docker-test-volume root@docker:/home# ls ceshi docker-test-volume henggao mysql test.java root@docker:/home# cd docker-test-volume/ # 2. 创建dockerfile1,名字可以随机,建议Dockerfile root@docker:/home/docker-test-volume# vim dockerfile1 root@docker:/home/docker-test-volume#
  • dockerfile1中写入内容
# 文件中的内容发,命令(大写)参数 FROM centos VOLUME ["volume01","volume02"] CMD echo "------end------" CMD /bin/bash
 

3. 构建

3.1 构建命令

docker build -f /home/docker-test-volume/dockerfile1 -t henggao/centos:1.0 .

3.2 运行如图

notion image

3.3 生成镜像如图

notion image
 
 

4. 启动自己的镜像

4.1 以自己的镜像运行一个容器

 
root@docker:/home/docker-test-volume# docker run -it d3c700b4cc56 /bin/bash

4.2 查看目录

notion image
这个卷和外部一定有一个同步的目录。步骤2中
notion image
创建一个测试文件
[root@89c4b018a181 /]# cd volume01 [root@89c4b018a181 volume01]# ls [root@89c4b018a181 volume01]# touch container.txt

4.3 查看卷挂载的路径

# 1. 查看容器id root@docker:/home/henggao/Desktop# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89c4b018a181 d3c700b4cc56 "/bin/bash" 8 minutes ago Up 8 minutes elastic_lichterman f57f1e27658f portainer/portainer-ce "/portainer" 13 hours ago Up 32 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 9443/tcp portainer # 2. 查看容器信息 root@docker:/home/henggao/Desktop# docker inspect 89c4b018a181
容器外的目录信息如下
notion image
主机查看测试文件是否同步出去
root@docker:/home/henggao/Desktop# cd /var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data root@docker:/var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data# ls container.txt root@docker:/var/lib/docker/volumes/acad53cf933f8847906a69a38dce4a711c8b90d904b0c0786fbbcbc838019055/_data#
 
这种方式使用的十分多,通常会构建自己的镜像。
假设构建镜像的时候没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径