Docker的run流程

news2024/11/8 3:32:36

 底层原理

Docker怎么工作?

 

Docker为什么比VM虚拟机块?

1.Docker有比虚拟机更少的抽象层

2.docker利用的是宿主机的内核,vm需要是Guest OS

所以说,新建一个容器的时候,docker不需要像虚拟机一样加载一个系统内核,避免引导,虚拟机是加载Guest OS,分钟级别;而Docker是利用宿主机的操作系统,秒级

 

Docker的常用命令

帮助命令:

docker version;

docker info;

docker 命令 --help
#官方文档:docs下面的Reference

镜像命令:

查看镜像

 REPOSITORY    镜像的仓库源

TAG            镜像的标签

IMAGE ID      镜像的ID

CREATED    镜像的创建时间
Options:
  -a, --all            列出所有镜像
  -q, --quiet           只显示镜像的ID

搜索镜像:

docker search mysql --filter=STARS=5000

 下载镜像命令:

这个命令可以把mysql下载下来

docker pull mysql  #默认下载latest版本

dcker pull mysql:5.7  #下载指定版本,这个下载过程是分层下载的,所以如果前面下载过mysql 最新版,其实后面再下载其他版本有很多步骤因为重复的会直接找缓存就可以

删除镜像命令:

#通过镜像名称来删

#通过镜像ID来删一个镜像

docker rmi -f  镜像id      

#通过镜像ID来删多个镜像

docker rmi -f  镜像id       镜像id    镜像id   

#删除全部镜像

docker rmi -f $(docker images -aq)

容器命令:

说明:我们有了镜像才可以创建容器,下载一个centos来测试学习

docker pull centos

 

新建容器并进入容器

docker run [可选参数] image

#参数说明

--name="Name"  容器名字 如tomcat01,tomcat02,原来区分容器

-d      后台方式运行

-it       使用交互方式运行,进入容器查看内容

-p       指定容器端口如

(-p  ip:主机端口:容器端口

-p 主机端口:容器端口

-p 容器端口

例子:-p 8080:8080)

-P     随机指定端口

从容器退回主机

exit  #容器停止且退出

快捷键ctrl+p+q  #退出且容器不停止

列出运行中的容器

docker ps  #列出当前运行的容器

docker ps -a  #列出当前运行+历史运行过的的容器

docker ps -a -n=?   #列出最近运行的容器 

删除容器命令

docker rm 容器id   # 删除指定容器,但是不能删除正在运行中的容器

docker rm -f $(docker ps -aq)  #删除全部容器(包括正在运行的容器)

docker ps -a -q|xargs docker rm  #删除所有容器

启动和停止容器

docker start 容器id   #启动容器

docker restart 容器id  #重启容器

docker stop 容器id #停止当前正在运行的容器

docker kill 容器id  #强制停止当前容器

注意区分上面的 这3个命令:

 第1个指令:docker run -d centos

坑:centos是我们的容器,docker容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就立刻自动停止;

常用其他命令

查看日志

docker logs -f -t --tail  容器,没有日志

自己编写一段shell脚本:docker run -d centos /bin/sh -c "while true;do echo lingchun;sleep 1;done"

显示日志

docker logs -tf --tail 10 容器ID

说明:

-tf    #显示日志

--tail number  #要显示日志条数

查看容器中的进程

docker top 容器ID

查看容器信息

docker  inspect 容器ID

进入容器中命令(run是创建并进入,exec是直接进入)

docker exec -it 容器ID /bin/bash

docker attach 容器ID

说明:

#docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)

#docker attach  进入容器正在执行的终端,不会启动新的进程

#exit不会停止容器,而attach会停止进程

从容器内拷贝文件到宿主机上

docker cp 容器id:/home/待拷贝文件名  /home

###未来通过-v 卷 技术可以实现自动拷贝

 

 实战 部署Nginx

 docker pull nginx  #拉取镜像

docker images

docker run -d --name nginx01 -p 3344:80 nginx    #类似映射,通过公网的3344访问到docker的80端口

