【Docker-4】Docker 命令

1、镜像管理命令

在这里插入图片描述

docker  images		#查看本机镜像
[root@docker-0001 ~]# docker imagesdocker  search  镜像名称				#从官方仓库查找镜像
[root@docker-0001 ~]# docker search busybox	 #需要联网,本次不用操作docker  pull  镜像名称:标签				#下载镜像
[root@docker-0001 ~]# docker pull busybox	 #从华为的镜像加速站下载docker  save  镜像名称:标签  -o  备份镜像名称.tar	#备份(导出)镜像为tar包
[root@docker-0001 ~]# docker save busybox:latest -o busybox.tardocker  load -i  备份镜像名称		#恢复(导入)备份的镜像文件
[root@docker-0001 ~]# scp busybox.tar 192.168.1.32:/root
[root@docker-0002 ~]# docker  load -i busybox.tardocker  rmi  镜像名称:标签		#删除镜像
[root@docker-0002 ~]# docker rmi busybox:latest docker  history  镜像名称:标签	#查看镜像的制作历史
[root@docker-0001 ~]# docker history centos:7 docker  inspect  镜像名称:标签	#查看镜像的详细信息
[root@docker-0001 ~]# docker history centos:7 
[root@docker-0001 ~]# docker inspect myos:httpd docker  tag  镜像名称:标签  新的镜像名称:新的标签	#创建新的镜像名称和标签
[root@docker-0001 ~]# docker tag busybox:latest nsd:test
[root@docker-0001 ~]# docker images 拷贝教学环境镜像到docker-0001主机,并导入
[root@ecs-proxy ~]# scp /root/5/public/myos.tar.xz 192.168.1.31:/root/
[root@docker-0001 ~]# docker load -i myos.tar.xz

容器管理命令

在这里插入图片描述

