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 

 

发布了166 篇原创文章 · 获赞 212 · 访问量 36万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览