docker的小知识大学问

2024-09-05 06:48
文章标签 docker 知识 大学

本文主要是介绍docker的小知识大学问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.docker退出容器但是不关闭容器

    Ctrl+P+Q

2.如何批量停止所有的容器

docker stop $(docker ps -q)

 注意使用 -q 参数,仅仅输出镜像/容器的ID.

3.容器重启后会IP地址都会改变,查看容器的ID

docker inspect -f '{{.NetworkSettings.IPAddress}}' <CONTAINER>

4.docker exec 与 docker attach区别

docker attach 直接进入容器 启动命令 的终端,不会启动新的进程。

docker exec 则是在容器中打开新的终端,并且可以启动新的进程。

如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。

5.docker Engine是什么?

我们平时说的 docker Engine就是docker,docker的架构是C/S架构,开发者通过 docker client 向docker daemon发送请求。

Docker Engine包括这么几个部分:

Docker Daemon — docker 的守护进程,属于C/S中的server。

Docker REST API — docker daemon向外暴露的REST 接口,属于Client。

Docker CLI — docker向外暴露的命令行接口(Command Line API),属于Client。

6.批量删除所有所有退出的容器

docker rm ${docker ps -aq -f status=exited}
 docker rm $(docker ps -a | grep Exited | awk '{print $1}')

7.docker中CMD与ENTRYPOINT的使用格式?

shell格式

<instruction>  <conmmand>
CMD echo "hello docker"
ENTRYPOINT python  "/code/algorithm-start.py"

exec格式

<instruction> ["executable","param1","param2",.....]
CMD ["/bin/bash","hello dicker"]
ENTRYPOINT ["python","/code/algorithm-start.py"]

CMD与ENTRYPOINT都推荐使用exec格式。

8.docker中CMD与ENTRYPOINT的区别?

CMD与ENTRYPOINT都设置的是容器启动时的命令,两者有很大的区别。

CMD是设置容器启动的默认命令,如果使用者在使用容器时设置了容器启动的命令,则CMD执行的命令就失效了,也就是说docker run  [IMAGE] /bin/bash 启动[IMAGE]时的 /bin/bash命令会覆盖CMD执行的命令,ENTRYPOINT则不会,ENTRYPOINT是容器启动真正的命令,启动容器时候的命令并不能覆盖ENTRYPOINT执行的命令,docker run 所携带的启动命令或者是参数都会当做 ENTRYPOINT执行命令的参数。还有一个区别就是CMD可以当做ENTRYPOINT执行命令的默认参数。

    

左边是 start.py 输出传递给它的参数,右边是启动dockerfile文件。制作镜像 test

如果需要把CMD当做ENTRYPOINT的参数,需要把CMD房子ENTRYPOINT的上面。

9.docker容器如何指定静态IP?

只有开发者在使用 --subset 创建的网络才能指定静态IP。

docker network create --driver bridge --subnet 172.25.16.0/24 --gateway 172.25.16.1 my_net2
docker run -it --network=my_net --ip 172.18.0.8 busybox

10.什么是容器技术?

轻量级的操作系统虚拟化解决方案, 能够在Linux系统上迅速创建一个容器(类似于虚拟机)并在容器上部署和运行应用程序,同时还可以通过配置文件轻松将应用程序的自动化安装、部署和升级。

11.容器是基于什么技术的?

基于Linux容器(LXC)技术。

12.改变防护墙状态后,容器无法联网?

firewall开启状态,装docker后(能联网),firewall关闭后,在容器中无法联网,firewall再次打开,在容器中有网。

firewall关闭着,装docker后(能联网),firewall启动(无法联网,无DNS服务),firewall开启后,在容器中无法联网。

在此实验基础上,装docker之前先开启防火墙。

13.直接关闭容器快捷键?

    Ctrl+D

14.最近遇到的一个问题:启动nginx的镜像,发现无法打开通过goofys挂载的视频文件,提示无法打开视频,权限不足,在启动镜像时候,已经制定 --privileged=true,还是提示权限不足。

原因是 centos中安全模块把selinux权限禁止了,需要关闭 selinux, 打开 /etc/sysconfig/selinux , 把SELINUX=enforcing 改为 SELINUX=disabled。

15. docker的仓库和仓库注册服务器(registry)

一直以来,我总把仓库和仓库注册器(registry)混为一谈,并不严格区分。实际上仓库注册服务器上往往放着多个仓库,每个仓库中又包含着多个镜像,每个镜像包括多个不同的标签(tag)。仓库分成共有的和私有的。最大的公有仓库是 docker Hub。registry并不是仓库,registry是仓库注册器。标准的镜像名字:  服务器IP:端口/分类/镜像名字:tag  比如:docker.io/yunqianqian/tensorflow-dev-cpu:1.4

16. 查看容器中运行的进程

docker top  <ID>/<container name>

17. docker -p -v映射时候,宿主机和容器的位置关系

时间久了就忘记了,其实,-p hostport : containerport  -v hostpath : containerpath,记忆的话就是先有宿主机后有容器,所以无论是端口映射还是数据卷挂载都是先是宿主机后是容器。

18.修改docker存储路径

#确定修改文件地址
systemctl enable docker#增加选项  --graph
--graph <修改的路径>#重新装在配置
docker daemon-reload#重启docker
systemctl restart docker #查看修改是否成功
docker info 

19.容器使用了ns技术,我为啥使用命令查看不到呢

这是因为默认docker把创建的网络命名空间链接文件隐藏起来了,导致 ip netns 命令无法读取。

#执行下面的命令来获取容器进程号
docker inspect [container-name] |grep Pid
执行如下命令,将进程网络命名空间恢复到主机目录,ln -s /proc/[container-pid]/ns/net /var/run/netns/[container]

 

 

这篇关于docker的小知识大学问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138248

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