启动容器
docker  run 命令:docker   run   -参数   镜像名称:镜像标签    启动命令
docker-0001根据myos:v2009镜像启动并进入一个容器
[root@docker-0001 ~]# docker  run  -it  myos:v2009  /bin/bash		#/bin/bash为容器内的命令,容器内存在,才可以使用[root@89d1ec3a0dc8 /]# exit
[root@docker-0001 ~]# docker  run  -itd myos:httpd  	#启动httpd,是个服务,要加d,放后台才能运行启动容器时指定名字
[root@docker-0001 ~]# docker run -itd --name apache myos:httpd 查看容器:docker   ps   [ -a   所有容器id ]   [  -q  只显示容器 id  ]
[root@docker-0001 ~]# docker ps
[root@docker-0001 ~]# docker ps -a	#ps  -a 查看创建的所有的容器(运行的和已经停止的)
[root@docker-0001 ~]# docker ps -q		#ps -q 查看运行中容器的ID值
[root@docker-0001 ~]# docker ps -aq		#ps -aq查看所有容器的id,用于脚本对容器的管理删除容器:docker   rm   容器id
[root@docker-0001 ~]# docker rm 512567e6f64f删除正在使用的容器时,会报错,无法删除,需要先停止容器,再执行删除命令
[root@docker-0001 ~]# docker stop 512567e6f64f		#停止容器
[root@docker-0001 ~]# docker rm 512567e6f64f删除所有的容器:支持命令行重录,前一个命令的结果可以作为后一个命令的参数
[root@docker-0001 ~]# docker rm -f $(docker ps -aq)		#$()用来获取命令的执行结果临时启动容器 --rm,容器结束后自动删除,在内存中运行,退出后直接没有
第一个终端启动centos:7容器
[root@docker-0001 ~]# docker run -it --name test1 centos:7 
[root@e5f780c059f6 /]# 第二个终端查看,可以看到结果
[root@docker-0001 ~]# docker ps | grep test1回到第一个终端,退出容器
[root@e5f780c059f6 /]# exit在第二个终端查看,可以看到已经停止,但是容器还在,没有删除
[root@docker-0001 ~]# docker ps  -a | grep test1此时在第一个终端再次创建一个容器test2,加上--rm的选项查看结果
[root@docker-0001 ~]# docker run -it --name test2 --rm centos:7第二个终端查看,可以看到结果
[root@docker-0001 ~]# docker ps | grep test2回到第一个终端,退出容器
[root@e5f780c059f6 /]# exit在第二个终端查看,可以看到已经停止,但是容器已经没有
[root@docker-0001 ~]# docker ps  -a | grep test2容器管理命令启动、停止、重启- [x] docker   start   	容器id- [x] docker   stop   	容器id- [x] docker   restart   	容器id[root@docker-0001 ~]# docker rm -f $(docker ps -aq)
[root@docker-0001 ~]# docker run -itd myos:nginx 
查看容器信息:docker   inspect    容器id
[root@docker-0001 ~]# docker inspect 38b8ee2a8754
......"Gateway": "172.17.0.1","IPAddress": "172.17.0.2",
......
[root@docker-0001 ~]# curl http://172.17.0.2
Nginx is running ![root@docker-0001 ~]# docker stop 38b8ee2a8754
[root@docker-0001 ~]# docker start 38b8ee2a8754
[root@docker-0001 ~]# docker restart 38b8ee2a8754拷贝文件
docker cp 本机文件路径      容器id:容器内路径(上传)
docker cp 容器id:容器内路径  本机文件路径(下载)拷贝宿主机文件到容器
#在刚刚启动的第一个容器终端中执行
[root@docker-0001 ~]# docker run -it --name test myos:v2009 #另外开一个docker-0001的终端操作
[root@docker-0001 ~]# docker cp  /root/busybox.tar test:/root/	在刚刚启动的第一个容器终端中查看结果
[root@b6a1ab762bd5 /]# ls /root/
busybox.tar拷贝容器内文件到宿主机
[root@docker-0001 ~]# docker cp test:/etc/hosts ./
[root@docker-0001 ~]# ls		#有hosts文件
busybox.tar  hosts  myos.tar.xz# 查看容器日志  docker logs 容器ID
[root@docker-0001 ~]# docker run  -itd myos:nginx 
[root@docker-0001 ~]# docker logs  99d		#99d为nginx容器的id,logs查看没有信息[root@docker-0001 ~]# docker inspect 99d
[root@docker-0001 ~]# curl 172.17.0.3/wfr		#访问一个不存在的页面
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.17.6</center>
</body>
</html>
[root@docker-0001 ~]# docker logs  99d		#再次查看有,有信息
2023/06/11 12:45:32 [error] 7#0: *1 open() "/usr/local/nginx/html/wfr" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /wfr HTTP/1.1", host: "172.17.0.3"但是如果apache的服务也是同样测试,可能结果就不显示,是因为软件原因连接容器,启动新进程:docker   exec   -it    容器id    命令
[root@docker-0001 ~]# docker run  -it myos:v2009
[root@164a7b1a6c57 /]# exit		#此时容器时关闭的[root@docker-0001 ~]# docker start  164a7b1a6c57	#启动myos:v2009的容器
[root@docker-0001 ~]# docker exec -it 164a7b1a6c57 /bin/bash		#根据容器ID,进入容器
[root@164a7b1a6c57 /]# ps -ef			#两个bash进程
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:49 pts/0    00:00:00 /bin/bash
root        42     0  0 12:50 pts/1    00:00:00 /bin/bash
root        63    42  0 12:50 pts/1    00:00:00 ps -ef		
[root@164a7b1a6c57 /]# exit		     #退出连接容器启动进程:docker    attach   容器id
attach 以上帝进程的身份,进入容器内部,当执行exit退出容器时,会结束整个容器,通常用于在测试时,查看报错信息;
[root@docker-0001 ~]# docker attach 164a7b1a6c57
[root@164a7b1a6c57 /]# ps -ef				#一个bash进程(上帝进程)
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:49 pts/0    00:00:00 /bin/bash
root        64     1  0 12:52 pts/0    00:00:00 ps -ef
[root@164a7b1a6c57 /]# exit			#退出,容器关闭[root@docker-0001 ~]# docker start 164a7b1a6c57		#启动被关闭容器
[root@docker-0001 ~]# docker attach 164a7b1a6c57	#Ctrl + p + q  退出容器,但不会停止容器的运行#在对容器的使用过程中,都是使用exec,新开一个进程的方式进入容器,进行操作;
#而attach 往往应用于容器内部进行交互、排查问题、调试等操作;

简单镜像制作

