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镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