Docker知识点整理

发布时间:2023年12月18日

Docker和虚拟机技术的区别:

传统的虚拟机,可以虚拟出一条硬件,运行一个完整的操作系统,在这个操作系统上安装和运行所需的软件
容器内的应用可以直接运行在宿主 主机的内核中,容器没有自己的内核,也不用虚拟硬件 (轻便)
每个容器是相互隔离的,每个容器内都有属于自己的文件系统,之间互不影响。

docker为什么比VM(虚拟机)快?

  1. Docker有着比虚拟机更少的抽象层。
  2. docker利用的是宿主机的内核,vm需要是Guest OS。
  3. 新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。
    虚拟机是加载GuestOS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!

Docker优点

1. 应用于更快速的交付和部署

传统:通过大量的帮助文档,安装程序!
Docker:打包镜像发布测试,一键运行!
2. 更便捷的升级和扩缩容

通过使用Docker,部署应用 如同搭积木一样!
3. 更简单的系统运维

使用容器化之后,开发和测试环境是高度一致的
4.更高效的计算资源利用

Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器,让服务器的性能可以压榨到极致

Docker组成介绍

镜像(Image):

docker镜像就好比一个模板,我们可以通过这个模板来创建容器服务,tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container):

docker利用容器技术,独立运行一个或者一组应用 通过镜像来创建

启动,停止,删除,基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统

仓库(repository):

仓库就是存放 镜像(image)的地方!

仓库又可以分为 公有仓库和私有仓库

Docker命令

镜像相关

docker images

REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
# 命令参数可选项
-a, --all # 显示所有镜像 (docker images -a)
-q, --quiet # 仅显示镜像id (docker images -q)

docker search(搜索镜像)

命令参数可选项 (通过搜索来过滤)

--filter=STARS=3000 # 搜索出来的镜像就是stars大于3000的

docker rmi(删除镜像)

docker rmi -f 镜像id ? ? ? ? ? ? ? ? ? ?# 删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id ? ?# 删除多个镜像(空格分隔)
docker rmi -f $(docker images -aq) ? ?# 删除全部的镜像

容器相关

新建容器并启动

docker run [可选参数] image
# 参数说明
--name="name" ? ? ? ?容器名字:用来区分容器
-d ? ? ? ? ? ? ? ? ? ?后台方式运行:相当于nohup
-it ? ? ? ? ? ? ? ? ? ?使用交互式运行:进入容器查看内容
-p ? ? ? ? ? ? ? ? ? ?指定容器的端口(四种方式)小写字母p
? ? -p ip:主机端口:容器端口
? ? -p 主机端口:容器端口
? ? -p 容器端口
? ? 容器端口
-P ? ? ? ? ? ? ? ? ? ? 随机指定端口(大写字母P)

列出所有运行的容器

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

# 命令参数可选项

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

-n=? # 显示最近创建的容器(可以指定显示几条,比如-n=1)

-q # 只显示容器的编号

退出容器

exit # 容器直接停止,并退出

ctrl+P+Q # 容器不停止,退出

删除容器

docker rm 容器id ? ? ? ? ? ? ? ? ? ?# 删除容器(不能删除正在运行的容器)如果要强制删除:docker rm -f 容器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 ? ? ? ?# 强制停止当前容器

后台启动容器

# 命令docker run -d 镜像名

[root@JWei_0124 //]# docker run -d centos
5b06d0d14b3312e589a411dd9ae15589dc9321f771e5615b7ae26e85017de080
# 问题:docker ps发现centos停止了
# 常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止。
# 比如:nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志


docker logs -tf --tail 容器id

查看容器中进程的信息

docker top 容器id

查看镜像的元数据

命令docker inspect 容器id

进入当前正在运行的容器

docker exec -it 容器id /bin/bash
docker attach 容器id

# docker exec ? ? ? ?# 进入容器后开启一个新的终端,可以再里面操作(常用)
# docker attach ? ? ? ?# 进入容器正在执行的终端,不会启动新的进程。

文章来源:https://blog.csdn.net/weixin_44588186/article/details/134983646
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。