获取基础镜像
方法一:docker-0001主机备份centos:7镜像,拷贝到docker-0002导入
[root@docker-0001 ~]# docker save centos:7 -o centos.tar
[root@docker-0001 ~]# scp centos.tar 192.168.1.32:/root/
[root@docker-0002 ~]# docker load -i centos.tar 方法二:docker-0002主机直接下载
[root@docker-0002 ~]# docker pull centos:7commit 自定义镜像
使用镜像启动容器,在该容器基础上修改,另存为一个新镜像- [x] docker  run  -it    centos:latest   /bin/bash- [x] 配置 yum,安装软件,系统配置- [x] docker  commit  容器id   新镜像名称: 新镜像标签在docker-0001创建一个centos的容器
[root@docker-0002 ~]# docker run -it --name mycentos centos:7
[root@cb458c4e9ede /]# cd /etc/yum.repos.d/       
[root@cb458c4e9ede yum.repos.d]# rm -rf *
[root@cb458c4e9ede yum.repos.d]# curl http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo -so /etc/yum.repos.d/CentOS-Base.repo	#下载华为云的yun仓库
[root@cb458c4e9ede yum.repos.d]# yum -y install net-tools psmisc iproute vim-enhanced bash-completion tree
[root@cb458c4e9ede yum.repos.d]# yum clean all		#清除yum缓存,减小容器大小,用于镜像制作
[root@cb458c4e9ede yum.repos.d]# exit commit 提交容器,生成新的镜像;mycentos为容器的名字
[root@docker-0002 ~]# docker commit mycentos mycentos:latest
[root@docker-0002 ~]# docker images		#mycentos就是新生成的镜像
[root@docker-0002 ~]# docker rm mycentos	#删除容器使用 docker  run 验证新的镜像
[root@docker-0002 ~]# docker history mycentos:latest		#查看历史镜像,多出一个镜像层
[root@docker-0002 ~]# docker run -it mycentos:latest 
[root@aa14feea7b4e /]# yum repolist		
[root@aa14feea7b4e /]# ifconfig
[root@aa14feea7b4e /]# exit

容器内部署应用

