Docker的run流程

news/2024/11/7 16:52:31/

 底层原理

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.ppmy.cn/news/571917.html

相关文章

现在程序员行情已经好转了吗?华为都不刷人了!靠1658页Java面试合集成功逆袭上岸!

来自学员的真实反馈! 双非本,笔试刚过线,面试回答的磕磕绊绊,手撕还没写出来,本以为就这样寄几了,没想到5分钟后官网绿了! 22年底,各大培训机构,各种大V认证都在说疫情过…

Light Image Resizer v6.0.8 图像无损批量处理工具便携版

前言 Light Image Resizer是一款由法兰西 ObviousIdea公司开发的一款图片尺寸批量处理工具,它简单易用、功能强大,支持给图片添加个性化水印或边框,默认内置了多种不同的剪切模式,使图像适合某一分辨率比例时不会变形。然而用户在…

2023年低代码平台全球排行榜:企业首选榜单,揭晓最受欢迎的工具

近年来,随着数字化转型和云计算技术的普及,低代码平台已经成为企业开发和应用程序的首选工具之一。低代码平台可以大大缩短开发时间和成本,提高灵活性和可扩展性,同时保证应用程序的质量和稳定性。在这个强制数字化的时代&#xf…

【C++】标准库 — 正则表达式 std::regex

C 标准库 — 正则表达式 std::regex 文章目录 C 标准库 — 正则表达式 std::regexI - 正则表达式概述II - 内容2.1 - 匹配字符2.2 - 匹配数量/次数2.3 - 特殊字符的用途 III - 使用3.1 - 正则表达式有不止一种写法3.2 - 内置通用字符簇特殊用法3.3 - 元字符使用3.4 - 零宽断言3…

百度输入法输入汉字却显示英文

项目场景: 我的电脑上就一个百度输入法和一个系统自带的。 问题描述: 听说百度输入法广告比较少,才下载的。 写Word时候,无论怎么切换英文汉字,始终显示的是英文。 解决方案: 提示:也没有存在…

android百度输入法切换,百度输入法输入模式怎么切换 快速一键切换输入法模式方法教程...

有很多的用户在使用手机输入法时,都会有习惯切换不同模式的习惯,这样才会更加便捷的输入,那么在手机百度输入法中要怎么快速的切换模式呢?下面就跟随小编一起来看看吧。 百度输入法切换模式的方法 1、首先,下载并且安装手机百度输…

输入法pad版android,百度输入法pad版 for android 3.0

在手机或者pad上,我喜欢九宫格类型的输入法。有年轻人手指灵活,脑子 也灵活,选用五笔字型,这不在话题之内。 手机从模拟式过渡到数字式后,中文输入就一直流行九宫格类输入法。利用数字键,经过特别的编码&am…

android百度字体大小设置快捷键,(安卓)百度输入法定制版 — 清爽无广告

本文最后更新于2020-12-22 00:22:34,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜。 百度输入法算是老夜最早一批使用的手机输入法之一,不过最近几年貌似没多大动静了特意去官网看了看Windows端上一次更新还是201…