docker_2

容器数据卷

数据卷介绍

假如数据都在容器里面,那么删掉容器如何让容器里的数据保存呢?

其实容器之间有一个数据共享技术,docker里面产生的数据可以同步到本地,这就是数据卷技术,也就是目录挂载,容器内的目录挂载到本地主机上,而容器之间也是可以数据共享的

数据卷的使用

直接挂载

查看目标文件夹文件

#开始绑定
>docker run -it -v C:\Users\22729\Desktop\code:/home centos
[root@04dd50b41d4c /]# cd home
[root@04dd50b41d4c home]# ls
c.c  python
[root@04dd50b41d4c home]# ll
bash: ll: command not found
[root@04dd50b41d4c home]# ls -l
total 0
-rwxrwxrwx 1 root root   56 Apr  5 06:42 c.c
drwxrwxrwx 1 root root 4096 Mar 26 08:57 python
#随意创建一个文件
[root@04dd50b41d4c home]# touch 1
[root@04dd50b41d4c home]# ls
1  c.c  python
[root@04dd50b41d4c home]#
#查看得知,如下图
❯ docker inspect centos


具名挂载和匿名挂载

#具名挂载
❯ docker run -d -v centos:/home centos
3c0370241a875201518ac14c12b705309157f0ed61110a34ae4163e0311f5bd3
❯ docker volume ls
DRIVER    VOLUME NAME
local     centos

#匿名挂载介绍
❯ docker run -it -v /home centos
[root@b89004534f22 /]#eixt
❯ docker volume ls
DRIVER    VOLUME NAME
local     55808ce5a31cee183ced1ada6dd7623fe30837bbba25ce4a2c429d5f6d075e19
#这种就是匿名挂载,也就是只写了容器内的路径,而没有写本地主机的路径
#win下暂时未找到此路径在哪,win的子系统显示未有
#假如指定了目录,docker volume ls查看不到
#不建议在win下使用具名和匿名挂载,因为找不到默认路径


#三种挂载方式,具名,匿名,指定路径
-v 容器内路径        #匿名
-v 卷名:容器内路径    #具名
-v /宿主机路径:容器路径 #指定路径挂载
#通过 -v 容器内路径:ro rw 改变读写权限
ro #readonly 只读 
rw #readwrite 可读可写 
docker run -d -v juming:/home:ro centos 
docker run -d -v juming:/home:rw centos
#ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!Dockerfi

Dockerfile

dockerfile是用来构建docker镜像的文件,也叫命令脚本,通过命令脚本可以生成镜像

构建过程

  • 每个保留关键字,都必须是大写
  • 执行是从上到下
  • 表示注释

  • 每个指令都会创建提交一个新的镜像并提交
# dockerfile常用指令
FROM       # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN        # 镜像构建的时候需要运行的命令
ADD        # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录 
WORKDIR    # 镜像的工作目录
VOLUME     # 挂载的目录
EXPOSE     # 保留端口配置
CMD        # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD    # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。 
COPY       # 类似ADD,将我们文件拷贝到镜像中 
ENV        # 构建的时候设置环境变量
  
#构建
docker build -f 文件路径 -t:[tag] .
CMD         # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  # 指定这个容器启动的时候要运行的命令,可以追加命令

详情:https://www.runoob.com/docker/docker-dockerfile.html

发布自己的镜像

地址:https://hub.docker.com/

登录使用docker login详情—help

提交push镜像

# 会发现push不上去,因为如果没有前缀的话默认是push到官方的library 
# 解决方法 
# 第一种build的时候添加你的dockerhub用户名,然后在push就可以放到自己的仓库了 
docker build -t chengcoder/mytomcat:0.1 . 
# 第二种使用docker tag 
# 然后再次push 
docker tag 容器id chengcoder/mytomcat:1.0 
# 然后再次push

也可以提交到阿里云上,官网有详细教程https://cr.console.aliyun.com/repository/

posted @ 2023-08-11 14:00  柠萌吖  阅读(8)  评论(0编辑  收藏  举报