03-Docker容器命令

news2025/1/16 22:00:45

新建启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

常用的参数:

  • --name=new_name:为容器指定一个名称
  • -d:后台运行容器并返回容器ID,即启动守护式容器
  • -i:以交互模式(interactive)运行容器,通常与-t同时使用
  • -t:为容器重新分配一个伪输入终端(tty),通常与-i同时使用。也即启动交互式容器(前台有伪终端,等待交互)
  • -e:为容器添加环境变量
  • -P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口
  • -p:指定端口映射
  • -v:为容器添加环境变量

-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

示例:

docker run -d -p 3306:3306 \
           --privileged=true \
           -v /app/mysql/log:/var/log/mysql \
           -v /app/mysql/data:/var/lib/mysql \
           -v /app/mysql/conf:/etc/mysql/conf \
           -e MYSQL_ROOT_PASSWORD=root \
           --name mysql \
           mysql:5.7

启动交互式容器

以交互方式启动ubuntu镜像

# -i 交互模式
# -t 分配一个伪输入终端tty
# ubuntu 镜像名称
# /bin/bash(或者bash) shell交互的接口
docker run -it ubuntu /bin/bash

退出交互模式
方式1:

# 在交互shell中exit即可退回宿主机
exit;

方式2:使用快捷键ctrl + P + Q
区别:
方式1 退出后,容器会停止(没停止啊?????);
方式2 退出后容器依然正在运行。

启动守护式容器

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

docker run -d 容器名

注意事项:
如果使用docker run -d ubuntu尝试启动守护式的ubuntu,会发现容器启动后就自动退出了。
因为Docker容器如果在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如toptail),就会自动退出。

列出正在运行的容器

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

docker ps [OPTIONS]

常用参数:

  • -a:列出当前所有正在运行的容器 + 历史上运行过的容器
  • -l:显示最近创建的容器
  • -n:显示最近n个创建的容器
  • -q:静默模式,只显示容器编号

容器其他启停操作

启动已经停止的容器

docker start 容器ID或容器名

重启容器

docker restart 容器ID或容器名

停止容器

docker stop 容器ID或容器名

强制停止容器

docker kill 容器ID或容器名

删除容器

删除已经停止的容器:

docker rm 容器ID或容器名

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

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

docker rm -f 容器ID或容器名

一次删除多个容器实例:

docker rm -f ${docker ps -a -q}

# 或者
docker ps -a -q | xargs docker rm

查看容器日志

docker logs 容器ID或容器名

查看容器内运行的进程

docker top 容器ID或容器名

查看容器内部细节

docker inspect 容器ID或容器名

进入正在运行的容器

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

docker exec -it 容器ID/容器名称 bashShell
docker exec -it mysql /bin/bash
docker exec -it redis /bin/bash
#进入mysql后 如下命令连接
mysql -uroot -p

# 进入redis后 如下命令连接
redis-cli

②:重新进入:

docker attach 容器ID

docker execdocker attach 区别:

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

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

容器和宿主机文件拷贝

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

docker cp 容器ID:容器内路径 目的主机路径

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

docker cp 主机路径 容器ID:容器内路径

导入和导出容器

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

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

示例:

# 导出
# docker export 容器ID > tar文件名
docker export abcjkuo98897979kjk > aaa.tar

# 导入
# cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号
docker aaa.tar | docker import - test/mytest:1.0.1

将容器生成新镜像

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

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

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag]

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

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

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

本地镜像发布到阿里云

image.png

容器数据卷

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

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

特点:

  • 数据卷可以在容器之间共享或重用数据
  • 卷中的更改可以直接实施生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

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

docker run -it --privileged=true -v 宿主机绝对路径目录:容器内目录[rw | ro] 镜像名

–privileged=true -> privileged关键字是docker 0.6版本中引入docker 使用该参数 container内的root拥有真正的root权限。 否则,container内的root只是外部的一个普通用户权限。

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

权限:

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

容器卷的继承:

# 启动一个容器
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

所有命令示意图

在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【三十天精通Vue 3】第二十九天 Vue 3中的Mock数据模拟详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、Mock数据模拟的概述1.1 为什么需要Mock数据模拟?1.2 Mock数据模拟的优点和缺点二、安装和配置Mock.js库2.1 使用NPM安…

TIA博途Wincc通过区域指针中的作业信箱功能实现自动写入配方数据的具体方法

TIA博途Wincc通过区域指针中的作业信箱功能实现自动写入配方数据的具体方法 前面和大家分享了博途Wincc中配方功能的具体使用方法,具体内容可参考以下链接中的内容: TIA博途Wincc中自定义配方画面的具体方法示例 上面的例子中,向PLC写入数据时是通过点击屏幕上的按钮来实现…

scrapy爬虫标准流程

Scrapy爬虫的标准流程一般包括以下几个步骤: 1、明确需求和目标网站的结构,确定需要爬取的数据以及爬取规则。 2、创建一个Scrapy项目,使用命令行工具创建一个新的Scrapy项目。 3、定义数据模型和item,即确定要爬取的数据结构。…

基于SpringBoot开发的仓库管理系统

