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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 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
目录
相关文章
|
1月前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
19天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
44 3
docker push推送自己搭建的镜像
|
23天前
|
Docker 容器
|
1月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
59 9
|
2月前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
2542 30
|
1月前
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
50 4
|
2月前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
2月前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
177 2
|
2月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
290 1
|
2月前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
77 0