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网卡就没了
1.link
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
点击底部的登录进入登录界面
点击底部的 管理 ——> 存储 ——> 添加
以阿里云盘做例子
需要填写的有 驱动 挂载路径 刷新令牌
这样就可以在网页打开云盘
云计算是一种服务模型,通过网络的方式,获取资源(计算,存储,网络)