系统概要 仓库管理系统总共分为两个大的模块,分别是系统模块和业务模块。其中系统模块和业务模块底下又有其子模块。 功能模块 一、业务模块 1、客户管理 客户列表 客户分页和模糊查询 客户添加、修改、删除、批量删除 2、供应商管理 供应商列表 供应商分…

sql注入合集

1.Access注入 http://110.40.154.212:8002/Production/PRODUCT_DETAIL.asp?id1513 and exists(select count(*) from admin) #存在admin表,继续爆,还存在job,email,product等http://110.40.154.212:8002/Production/PRODUCT_DETAIL.asp?id1513 and e…

软考A计划-重点考点-专题二(程序语言)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

GP04丨网格框架初版

量化策略开发,高质量社群,交易思路分享等相关内容 正文 大家好,今天我们分享股票社群第4期量化策略——网格策略。 在上一期中,我们分享了ETF轮动策略Plus版本(基于资金管理的ETF增强策略),本…

Linux-Day02

Linux-Day02 课程内容 软件安装 项目部署 1. 软件安装 1.1 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压&am…

哪种蓝牙耳机音质最好佩戴舒服?佩戴舒适音质好的蓝牙耳机

蓝牙无线耳机基本成为了大家的标配,大多数 对于外观与舒适性十分看重,如今的蓝牙耳机市场已经很成熟了,基本能满足大多数人,下面就来分享几款佩戴并且音质表现也不错的蓝牙耳机。 一、南卡小音舱Lite2蓝牙耳机 参考价格&#xf…

【机器人仿真Webots教程】-控制器编程指南

Webots controller编程指南 文章目录 Webots controller编程指南1. controller程序设计流程1.1 controller与场景树节点1.2 进程角度分析1.3 仿真时间步长与控制器程序更新延时步长 2. 例解控制器编程2.1 Hello world 实例2.2 传感器读取实例2.3 执行器的使用2.4 传感器与执行器…

距离保护整定计算中分支系数公式理解

在一般的距离保护II段和III段的整定计算中,分支系数的计算是必须要的,本文选自电力系统继电保护(第二版)(张保会老师主编)P94-P97页的例题,分析其中分支系数的计算公式。 我们在前面的章节中知道…

springboot+jsp影院管理系统9ufid电影票预订管理系统

项目介绍开发语言:Java 框架:springboot 技术:JSP JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器 功能介绍 主要对…

HTB靶机08-Nineveh-WP

008-nineveh 靶机IP: 10.10.10.43 scan Nmap 扫描 ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.43 -p- Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-07 17:40 CST Nmap scan report for nineveh.htb (10.10.10.43) Host is up (0.34s …

linux系统安装nginx 支持ssl

目录 1. 开放80端口和443端口 2. 安装nginx的基础环境 -> 2.1 安装gcc-c编译器 -> 2.2 安装pcre包 -> 2.3 安装zlib包(可能安装过) 3. 安装nginx -> 3.1 创建文件夹 -> 3.2 在官网下载nginx包到服务器内 -> 3.3 解压tar.gz,并进入nginx-1.19.9 -&g…

[数据库系统] 二、表的基本操作(educoder)

目录 第一关:修改表名 一、知识点 ①查看所有表:show tables; ②查看表基本结构:DESCRIBE 表名; 或 简写为 desc 表名; ③查看创建表的语句:SHOW CREATE TABLE 二、educoder 第二关: 修改表结构-1 一、…

面对AI“龙卷风”破坏力 白宫“软着陆”欧盟“硬防御”

ChatGPT的风靡与风险将OpenAI的CEO山姆奥特曼(Sam Altman)送进白宫,他被蹲守在美国总统府邸的记者们围追,面对5月4日白宫发起的AI风险治理会议,奥特曼很官方地给出“重要也很及时”的回应,自信的反复强调“…

【TCP三次握手】

文章目录 TCP基本认识TCP头部格式为什么需要 TCP 协议? TCP 工作在哪一层?什么是 TCP ?如何唯一确定一个 TCPUDP 和 TCP 有什么区别呢?分别的应用场景是?TCP 和 UDP 可以使用同一个端口吗? TCP连接建立TCP三…

“SCSA-T学习导图+”系列:深入浅出理解OSPF链路状态信息

本期引言 本文是基于读者对OSPF有一定了解的基础上,重点理解OSPF收集链路状态的过程。我们都知道在OSPF的工作原理中,主要是通过泛洪不同种类的LSA来进行LSDB的同步,最后通过SPF算法来计算路由,达到全网互通的目的。所以我们研究…

camunda流程变量如何使用

Camunda是一个流程引擎,它支持在流程执行期间存储和操作流程变量。流程变量是一个值或对象,可以与Camunda中的流程实例、任务或执行相关联。 流程变量在Camunda中有很多用途。以下是一些常见的用途: 1、传递数据:流程变量可以用于…

通讯录备份的方法你知道几个?分享iPhone通讯录3个备份技巧!

案例:苹果通讯录的备份方法 【我想把 iPhone 8重置一下,把里边乱七八糟的东西清一清,软件什么的重新下了就好了,设置什么的也不需要备份,只想重置完了能恢复一下通讯录,求解答!】 在如今的移动…