Docker镜像操作、容器操作、数据卷及挂载数据卷

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,经济版 1GB 1个月
简介: Docker镜像操作、容器操作、数据卷及挂载数据卷

一、镜像操作


镜像名称一般分为两部分组成:[repository]:[tag]


在没有指定tag时,默认是latest,代表最新版本的镜像


查看镜像:docker images


格式:docker images [OPTIONS][REPOSITORY[:TAG]]


参数:


-a、--all 显示所有图像(默认情况下隐藏中间图像)


      --digedts 显示摘要


-f、 --filter filter 根据提供的条件过滤输出


      --format string 使用Go模板精确打印图像


      --no-trunc 不截断输出


-q、--quiet 仅显示图像ID


删除镜像:docker rmi


格式:docker rmi [OPTIONS]IMAGE [IMAGE...]


参数:


-f、 --force 强制删除图像


      --no-prune不删除未标记的父项


从服务拉取镜像:docker pull


格式:docker pull [OPTIONS]NAME[:TAG|@DIGEST]


参数:


-a、 --all-tags 下载存储库中的所有标记图像


       --disable-content-trust 跳过图像验证(默认为true)


       --platform string 如果服务器支持多平台,则设置平台


q、  --quit 抑制详细输出


推送镜像到服务:docker push


格式:docker push [OPTIONS]NAME[:TAG]


参数:


-a,--all-tags 推送存储库中所有已标记的图像。


      --disable-content-trust 跳过图像签名(默认为True)。


-q,--quiet 禁止详细输出


保存镜像为一个压缩包:docker save


格式:docker save [OPTIONS]IMAGE [IMAGE..]


参数:


-o,--output string 写入文件,而不是STDOUT


加载压缩包为镜像:docker load


格式:docker load [OPTIONS]


参数:


-i、 --input string 读取tar存档文件,而不是STDIN


-q、--quiet抑制负载输出


注意:查询对应命令的详细格式和参数在对应参数后面加上--help即可查询


案例:从DockerHub中拉取一个nginx镜像并查看


1、首先去镜像仓库搜索nginx镜像,地址:


Docker Hub Container Image Library | App Containerization

https://hub.docker.com/


2、根据查看的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx



3、通过命令:docker images查看拉取到的镜像



案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来


1、利用docker save导出镜像到磁盘


docker save -o nginx.tar nginx:latest



1.5、利用docker rmi删除本地的nginx:latest


docker rmi nginx:latest



2、使用docker load加载镜像


docker load -i nginx.tar


二、容器操作


案例:创建运行一个Nginx容器


去docker hub查看Nginx的容器运行命令


docker run --name containerName -p 80:80 -d nginx


命令解读:


● docker run:创建并运行一个容器


● --name:给容器起一个名字,比如叫containeName


● -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口


● -d:后台运行容器


● nginx:镜像名称,例如nginx


查看容器日志的命令:docker logs


t添加 -f 参数可以持续查看日志


查看容器状态:docker ps


添加-a参数查看所有状态的容器


删除容器:docker rm


不能删除运行中的容器,除非添加 -f 参数


进入容器:docker exec


命令是docker exec -it [容器名][要执行的命令]


-it:给当前进入容器创建已给标准输入、输出终端,允许我们与容器交互


exec命令可以进入容器修改文件,但是在容器内修改文件不推荐


案例:创建并进入redis容器,并执行redis-cli客户端命令,存入num=888


1、到DockerHub搜索Redis镜像,找到需要的版本,并拉取下来,并利用docker run命令运行Redis容器


docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes


2、进入redis容器


docker exec -it redis bash


3、执行redis-cli客户端命令


redis-cli


4、设置数据num=888


set num 666


三、数据卷操作


数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个目录


数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全


数据卷操作的基本语法如下:


docker volume [COMMAND]


docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:


create   创建一个volume


inspect  显示一个或多个volume的信息


ls          列出所有的volume


prune   删除未使用的volume


rm        删除一个或多个指定的volume


