标签搜索

Docker的进阶教程

幻鹤
2023-03-04 / 0 评论 / 1,102 阅读 / 正在检测是否收录...

容器卷

容器卷是什么

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

基础知识

  1. 每个保留关键字(指令)都是必须是大写字母
  2. 执行从上到下顺序执行
  3. 表示注释

  4. 每一个指令都会创建提交一个新的镜像层,并提交!

letqgv21.png

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

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

登录自己的

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:[镜像版本号]

总的来说

letq7k00.png
letq7nu8.png

0

评论 (0)

取消