docker ps

curl localhost:3344

启动成功后在公网上访问:http://linux的ip:3344/  可以访问到nginx的页面,就标志着部署成功了

docker stop 容器id

如果报错记得Linux要开放端口3344

#进入容器

docker exec -it nginx01 /bin/bash

whereis nginx

cd /etc/nginx   #这里放了nginx.conf

ls

思考::

我们每次要改动nginx配置文件都需要进入容器内部?十分麻烦,我们要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动更改,那就好了!

-v 数据卷!

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

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

相关文章

[conda]tf_agents和tensorflow-gpu安装傻瓜式教程

1.打开终端或Anaconda Prompt&#xff08;Windows用户&#xff09;。 2.输入以下命令创建新的Python环境&#xff1a; conda create --name <env_name> python<version>其中&#xff0c;<env_name>是您想要创建的环境名称&#xff0c;<version>是您想…

保留纵向连续性的迭代次数估算方法

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点&#xff0c;训练集AB各由5张二值化的图片组成&#xff0c;让B全是0&#xff0c;让差值结构中有6个1.其中有3组 差值结构 A-B 迭代次数 行分布 列分布 0 1 1 0 1 1 3*5*1*2*0-0*0*0*0*0 3977.834 0 1 …

springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

文章目录 springboot中自定义JavaBean返回的json对象属性名称大写变小写问题一、继承类二、手动添加Get方法三、JsonProperty四、spring-boot json(jackson)属性命名策略 springboot中自定义JavaBean返回的json对象属性名称大写变小写问题 开发过程中发现查询返回的数据出现自…

模拟电路系列分享-运放的关键参数3

目录 概要 整体架构流程 技术名词解释 1.输入电压范围 2.优劣范围: 3.理解 技术细节 1.共模抑制比 2.优劣范围 3.理解 小结 概要 提示&#xff1a;这里可以添加技术概要 实际运放与理想运放具有很多差别。理想运放就像一个十全十美的人&#xff0c;他学习100 分&#xff0c;寿…

chatgpt赋能python:Python中的相加功能函数:介绍、应用和示例

Python中的相加功能函数&#xff1a;介绍、应用和示例 Python是一个功能强大的编程语言&#xff0c;拥有许多强大的内置函数和模块。其中一个非常常见的功能是相加或者加法操作。让我们看一下Python中的相加功能函数。 什么是相加&#xff1f; 简而言之&#xff0c;相加是将…

6.17、进程与线程

比如&#xff0c;一边游戏&#xff0c;一边qq聊天&#xff0c;一边听歌&#xff0c;怎么设计&#xff1f; 进程 进程&#xff08;process&#xff09;&#xff1a;程序的一次执行过程&#xff0c;或是正在内存中运行的应用程序。如&#xff1a;运行中的QQ&#xff0c;运行中…

二叉树的基本操作(如何计算二叉树的结点个数,二叉树的高度)

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

内网隧道代理技术(八)之Python 反弹Shell

Python 反弹Shell Python介绍 Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计&#xff0c;作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语法和动态类型&#xff0c;以及解释型语言的本…

月薪2万,被新同事15秒气走。

今年&#xff0c;AIGC掀起了巨浪&#xff0c;身边不少人感到前所未有的焦虑&#xff1a; 朋友圈好友晒出的AI美图&#xff0c;仅需15秒&#xff0c;竟比我2周的设计更出色&#xff1b; 公司用AI写的文案&#xff0c;转化率提升了10%&#xff0c;可能要优化人员了; 职场危机提前…

Boost序列化全解析

程序开发中&#xff0c;序列化是经常需要用到的。像一些相对高级语言&#xff0c;比如JAVA, C#都已经很好的支持了序列化&#xff0c;那么C呢&#xff1f;当然一个比较好的选择就是用Boost&#xff0c;这个号称C准标准库的东西。 什么时候需要序列化呢&#xff1f;举个例子&am…

可视化的工时管理:让项目进度真实可见