案例:创建一个数据卷,并查看数据卷在宿主机的目录位置


1、创建数据卷


docker volume create html


2、查看所有数据


docker volume ls



3、查看数据卷详细信息卷


docker volume inspect html



四、挂载数据卷


创建容器时,可以通过-v 参数来挂载一个数据卷到某个容器目录


docker run \                    创建并运行容器


 --name mn \                  给容器起个名字叫mn


 -v html:/root/html \        把html数据卷挂载到容器内的/root/html这个目录中


 -p 8080:80 \                  把宿主机的8080端口映射到容器内的80端口


 nginx \                          镜像名称


案例:创建一个nginx容器,修改容器内的html目录内的index.html内容


1、创建容器并挂载数据卷到容器内的html目录


docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx


2、进入html数据卷所在位置,并修改html内容


# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html


数据卷挂载方式:


-v volumeName:/targetContainerPath


如果容器运行时volume不存在,会自动被创建出来


docker run的命令可以通过-v参数挂载文件或目录到容器:


1、-v volume名:容器内目录


2、-v 宿主机文件:宿主内文件


3、-v 宿主机目录:容器内目录


数据卷挂载与目录直接挂载


数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找


目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
4天前
|
Docker 容器
Docker - 网络模式与容器网络互连
Docker的网络模式包括桥接模式、主机模式和覆盖网络模式,以及如何通过Docker的网络操作命令实现容器网络互连。
9 0
|
4天前
|
关系型数据库 MySQL Docker
Docker - 数据卷挂载与目录挂载的区别
Docker中数据卷挂载与目录挂载的区别,包括它们的定义、使用场景和命令差异。
11 0
|
4天前
|
存储 Ubuntu Linux
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
11 0
|
4天前
|
Ubuntu NoSQL 关系型数据库
在Ubuntu操作系统上安装/使用/卸载Docker容器引擎
这篇文章详细介绍了在Ubuntu操作系统上安装、配置、使用、基本操作以及卸载Docker容器引擎的步骤,包括配置Docker镜像加速和使用Docker部署Nginx、MySQL和Redis服务器的方法。
20 0
|
5天前
|
存储 Linux Go
Docker Volume - 目录挂载以及文件共享
Docker Volume - 目录挂载以及文件共享
7 0
|
5天前
|
Docker 容器
FunASR离线文件转写软件包3.0问题之Docker容器启动如何解决
FunASR离线文件转写软件包3.0问题之Docker容器启动如何解决
15 0
|
8天前
|
Docker 容器
Docker cp 将宿主机上的文件复制到容器中
Docker cp 将宿主机上的文件复制到容器中
10 0
|
5天前
|
监控 Ubuntu Docker
如何在Docker容器启动时自动运行脚本
【8月更文挑战第13天】在Docker容器启动时自动运行脚本可通过以下方式实现:1) 使用`ENTRYPOINT`或`CMD`指令在Dockerfile中直接指定启动脚本,如`ENTRYPOINT ["/startup.sh"]`;2) 启动容器时通过`--entrypoint`参数指定脚本路径;3) 利用supervisor等进程管理工具自动启动与监控脚本,确保其稳定运行。确保脚本具有执行权限并正确设置依赖资源路径。
|
14天前
|
Shell 云计算 Docker
零基础到容器技术大神,一键解锁Docker实战秘籍!从零搭建,见证你的技术飞跃,让代码在云端翩翩起舞!
【8月更文挑战第5天】在云计算与微服务当道的今天,容器技术如汹涌浪潮般席卷IT领域。对新手而言,它或许充满神秘,但无须担忧,让我们一同揭开它的面纱。容器是一种轻量级软件打包技术,允许应用及其依赖被打包,在独立的虚拟环境中运行。Docker作为容器界的明星,简化了容器的创建与管理。从安装Docker开始,运行首个容器,深入容器内部执行命令,直至构建自定义镜像,我们将逐步掌握这项关键技术。这不仅是一场技术之旅,更是思维方式的革新,让我们携手探索未来。
56 6