删除之前所有的容器
[root@docker-0002 ~]# docker rm -f $(docker ps -aq)
[root@docker-0002 ~]# docker run -it --name myapache mycentos:latest此时就可以在容器里面安装相关的软件包
[root@e0e8f8596277 /]# yum -y install httpd php
[root@e0e8f8596277 /]# echo 'hello world' > /var/www/html/index.html
[root@e0e8f8596277 /]# pstree -p		#只有bash的进程#因为容器内并没有systemd的服务,无法使用systemctl来启动httpd的服务
#查看httpd的服务文件,获取环境变量文件和服务启动命令
[root@e0e8f8596277 /]# cat /lib/systemd/system/httpd.service 
........
[Service]
EnvironmentFile=/etc/sysconfig/httpd		#环境变量文件
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND		#启动命令,$OPTIONS 此环境变量为空,可以不用写
[root@e0e8f8596277 /]# cat /etc/sysconfig/httpd		#从环境变量文件中,获取环境变量
......
LANG=C
[root@e0e8f8596277 /]# export LANG=C		#设置语言,避免出现不必要的字符集问题,不然容易出现乱码
[root@e0e8f8596277 /]# /usr/sbin/httpd -DFOREGROUND		#启动httpd服务,在前台运行
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message另外开一个docker-0002终端,通过提示的地址172.17.0.2
[root@docker-0002 ~]# curl 172.17.0.2
hello world此时容器内容的终端是被占用的,是在前台运行的,如果关闭,不能够再次访问httpd,若想要退出,使用ctrl + pq
[root@docker-0001 ~]# docker exec -it myapache /bin/bash
[root@e0e8f8596277 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:17 pts/0    00:00:00 /bin/bash
root        27     1  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
apache      28    27  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
apache      29    27  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
apache      30    27  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
apache      31    27  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
apache      32    27  0 13:20 pts/0    00:00:00 /usr/sbin/httpd -D
root        54     0  0 13:27 pts/1    00:00:00 /bin/bash
root        76    54  0 13:27 pts/1    00:00:00 ps -ef
[root@e0e8f8596277 /]# exit

补充

名称空间:  是指可以对系统资源空间进行分割隔离的技术,例如:创建一个虚拟机,在虚拟机里的所有操作,都不会对真实机造成影响。名称空间分为六大类,可以从各个方面来对系统资源空间进行隔离;UTS、NETWORK、MOUNT、USER、PID、IPCUTS:   #主机名命名空间,作用:分割主机名,即在容器内修改主机名,不会对宿主机的系统造成影响,实现主机名的隔离;NETWORK:网络命名空间,作用:分割网络,即容器内的网络配置和宿主机之间相互不受干扰;例如:#在真实机器上的网卡名为ens33,IP地址为192.168.1.10/24;#而在容器内的网卡名可以为eth0,ip地址为10.10.10.10/24;     MOUNT:#挂载命名空间,作用:隔离文件系统,在容器内挂载的光盘,宿主机是无法看到里面的内容的;例如:#在linux系统上,创建一个虚拟机,在真机的/var/lib/ftp中挂载了一个光盘文件,但是在虚拟机的/var/lib/ftp中是没有光盘内容的,这就是MOUNT隔离;USER:#用户命名空间,作用:隔离用户,即容器内创建的用户不能用于登录宿主机,真机机里创建的用户也不能作用于容器;PID:#进程命名空间,作用:为了防止容器和宿主机中的进程冲突;例如:#在真实机中,有一个服务: nfs,PID为2250;#在容器内,也有一个服务: chrony,PID为2250;#真实机中用户,杀死(kill) PID号为2250的进程时,并不会对容器内的进程2250产生影响;#而容器内的用户,杀死(kill) PID号为2250的进程时,也并不会对真实机内的进程2250产生影响;IPC:#信号向量命名空间,作用:通常和PID一起使用;#用户杀死一个进程时,实际上是向进程发送一个信号(IPC),进程接收到这个信号后会执行对应的操作;

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

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

相关文章

Qt前端技术:2.QSS

border-style&#xff1a;后边是两个参数的话第一个参数改变上下的style 第二个参数改变左右的style 如果后边是三个参数的话第一个参数改变上边的style第二个参数改变左右的style&#xff0c;第三个参数改变的下边的style 如果后边是四个参数的话对应的顺序为上&#xff0c;右…

掌控时间的尝试:基于Flask的自卷系统设计与实现

Gitee源代码仓库&#xff1a;Strong: 一个自卷系统 (gitee.com) 长期苦于自己的时间如脱缰野马&#xff0c;难以掌控&#xff0c;无法投入到我认为自己想做的事情中去。纯粹的自律实在不可靠&#xff0c;我希望借助一些外力来帮助自己挣脱泥潭&#xff0c;于是我制作了这个实验…

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数&#xff08;重点&#xff09; 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…

旅游景区项目信息化建设运营方案:PPT47页,附下载

关键词&#xff1a;智慧景区解决方案&#xff0c;智慧景区建设&#xff0c;智慧景区开发与管理&#xff0c;智慧景区建设的意义&#xff0c;智慧景区管理 一、旅游景区项目信息化建设背景 1、旅游业发展迅速&#xff1a;随着旅游业的不断发展&#xff0c;游客对旅游体验的需求…

Flink(十)【处理函数】

前言 冬天学习成本太高了&#xff0c;每天冻得要死&#xff0c;自习室人满为患&#xff0c;确实是辛苦。学校基本的硬件条件差的一批&#xff08;图书馆贼小贼偏僻、老教室暖气还没有地板热、空教室还得自己一个一个挨着找&#xff09;&#xff0c;个体无法改变环境只能顺应了&…

【ARM Trace32(劳特巴赫) 高级篇 21 -- Trace 系统性能分析 Performance Analyzer】

请阅读【Trace32 ARM 专栏导读】 文章目录 Performance AnalyzerPerf 操作步骤采样对象PC采样对象Memory采样对象 TaskPerformance Analyzer sample-based profiling 通常也叫做Trace32 的性能分析(Perf), 这个功能是通过周期性的采样来实现的。被采样到的数据可以被用于统计…

Apache Flink(十七):Flink On Standalone任务提交-Standalone Application模式

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。 环境 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下&#xff1a; version: "2.2" services:jobmanager:image: flink:1.18.0-scala_2.12container_name: jobmanagerports:…

基于RocketMQ实现分布式事务

前言 在上一篇文章Spring Boot自动装配原理以及实践我们完成了服务通用日志监控组件的开发&#xff0c;确保每个服务都可以基于一个注解实现业务功能的监控。 而本文我们尝试基于RocketMQ实现下单的分布式的事务。可能会有读者会有疑问&#xff0c;之前我们不是基于Seata完成了…

AIGC:阿里开源大模型通义千问部署与实战

1 引言 通义千问-7B&#xff08;Qwen-7B&#xff09;是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样&#xff0c;覆盖广泛&#xff0c;包括大量网络文本、专业书籍…

百度侯震宇:AI原生与大模型将从三个层面重构云计算

12月20日&#xff0c;2023百度云智大会智算大会在北京举办&#xff0c;大会以「大模型重构云计算&#xff0c;Cloud for AI」为主题&#xff0c;深度聚焦大模型引发的云计算变革。 百度智能云表示&#xff0c;为满足大模型落地需求&#xff0c;正在基于「云智一体」战略重构…

ubuntu qt 源码编译

官方源码下载地址 : 源码地址 选择要下载的版本 dmg结尾的是MacOS系统里使用的Qt库&#xff0c;qt-everywhere-opensource-src-4.7.0是Qt源码包&#xff0c;有zip和tar.gz两个压缩格式的&#xff0c;两个内容是一样的&#xff0c;只是zip一般在Windows下比较流行&#xff0c;…

Java:语法速通

参考 菜鸟教程 java 继承 class 父类 { }class 子类 extends 父类 { }继承的特性&#xff1a; 子类拥有父类非private的属性和方法子类可以对父类进行扩展子类可以重写父类的方法使用extends只能单继承&#xff0c;使用implements可以变相的多继承&#xff0c;即一个类继承…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景&#xff08;解决的问题&#xff09;二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

在Windows系统平台下部署运行服务端Idea工程的jar服务

前言 目前云原生docker等技术&#xff0c;加上部署流水线大大的简化了各种流程&#xff0c;我们后端开发的人员只需要提交代码后&#xff0c;构建、部署、测试、发布等环节都无需人员接入&#xff0c;完全的自动化交付了。那么你肯定不禁想问&#xff0c;如题的需求不是点击一…

Web 前端—HTML+CSS系列

HTML、CSS 一、HTMLCSS1.1什么是HTML、CSS1.2宇宙第一编辑器VS Code1.3Chrome浏览器1.4、深入了解网站开发 一、HTML基本操作1.web前端三大核心技术2.HTML初始代码3.HTML注释4.HTML语义化5.标题与段落6.文本修饰标签7.图片标签与图片属性8.引入文件的地址路径9.跳转链接10.跳转…

Leetcode—75.颜色分类【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—75.颜色分类 实现代码 class Solution { public:void sortColors(vector<int>& nums) {int red 0, white 0, blue 0;for(auto num: nums) {if(num 0) {red;} else if(num 1) {white;} else {blue;}}for…

机械、电气、自动化与人工智能融合:发展历程、问题与前景

导言 机械、电气、自动化行业与人工智能的结合&#xff0c;推动了工业革命的新浪潮。本文将深入研究这一融合的发展历程、遇到的问题、解决过程&#xff0c;以及未来的可用范围&#xff0c;着重分析在各国的应用现状和未来的研究趋势。同时&#xff0c;探讨在哪些方面能够取得胜…

环境搭建及源码运行_java环境搭建_idea版本下载及安装

1、介绍 Idea是一款被广泛使用的Java集成开发环境&#xff0c;它提供了丰富的功能和工具来帮助开发人员更高效地编写和调试代码。作为一款开源软件&#xff0c;Idea不仅提供了基本的代码编辑、自动完成和调试功能&#xff0c;还支持大量的插件和扩展&#xff0c;可为开发人员提…

MySQL基本操作 DDL DML DQL三大操作介绍

DDL 数据(结构)定义 创建表DML 数据操作 增删改DQL 查询语句 DDL 数据(结构)定义 创建表 创建 删除数据 注释 --空格内容 创建数据库 CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]eg:CREATE DATABASE IF NOT EXISTS school CHARSET utf8如果对应school不存在,…