在现代项目管理中&#xff0c;工时表软件作为一种强大而有效的工具&#xff0c;能够帮助团队更好地管理项目进度。无论是大小型项目&#xff0c;正确使用工时表软件都可以提高团队的效率和项目的可追踪性。本文将介绍一些关键步骤&#xff0c;以帮助企业利用工时表软件来管理项…

【计算机图形学】期末总结大全,建议收藏

文章目录 一、图形学及其研究内容二、图形的输入设备和显示设备三、图形的显示设备四、显示子系统五、图形软件标准五、图形软件包六、习题七、直线段扫描转换算法八、直线段扫描转换算法练习题九、扫描线填充算法十、实区域填充算法十一、反走样技术十二、图形裁剪基础概念十三…

开源社区必会知识点— —git提交pr

开源社区必会 1 fork仓库并提交之后给开源社区提交pr 1.1 fork开源仓库 ①登录github&#xff0c;找到开源仓库A&#xff0c;然后点击fork 这样&#xff0c;就会在你自己github账号下创建一个同名的仓库B&#xff08;仓库名可修改&#xff09; ②然后本地修改&#xff0c;提…

[RocketMQ] Consumer消费者启动主要流程源码 (六)

客户端常用的消费者类是DefaultMQPushConsumer, DefaultMQPushConsumer的构造器以及start方法的源码。 1.创建DefaultMQPushConsumer实例 最终都是调用下面四个参数的构造函数: /*** 创建DefaultMQPushConsumer实例** param namespace namespace地址* par…

调用聚合数据API实现手机号码归属地查询

调用聚合数据API实现手机号码归属地查询 1&#xff0e;作者介绍2&#xff0e;相关介绍2.1 什么是聚合数据&#xff1f;2.2 API介绍2.3 手机号码归属地 3&#xff0e;实验过程3.1如何调用聚合数据API3.2代码实现3.3实验结果3.4问题分析 1&#xff0e;作者介绍 吝红凯&#xff0…

Python+requests+unittest+excel搭建接口自动化测试框架

一、框架结构&#xff1a; 工程目录 代码&#xff1a;基于python2编写 二、Case文件设计 三、基础包 base 3.1 封装get/post请求&#xff08;runmethon.py&#xff09; import requests import json class RunMethod:def post_main(self,url,data,headerNone):res Noneif h…

【C++】一些关于visual stdio,vscode,Mingw的思考 |bug

文章目录 今天在做YOLOV8的C部署时遇到的一些问题&#xff1a; 在进行一系列的操作之后会生成解决方案文件sln: 当然按道理到这一步之后&#xff0c;应该使用make命令进行下一步操作&#xff08;但是我确实不会make命令&#xff0c;所以准备进sln来生成解决方案&#xff09;&…

缓存和数据库一致性问题,看这篇就够了

阅读本文大约需要 10 分钟。 如何保证缓存和数据库一致性&#xff0c;这是一个老生常谈的话题了。 但很多人对这个问题&#xff0c;依旧有很多疑惑&#xff1a; 到底是更新缓存还是删缓存&#xff1f; 到底选择先更新数据库&#xff0c;再删除缓存&#xff0c;还是先删除缓存…

消息队列详解

文章目录 1、什么是消息队列2、使用场景3、消息队列与传统设计的区别1、传统设计2、并行处理调优3、消息队列 4、三大优点1、异步2、削峰3、解耦 5、缺点1、增加了系统复杂性。2、事务问题。3、可用性 6、MQ常见问题1、消息堆积问题怎么解决2、重复消费问题怎么解决3、如果避免…

消息队列Message Queue 0基础学习

一、定义 消息队列&#xff1a;一般我们会简称它为MQ(Message Queue)。Message Query&#xff08;MQ&#xff09;&#xff0c;消息队列中间件&#xff0c;很多初学者认为&#xff0c;MQ通过消息的发送和接受来实现程序的异步和解耦&#xff0c;mq主要用于异步操作&#xff0c;…