首页 > 其他分享 >轻量化部署工具Docker:参数化启动容器与数据卷挂载的综合应用

轻量化部署工具Docker:参数化启动容器与数据卷挂载的综合应用

时间:2024-03-19 12:59:10浏览次数:19  
标签:容器 mysql 轻量化 nginx html 镜像 挂载 Docker docker

docker run中的常见参数

以mysql安装为例子

docker run -d \
 --name mysql \
 -p 3306:3306 \
 -e TZ=Asia/Shanghai \
 -e MYSQL_ROOT_PASSWORD=123456 \
 mysql

-d 表示后台执行

–name 容器的名字

-p 宿主机和容器映射的端口

-e 环境变量的设置 此处设置了时区和密码

最下方的mysql指此镜像名字(官方名字)

一般此处的镜像名称结构是 Repository:TAG 镜像名+版本号

若像此处没有写上版本号 就默认是安装最新版本镜像的容器

docker操作镜像常见命令

在这里插入图片描述

  • docker pull 将镜像从远端拉取到本地
  • docker push 与拉取对应的 将镜像从本地推送到远端

远端指的是dockerHub

  • docker images 查看所有的镜像

  • docker ps 查看所有的容器及其状态

  • docker build 构建自己的镜像 通过Dockerfile

  • docker save 保存镜像为本地文件

  • docker load 加载本地镜像

  • docker rmi 移除镜像

  • docker run 运行镜像 创建容器 如果本地找不到对应的镜像文件 会到远端去找

  • docker logs 查看docker日志

  • docker exec 运行docker容器

  • docker stop 停止(暂停)运行中的镜像

  • docker start 重新运行构建容器

docker支持类似断点续传的功能 当构建容器的过程中意外暂停了传输 可以通过docker start重新运行起这个过程 并可以通过docker ps来查看容器的安装状态

补充:

docker ps --format "table {{ID}\t{{.Image}r\t{{.Ports}}\t{{.Status}]\t{{.Names}}"

在查看容器状态的时候 自定义容器的格式

数据卷相关

docker容器具有多个特点,是一个在最大程度上最小化依赖和相关组件的单位。这一特点使docker更加的轻量化,提高操作的效率。但同时也带来了某些不便,因为在开发中,我们通常需要修改对应容器的配置。例如修改mysql的端口,在通常情况下,我们需要通过vim等编辑器进入配置文件的内部进行手动修改。但是在docker包装的linux环境中,由于最小化依赖的要求,我们通常不能通过vi进入文件内部编辑。

试使用docker exec + vi

[root@localhost ~]# docker exec -it nginx bash

root@6f6dd1f6932d:/# cd /usr/share/nginx/html

root@6f6dd1f6932d:/usr/share/nginx/html# ls
50x.html  index.html

root@6f6dd1f6932d:/usr/share/nginx/html# vi index.html
bash: vi: command not found

所以为了解决日常开发中的这一类需求 docker引出了数据卷挂载的概念。顾名思义,就是在宿主机的建立对应的目录及文件,映射到容器当中去

在这里插入图片描述

宿主机和nginx中的对应目录是双向绑定的,当在宿主机的映射文件中做修改时,会同步到容器当中去。相反,在容器内部进行修改的时候,也会同步到宿主机的文件系统中去。

了解概念之后,学习如何操作数据卷

指令作用
docker volume create创建数据卷
docker volume ls查看所有数据卷
docker volume rm删除指定数据卷
docker volume inspect查看某个数据卷
docker volume prune清除数据卷

以下以nginx创建容器时手动挂载为例

nginx中存放静态资源的目录是/usr/share/nginx/html

确认挂载目录的写法是否正确

在执行docker run命令时,使用-v 本地目录:容器内目录可以完成本地目录挂载

本地目录必须以“”或"/"开头,如果直接以名称开头,会被识别为数据卷而非本地目录

  • -v mysql:var/ib/mysql 会被识别为一个数据卷叫mysql docker会默认存放到宿主机中数据卷的目录 如上nginx中的/var/lib/docker/volumes/html/_data
  • -v./mysql:Nar/Iib/mysql会被识别为当前目录下的mysql目录
  1. 创建容器并确定挂载的目录及其名字
[root@localhost ~]# docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html
c25c429f3e8ed1470bc27df6ffcdb41d224bfb19087ec66624e24d1c6f8c323d

