容器命令

简介: 常用Docker参数:-d后台运行,-i/-t交互模式,-p端口映射,-v挂载数据卷。支持容器启停、日志查看、文件拷贝、导入导出及commit生成新镜像。注意权限问题可加--privileged=true解决。数据卷实现持久化与共享。

常用的参数:


--name:为容器指定一个名称

-d:后台运行容器并返回容器ID,也即启动守护式容器

-i:以交互模式(interactive)运行容器,通常与-t同时使用

-t:为容器重新分配一个伪输入终端(tty),通常与-i同时使用。也即启动交互式容器(前台有伪终端,等待交互)

-e:为容器添加环境变量

-P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口

-p:指定端口映射

-p指定端口映射的几种不同形式:


-p hostPort:containerPort:端口映射,例如-p 8080:80

-p ip:hostPort:containerPort:配置监听地址,例如 -p 10.0.0.1:8080:80

-p ip::containerPort:随机分配端口,例如 -p 10.0.0.1::80

-p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多个端口映射,例如-p 8080:80 -p 8888:3306

启动交互式容器

以交互方式启动ubuntu镜像

退出交互模式:

方式1:

方式2:使用快捷键ctrl + P + Q

方式1 退出后,容器会停止;

方式2 退出后容器依然正在运行。

启动守护式容器

大部分情况下,我们系统docker容器服务时在后台运行的,可以通过-d指定容器的后台运行模式:

注意事项:

如果使用docker run -d ubuntu尝试启动守护式的ubuntu,会发现容器启动后就自动退出了。

因为Docker容器如果在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如top、tail),就会自动退出。

列出正在运行的容器

列出所有正在运行的容器:

常用参数:


-a:列出当前所有正在运行的容器+历史上运行过的容器

-l:显示最近创建的容器

-n:显示最近n个创建的容器

-q:静默模式,只显示容器编号

容器其他启停操作

启动已经停止的容器

重启容器

停止容器

强制停止容器

删除容器

删除已经停止的容器:

删除容器是 docker rm,删除镜像是 docker rmi,注意区分。

强制删除正在运行的容器:

一次删除多个容器实例:

查看容器日志

查看容器内运行的进程

查看容器内部细节

进入正在运行的容器

进入正在运行的容器,并以命令行交互:

重新进入:

docker exec 和 docker attach 区别:


attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止

exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止

如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。

容器和宿主机文件拷贝

容器内文件拷贝到宿主机:

宿主机文件拷贝到容器中:

导入和导出容器

export:导出容器的内容流作为一个tar归档文件(对应import命令);

import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令);

示例:

将容器生成新镜像

docker commit提交容器副本使之成为一个新的镜像。

docker 启动一个镜像容器后, 可以在里面执行一些命令操作,然后使用docker commit将新的这个容器快照生成一个镜像。

Docker挂载主机目录,可能会出现报错:cannot open directory .: Perission denied。

解决方案:在命令中加入参数 --privileged=true。

CentOS7安全模块比之前系统版本加强,不安全的会先禁止,目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了。如果要开启,一般使用 --privileged=true,扩大容器的权限解决挂载没有权限的问题。也即使用该参数,容器内的root才拥有真正的root权限,否则容器内的root只是外部的一个普通用户权限。

容器数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过UnionFS,提供一些用于持续存储或共享数据。

特性:卷设计的目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

特点:


数据卷可以在容器之间共享或重用数据

卷中的更改可以直接实施生效

数据卷中的更改不会包含在镜像的更新中

数据卷的生命周期一直持续到没有容器使用它为止

运行一个带有容器卷存储功能的容器实例:

Shell
运行代码
复制代码
1
docker run -it --privileged=true -v 宿主机绝对路径目录:容器内目录[rw | ro] 镜像名

可以使用docker inspect查看容器绑定的数据卷。

权限:


rw:读写

ro:只读。如果宿主机写入内容,可以同步给容器内,容器内可以读取。

容器卷的继承:

Shell
运行代码
复制代码
1
2
3
4
5

启动一个容器

docker run -it --privileged=true /tmp/test:/tmp/docker --name u1 ubuntu /bin/bash

使用 --volumes-from 继承 u1的容器卷映射配置

docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu

