容器卷
容器卷是什么
docker的理念回顾
将应用和环境打包成一个镜像!
就是把docker中mysql的文件同步到本地数据库中,实现同步
使用数据卷
方式一:使用命令来挂载 -v
docker run -it -v 主机目录:容器目录
# 实例一下
# 运行容器
docker run -it -v /home/ceshi:/home centos /bin/bash
#此时本机home/ceshi目录中已经有文件了
#可以试着把容器停止
exit
#然后查看容器还在不
docker ps #发现没有容器了
#在宿主机上添加文件,然后在启动容器
docker ps -a #拿到容器id
docker start 容器id #启动容器
docker attach 容器id #进入容器正在运行的命令行
#然后就可以看到home目录有文件了
安装MySql
#获取镜像
docker pull mysql:5.7
#启动容器
docker run -d -p 3303:3306 -v /home/mysql/conf:/etc/mysql/conf -v /hom/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#上面的123456是mysql的密码
然后就可以连接端口,且删除mysql挂在的数据卷存在本地,实现持久化、
匿名挂载卷
#匿名挂载
docker run -d -P --name nginx01 -v /ect/nginx nginx
#具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/ect/nginx nginx
#查看所有volume的情况
docker volume ls
##==>
DRIVER VOLUME NAME
local 6b293610ad7957745378480c914af2b75107b84efdf3ff45e6db8df6c5808ece
local juming-nginx
# 查看他的信息
docker volume inspect juming-nginx
#==>
[
{
"CreatedAt": "2023-03-03T20:49:57+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx
大多数都是使用具名挂在
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定挂载
拓展
#通过内路径ro或者rw改变读写权限(只读,可读可写)
docker run -d -P --name nginx02 -v juming-nginx:/ect/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/ect/nginx:rw nginx
#ro 只能从外部改变(宿主机)
方式二
容器数据卷
Dockerfile就是来构建docker的镜像文件
#通过这个脚本生成镜像
FROM centos
VOLUME ["volme01","volme02"]
CMD echo "---end---"
CMD /bin/bash
使用docker来执行这个脚本
docker buid -f dockerfile01 -t huanhe/centes .
这种方法会在启动自己容器里挂载两个目录
可以让多个mysql同步数据
docker run -it --name docker02 --volumes-from docker01 huanhe/centos:1.0
# 让docker02继承docker01的挂载
dorckerfile
基础知识
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序执行
表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交!
docker是面向开发的
DockerFile:构建文件
DockerImages:构建镜像
Docker容器:提供运行容器
DockerFile指令
FROM #基础镜像,一切在这里开始
MAINTAINER #镜像所有者,姓名+邮箱
RUN # 镜像构建时需要的命令
ADD # 步骤,相当于加入tomcat压缩包
EORKDIR # 镜像目录的工作目录
VOLUME # 挂载卷
EXPOST # 暴露端口配置
CMD # 指定容器启动时执行的命令,只执行最后一条
ENTRYPOINT # 指定容器启动时执行的命令,可追加
ONBUILD # 当构建镜被继承则会执行
COPY # 类似ADD,将文件拷贝到镜像中
ENV # 构建的时候设置环境变量
创建一个自己的centos
FROM centos:centos7
MAINTAINER huanhe<admin@huanhe.xyz>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end-----"
CMD /bin/bash
开始构建
docker build -f 文件名 -t mycentos:0.1 .
# 运行
docker run -it mycentos:0.1
#在进入后
pwd
#发现在自己设置的工作目录里且可以使用了
查看docker容器的历史
docker history 容器id
发布自己的镜像
DockerHub
登录自己的
docker login -u huanhe
输入密码后就登录成功,然后开始提交
# 需要按照官方命名才可以push
# 改名
docker tag 容器id huanhe/xxx:1.0
#开始push
docker push huanhe/xxx:1.0
发布到阿里云
# 登录
$ docker login --username=xxxx registry.cn-chengdu.aliyuncs.com
# 改标签
$ docker tag [ImageId] registry.cn-chengdu.aliyuncs.com/huanhe/demo:[镜像版本号]
# 推送
$ docker push registry.cn-chengdu.aliyuncs.com/huanhe/demo:[镜像版本号]
总的来说
评论 (0)