创建容器并返回容器的id 可使用docker ps观察容器状态

  1. 查看数据卷
[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     html
  1. 查看挂载的数据卷的详情
[root@localhost ~]# docker volume inspect html
[
    {
        "CreatedAt": "2024-02-25T17:00:17+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/html/_data",
        "Name": "html",
        "Options": null,
        "Scope": "local"
    }
]

MountPoint则是对应宿主机中的目录路径

可以在宿主机cd到对应的目录中

[root@localhost ~]# cd /var/lib/docker/volumes/html/_data

[root@localhost _data]# ls
50x.html  index.html

发现经典两文件 这时候可以通过宿主机上的编辑器对映射文件进行修改,或者是新增静态资源。操作完毕之后可以再次通过docker exec进入容器内部,会发现挂载目录下资源或文件已经修改完成

标签:容器,mysql,轻量化,nginx,html,镜像,挂载,Docker,docker
From: https://blog.csdn.net/m0_62551536/article/details/136794530

相关文章

  • Ubuntu 22.04中挂载硬盘
    背景Ubuntu22.04安装在固态硬盘,现在又添加了一块机械硬盘。添加的机械硬盘的文件系统已经是ext4了步骤1、用fdisk查看设备信息就是为了得到机械硬盘的路径,如下:/dev/sda即是root@cap-server:~#fdisk-lDisk/dev/loop0:63.28MiB,66355200bytes,129600sectorsUnits:......
  • 云服务器中docker部署nodejs项目
    1、部署项目前准备准备好了一台Linux云服务器或Ubuntu云服务器电脑安装好了xshell、xftp这两款软件已经开发完成了nodejs的项目2、Dockerfile文件的编写 在node项目中新建一个Dockerfile文件FROMdocker.io/node#在镜像容器中创建目录RUNmkdir-p/home/mbill......
  • # Docker安装使用Redis
    拉取最新版本redisdockerpullredis:7.2.4查看镜像dockerimages新建本地挂载配置文件夹(位置随意)1、创建文件夹(位置随意):data、confredis默认配置只能够本地连接、不能进行远程访问需要手动挂载redis配置文件mkdir-p/docker-root/redis_6379/datamkdir-p/d......
  • 从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像
    本文为从零开始写Docker系列第七篇,实现类似dockercommit的功能,把运行状态的容器存储成镜像保存下来。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgroups......
  • 【Docker】wordpress 容器化部署
    WordPress标准软件基于Bitnamiwordpress构建。当前版本为6.4.3你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取配置文件地址:https://gitee.com/qingplus/qingcloud-platformqinghub自动安装部署配置库什么是Wo......
  • webapi通过docker部署到Linux的两种方式
    docker安装官网删除dockersudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine安装sudoyuminstall-yyum-utilssudoyum-config-manage......
  • [nginx] 基于docker安装nginx
    0序环境信息OS:CENTOS7.9Docker:25.0.4Nginx:1.24.01安装步骤Step0安装docker略。可参见:[Docker]基于CENTOS7安装Docker环境-博客园/千千寰宇基于Docker安装MYSQL/Step1安装docker环境-博客园/千千寰宇Step1下载nginx镜像下载nginx镜......
  • Docker小册
    先挂一下大佬笔记:https://www.yuque.com/tmfl/cloud/naxbauDocker简介是什么为什么会有docker的出现?docker的理念是什么?总结解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。容器与虚拟机比较能干嘛去哪里下载Docker的......
  • Docker部署Django项目——基础
    1.服务器配置1.1centos7系统的安装centos-7-isos-x86_64安装包下载)VMware安装自定义配置选择对应的系统镜像一般选择内核4核、内存8g、硬盘80g相关配置1.2.网络配置1.2.1查看win电脑虚拟机VMnet8的ip使用ipconfig查看虚拟机的ip1.2.2配置虚拟机VMne......
  • 解决问题:java、mysql、docker、linux、redis、solr适合初级或者刚入门的大学生
    java、mysql、redis、linux、docker中的问题Java问题解决,idea问题解决调试,服务器问题解决,项目部署,项目调试linux服务器上的安装以及运行环境的部署docker的部署可做技术栈:java开发:javaweb,jsp,servlet,javase,spring,springboot,ssm服务器:linux问题docker问题,To......