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目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

使用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