Docker 从入门到实践系列三 - Docker 常用命令

docker pull hello-world

镜像列表

获取已下载镜像列表命令:docker images

在这里插入图片描述

其中,

  • RESPOSITORY:镜像名;

  • TAG:镜像版本,latest 代表最新版;

  • IMAGE_ID :镜像唯一 ID;

  • CREATED :镜像的创建时间;

  • SIZE:镜像的大小。

docker images -参数 含义:

  • -a:all 的简写,列出本地所有镜像(包含中间映像层);

  • -q:只显示镜像 ID;

  • --digests:显示镜像摘要信息;

  • --no-trunc:显示完整的镜像信息。

镜像删除

删除指定镜像:

docker rmi image-id

删除多个镜像:

docker rmi mysql tomcat

删除所有镜像:

docker rmi $(docker images -q)

强制删除镜像:

强制删除(当前镜像启动的容器正在运行中,是无法正常删除的,可以通过 -f 强制删除)

如果删除时不指定 TAG,默认为最新版 Least。

docker rmi -f image-id

容器命令


镜像运行起来后,称为容器。 下面以 Tomcat 为例

搜索镜像

docker search tomcat

下载镜像

docker pull tomcat

运行容器

运行tomcat

docker run --name tomcat -d -p 8080:8080 tomcat

如果docker运行Tomcat后访问首页报404,详细解决方案可参考:https://cloud.tencent.com/developer/article/1704573

最简单的根据镜像新建并启动容器的命令如下:

docker run --name container-name -d image-name

运行一个容器,使用 docker run 命令即可。 另,docker run -参数 含义:

  • -- name:为容器起一个名称;

  • -d:detached,执行完这句命令后,控制台将不会阻塞,可以继续输入命令操作,不会阻塞,也就是启动守护式容器,如果执行 docker run --name tomcat -it tomcat 会进入启动容器的命令控制台,也就是启动交互式容器;

  • -i:以交互方式运行容器,通常与 -t 搭配使用;

  • -t:为容器重新分配一个伪输入终端,通常与 -i 搭配使用;

  • -P:随机端口映射;

  • -p:指定端口映射;

  • image-name:要运行的镜像名称;

端口映射

启动做端口映射的容器

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P(大写)-p (小写) 参数来指定端口映射。启动容器的时候如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。

Docker 的端口映射通过 -p-P 参数实现,命令如下:

docker run --name tomcat1 -d tomcat

docker run --name tomcat2 -d -p 8888:8080 tomcat

如上,就把主机端口 8888 请求映射到 Docker 容器内部端口 8080 了。

-p-P 区别为:

-P : 随机映射一个49000~49900的端口到内部容器开放的网络端口

-p : 可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器

执行完这两条命令后,通过 docker ps 查看:

在这里插入图片描述

通过 PORTS 可以看出,tomcat2 是做了端口映射的,tomcat1 是没进行映射过的。

分别通过浏览器访问:

http://*.*.*.*:8080/ // tomcat1默认端口;

http://*.*.*.*:8888/ // 做过端口映射的 Tomcat2,8888 会转发请求到 tomcat2 的 8080。

结果如下:

第一个请求是无法请求到的,原因开篇处说过了。

第二个请求是可以正常进行请求的,会由 tomcat2 容器进行处理

端口映射格式

#指定ip、指定主机port、指定容器port

#ip:hostport:containerport

docker run --name tomcat -d -p 127.0.0.1:8080:8080 tomcat

#指定映射使用一个特定地址,比如 localhost地址 127.0.0.1

#指定ip、未指定主机port、指定容器port

#ip::containerport

docker run --name tomcat -d -p 127.0.0.1::8080 tomcat

#绑定 localhost 的任意端口到容器的 8080 端口,本地主机会自动分配一个端口,还可以使用 udp 标记来指定 udp 端口

docker run --name tomcat -d -p 127.0.0.1:8080:8080/udp tomcat

#未指定ip port、指定主机port、指定容器port

#hostport:containerport

docker run --name tomcat -d -p 8080:8080 tomcat

#将本地的 8080 端口映射到容器的 8080 端口,默认会绑定本地所有接口上的所有地址

查看端口映射

可以通过如下命令查看容器映射了哪些端口及协议:

docker port container-id

示例:

[root@iZwz9inovbad1hkjy16akvZ tmp]#docker port 1596abf8d8a3

8080/tcp -> 0.0.0.0:8888

8080/tcp -> :::8888