目录
相关文章
|
1天前
|
存储 数据安全/隐私保护 索引
ELK环境搭建
基于ELK架构的日志系统,使用ElasticSearch存储与索引日志,Kibana展示搜索,Filebeat采集并解析。部署于192.168.xxx.xxx,通过Pipeline处理日志格式,支持按策略过期删除。采用HostPath挂载实现日志收集,适用于CCE无PVC环境,确保应用日志高效可视化管理。(238字)
25 0
|
1天前
|
缓存 安全 Java
Spring框架
Spring的IOC(控制反转)将对象创建交给容器管理,实现解耦;DI(依赖注入)则在运行时由容器自动注入依赖对象。通过注解如@Component、@Service等声明Bean,结合@Autowired或@Resource完成注入,提升灵活性与可维护性。
8 0
|
1天前
|
存储 数据采集 缓存
状态检索:如何快速判断一个用户是否存在?
本文探讨如何高效判断对象是否存在,对比有序数组、二叉树、哈希表等结构后,引出位图与布隆过滤器。位图利用bit级存储,节省空间;布隆过滤器通过多哈希函数进一步压缩空间,支持快速存在性查询,广泛应用于缓存、爬虫等场景,以极小错误率换取高性能与低内存开销。
18 0
|
1天前
|
存储 SQL 关系型数据库
数据库
本内容系统讲解MySQL核心知识,涵盖char与varchar区别、事务ACID特性及隔离级别、索引结构(B+树)、聚簇与二级索引、回表查询、索引创建与失效场景,并结合explain执行计划、慢SQL定位及SQL优化实践,全面解析数据库性能调优关键点。
7 0
|
1天前
|
存储 JSON 数据格式
云文档环境搭建
本方案基于Nextcloud与OnlyOffice搭建私有云文档系统。通过Docker部署Nextcloud 29.0.3和OnlyOffice DocumentServer 8.1.0,实现文档在线编辑与协作。配置时需安装OnlyOffice插件,生成并填入密钥完成服务对接。用户可上传、分享文件并实时协同编辑,支持Excel等格式。新用户默认文件可通过清空skeleton目录取消。系统访问地址:Nextcloud为http://192.168.xxx.xxx:9081/,OnlyOffice为http://192.168.xxx.xxx:9080/。
26 0
|
1天前
|
存储 算法 Java
哈希检索:如何根据用户 ID 快速查询用户信息?
哈希表通过哈希函数将键转化为数组下标,实现O(1)级查询。它结合数组的随机访问与链表或红黑树处理冲突,兼顾效率与动态扩展,但需注意哈希冲突、装载因子及有序性缺失等问题,适用于高频查找场景。
16 0
|
1天前
|
存储 缓存 算法
非线性结构检索:数据频繁变化的情况下,如何高效检索?
通过树状结构与跳表优化数据检索,本文深入讲解二分查找在非线性结构中的应用。对比有序数组、二叉检索树与跳表的组织方式与效率,揭示如何通过平衡划分检索空间实现O(log n)查询,并探讨实际应用场景与性能权衡。
15 0
|
1天前
|
存储 安全 网络协议
web阶段
HTTP协议即超文本传输协议,基于TCP,规定客户端与服务器通信规则。常见请求方式有GET(获取数据)和POST(提交数据),主要区别在于参数传递位置、安全性及用途。状态码如200(成功)、404(未找到)、500(服务器错误)等用于标识响应结果。HTTP明文传输,端口80;HTTPS通过SSL加密,端口443,更安全但耗资源。转发是服务器内部跳转,一次请求;重定向由浏览器发起新请求,两次交互。Cookie通过Set-Cookie和Cookie头实现客户端会话跟踪,而Session依赖Cookie传递JSESSIONID,数据存于服务端,较安全但集群下需解决共享问题。
7 0
|
1天前
|
jenkins Java 持续交付
Jenkins前置配置
本文介绍Jenkins与GitLab集成的完整配置流程,包括:在GitLab创建Jenkins账号并配置SSH密钥;Jenkins中设置GitLab API Token、关闭host key验证;配置全局Git用户名邮箱;添加私钥凭据用于拉取代码;节点服务器环境准备,部署JDK、Maven、Node等开发工具,并配置Docker环境;最后在Jenkins中添加SSH节点,指定远程工作目录与Java路径,实现任务分发与持续集成。
21 0