docker的进阶

docker进阶

一、数据卷

1、容器数据卷

容器和本地目录数据同步
容器关闭状态,本地修改后,容器也同步数据
容器停止后,本地数据也不会丢失

-v 来挂载
docker run -it -v 主机目录:容器目录 容器名

例:
docker run -it -v /home/ceshi:/home		容器名
#没有目录会自动创建

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/conf.d -v /home/mysql/data:/var/+lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 –name  mysql01  mysql
 
#-e 配置环境   配置mysql  密码
#把容器里 etc/conf.d  和  /var/lib/mysql
#数据同步到本地的 /home/mysql/conf  和  /home/mysql/data

2、多个容器同步数据

两个或者多个容器实现数据共享
被挂载的一方就是父容器
只要有一个容器还在,数据就不会丢失

例
docker rum -it  --name docker01  wfy/centos:1.0
docker rum -it  --name docker02  --volumes-from 	docker01

#把docker02 跟docker01 绑定(docker01·是父容器)

二、具名和匿名挂载

docker volume ls
查看本地所有的volume

匿名挂载就是不指定本地路径
数据卷挂载本地路径可以只写卷名(具名)
没有指定目录的情况下在/var/lib/decker/volume

指定挂载的本地路径

-v  容器内路径				匿名挂在
-v	卷名:容器内路径		具名挂载
-v	本地路径:容器内路径	指定路径挂载

docker run -it -v /home/ceshi:/home:ro  centos  
#通过 -v容器内路径,改变读写权限
#挂在和后只能在宿主机修改,容器里的文件无法修改   默认是rw

#查看该卷的详细信息,挂载点设置如下
docker volume inspect --format='{{json .Mountpoint}}' centos  

三、Dockerfile

用来构建docker镜像的构建文件 就是命令脚本

  • 1.编写dockerfile文件
  • 2.docker bulid 构建镜像
  • 3.dockers run 运行镜像
  • 4.dockers push 发布镜像

基础知识

  • 1.文件内容 保留关键字(指令)大写 参数小写
  • 2.从上往下执行
  • 3.每个指令都会提交一个新的镜像层,并提交
命令:
From  			基础镜像.从这里开始构建
MAINTAINER		镜像作者  姓名+邮箱
RUN				运行镜像
ADD 			要加一个镜像,本地要提起先搭建,添加内容 自动解压
WORKDIR		镜像的工作目录   默认是根目录
VOLUME			挂载的目录
EXPOSE			暴露的端口
CMD			容器启动时运行的命令,替换
ENTRYPOINT		容器启动时运行的命令,追加
ONBUILD		触发指令,构建一个被继承的dockerfile,会触发
COPY			类似ADD,将文件拷贝到镜像
ENV				构建时设置环境变量

1.编写dockerfile文件

例子1
FROM  centos:7
MAINTAINER 	wfy<2368296987@qq.com>

ENV 	MYPATH		/usr/local
WORKDIR	$MYPATH

RUN  yum  -y	install  vim

EXPOSE	80

CMD	echo  $MYPATH
CMD  echo  “-----end-----”
CMD  /bin/bash


例子2
FROM  centos
VOLUME [“volume01”,”volume02”]		#匿名挂载

CMD  echo  “-----end-----”
CMD  /bin/bash

-------

2.构建镜像

-f 指定文件名 -t 镜像名字[版本号] . 当前位置

Docker build -f  dockerfile -t  wycentos:1.0 .

以dockerfile 文件来构建镜像 版本为1.0(默认为最新版本)
[“volume01”,”volume02”] 创建后自动挂载的,就是数据卷目录

3. 运行镜像

docker run -it wfy/centos:1.0
docker inspect  51ab8ef796c2
#启动后查看详细信息里的Mounts    
#即可知道数据卷目录位置

Docker  history   
#查看镜像的构成历史

4.发布镜像到 Docker Hub

#先登录到Docker  Hub
docker login -u wengfy
docker push wfy/wfycentos
#上传镜像 带上作者信息

docker tag  bfc384362136 wfy:1.0
docker push wfy:1.0
#可以打个标签提交

四、CMD 和 ENTRYPOINT 区别

CMD

写入文档,构建启动后会执行ls -a命令
Vim  dockerfile
FROM  centos
CMD [“ls”,”-a”].

Docker build -f  dockerfile -t  wycentos:1.0 .
docker run -it wfycentos:1.0 ls -al
选项是替换dockfile文件

ENTRYPOINT

写入文档,构建启动后会执行ls -a命令
Vim  dockerfile
FROM  centos
ENTRYPOINT [“ls”,”-a”].

Docker build -f  dockerfile -t  wycentos:1.0 .
docker run -it wfycentos:1.0 -l
选项是追加dockfile文件

五、Docker网络

1.只要我们安装了docker,就有个docker0的网卡,桥接模式
2.运行一个容器本地就多了个网卡
3.容器的网卡都是一对的
4.运用了veth-pair 技术 一堆的虚拟设备接口
5.veth-pair是个桥梁,连接各种虚拟网络设备
6.虚拟网卡,转发速度快,删掉容器,veth-pair网卡就没了

Docker重启后IP换掉,用名字访问容器

docker run -it   --name wf1  wfycentos  
docker run -it   --name wfy2 --link wfy1 wfycentos

#这样wfy2 能ping wfy1  是单项连接
#原理是wfy2中的hosts有  wfy1域名解析

2.自定义网络

查看docker的所有网络
Docker network ls

网络模式

  • Bridge:桥接 docker(默认)
  • None:不配置网络
  • Host:还宿主共享网络
  • Container:容器网络联通(局限性很大)
#启动的命令,--network bridge ,默认就有这个参数
docker run -d --name wfy --network bridge centos

#创建docker网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
创建bridge类型子网为192.168.0.0/16  网关为192.168.0.1 叫做mynet的docker网络

#Docker inspect mynet
查看docker网络

#docker run -d --name wfy --network mynet centos
这样就可以不用link也可以ping通

六.docker安装h5ai

  • h5ai是Web服务器 轻量级的目录索引程序

提前安装好 docker
https://www.cnblogs.com/wengfy/p/16077964.html

# 创建文件夹
mkdir -p /opt/docker/h5ai

# 拉取镜像并开机自启动
docker run -d --name h5ai -p 80:80 -v /opt/docker/h5ai:/h5ai --restart=always ilemonrain/h5ai:full 

访问IP即可

docker 搭建httpd

  • docker内默认 网址是 /usr/local/apache2/htdocs

七.docker搭建AList云盘文件列表

建议搭配使用文档体验更佳

docker run -d --restart=always -v /opt/docker/alist:/opt/alist/data -p 2222:5244 --name="alist" xhofe/alist:latest

# 查看密码 (用户名默认是 admin)
docker logs alist 

#或
docker exec -it alist ./alist admin

点击底部的登录进入登录界面

点击底部的 管理 ——> 存储 ——> 添加

以阿里云盘做例子

需要填写的有 驱动 挂载路径 刷新令牌

这样就可以在网页打开云盘

posted @ 2022-04-06 23:34  陽YANG  阅读(100)  评论(0编辑  收藏  举报