[root@iZwz9inovbad1hkjy16akvZ tmp]#docker port 67751753d5da

如果返回空,则代表没进行端口映射。

小结
  • 容器有自己的内部网络和 ip 地址,可以使用 docker inspect container-id 可以获取所有的变量

  • Docker 还可以有一个可变的网络配置

  • -p 标记可以多次使用来绑定多个端口 eg. docker run --name tomcat -d -p 8080:8080 -p 3000:80 tomcat

查看容器

可通过如下命令,查看运行中的容器列表:

docker ps

在这里插入图片描述

  • CONTAINER ID:启动时生成的容器 ID;

  • IMAGE:该容器使用的镜像;

  • COMMAND:容器启动时执行的命令;

  • CREATED:容器创建时间;

  • STATUS:当前容器状态;

  • PORTS:当前容器所使用的端口号;

  • NAMES:启动时给容器设置的名称。

另,docker ps -参数含义:

-a:查看所有容器,包括已停止运行的;

-q:静默模式,只显示容器编号;

-l:显示最近创建的容器;

-n 3:显示最近创建的 num(此处为 3)个容器;

--no-trunc:不截断输出,显示完整信息。

停止容器

通过以下命令来停止运行中的容器:

docker stop container-name/container-id

强制停止容器(类似强制关机):

docker kill container-name/container-id

启动容器

通过以下命令启动容器:

docker start container-name/container-id

docker run和docker start的区别:

在这里插入图片描述

1.docker run

docker run只有在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器的时候,只需要使用命令docker start就可以。

docker run相当于执行了两步操作:将镜像(Image)放到容器(Container)中,这一步过程叫做docker create,然后将容器启动,使之变成运行时容器(docker start)。

2.docker start

docker start的作用是:重新启动已经存在的容器。也就是说,如果使用这个命令,我们必须先要知道这个容器的ID、或者这个容器的名字,我们可以使用docker ps命令找到这个容器的信息。

重启容器

通过以下命令启动容器:

docker restart container-name/container-id

删除容器

删除单个容器:

docker rm container-id

删除多个容器:

docker rm container-id container-id

删除所有容器:

docker rm $(docker ps -a -q )

另,docker rm -参数含义:

-f:强制删除,如果在运行中,先停止,再删除

其他重要命令


查看容器日志

查看当前容器日志,可通过如下命令:

docker logs container-id/container-name

另,docker logs -参数含义:

  • -t:加入时间戳;

  • -f:跟随最新的日志打印;

  • -n:显示最后多少条。

连接到正在运行容器

docker attach container-id:连接到正在运行的容器;

attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。

官方文档中说 attach 后可以通过 CTRL-Cdetach,但实际上经过我的测试,如果 container 当前在运行 bashCTRL-C 自然是当前行的输入,没有退出;如果 container 当前正在前台运行进程,如输出 nginxaccess.log 日志,CTRL-C 不仅会导致退出容器,而且还 stop 了。

这不是我们想要的,detach 的意思按理应该是脱离容器终端,但容器依然运行。好在 attach 是可以带上 --sig-proxy=false 来确保 CTRL-DCTRL-C 不会关闭容器。

docker attach --sig-proxy=false 7f237caad43b

在运行的容器中执行命令

运行中的容器其实是一个功能完备的简易版 Linux 操作系统,所以我们可以像常规系统一样进行登陆及退出操作。

命令为:

docker exec -it container-id/container-name bash

退出命令为:

exit

execattach 区别:

  • attach:直接进入容器启动命令的终端,不会启动新的进程;

  • exec:在容器中打开新的终端,并且可以启动新的进程,可在宿主机中直接执行操作容器的命令,eg. docker exec -it 7f237caad43b ls /tmp

查看容器中正在运行进程

可用通过如下命令查看容器中正在运行进程:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
何学起的朋友,同时减轻大家的负担。**[外链图片转存中…(img-Kre1ppIX-1713823232498)]

[外链图片转存中…(img-LpKHszla-1713823232498)]

[外链图片转存中…(img-MoOojN27-1713823232499)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

[外链图片转存中…(img-3iMFGrGs-1713823232499)]

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

[外链图片转存中…(img-8azjpBl8-1713823232499)]

[外链图片转存中…(img-kh73mdp9-1713823232500)]

[外链图片转存中…(img-8NUx0d5y-1713823232500)]

[外链图片转存中…(img-bUkLSzYN-1713823232501)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值