ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker系列教程03_Docker使用

2020-03-11 18:00:29  阅读:158  来源: 互联网

标签:03 教程 容器 ID 镜像 Docker docker 运行


1.Docker的所有命令

在这里插入图片描述

2.帮助命令

docker version 查看docker版本
docker info 显示全系统信息
docker --help 显示docker相关的所有命令及功能说明

3.镜像命令使用

3.1 docker images 列表本机上的镜像

在这里插入图片描述

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

docker images -[options]的说明

-a 列表本地的所有镜像及子镜像
-q 只显示镜像ID
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息

3.2 docker seach 镜像搜索命令

如果用不了、就把镜像加速改成阿里云

搜索网站:https://hub.docker.com
在这里插入图片描述
语法

docker search 镜像名称
docker search 镜像名称  -[options]   说明
--no-trunc 显示完整的镜像描述

在这里插入图片描述
在这里插入图片描述

-s 列出收藏数不少于指定值的镜像
Docker search mysql -s 300

在这里插入图片描述

3.3 docker pull 镜像下载命令

语法

docker pull 镜像名称:[TAG]
例如:docker pull tomcat:8.5  下载8.5的镜像版本
     dokcer pull tomcat 默认下载最新的tomcat镜像版本 【latest】     

3.4 docker rim 镜像删除命令

删除单个   docker rmi -f 镜像ID
删除多个   docker rmi -f 镜像ID1 镜像ID2
           docker rmi -f 镜像名:[tag]  镜像名:[tag]
删除全部   docker rmi -f $(docker images -qa)

4.容器概述及命令使用

4.1容器概述

容器镜像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器将软件与其周围环境隔离开来,例如开发环境和生产环境之间的差异,并有助于减少在同一基础架构上运行不同软件的团队之间的冲突。
在这里插入图片描述

1.轻量级

在一台机器上运行的Docker容器共享该机器的操作系统内核; 他们立即开始并使用更少的计算和内存。图像由文件系统层构建并共享公用文件。这最大限度地减少了磁盘使用量,图像下载速度更快。

2.标准

Docker容器基于开放标准,可在所有主要Linux发行版,Microsoft Windows以及任何基础架构(包括虚拟机,裸机和云中)上运行。

3.安全

Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。Docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是整个机器上。

4.2演示前提

有镜像才能创建容器,这个是根本要求(下载centos镜像来演示)

docker pull centos

4.3容器的创建并启动

4.3.1语法

docker run [options] images [command][args]

4.3.2options说明

有些是一个减号,有些是两个减号

–name=“容器新名字”: 为容器指定一个名称;

-d: 后台运行容器,并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与 -t 同时使用;

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

-P: 随机端口映射;

-p: 指定端口映射,有以下四种格式

​ ip:hostPort:containerPort

​ ip::containerPort

​ hostPort:containerPort

​ containerPort

4.3.3交互式运行

就是运行容器并打开容器的一个终端

#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash 

4.4列出当前所有正在运行的容器

4.4.1语法

docker ps [options]
docker ps  列出当前正在运行的容器

在这里插入图片描述

4.4.2 options语法说明

-a :列出当前所有正在运行的容器+历史上运行过的

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

-n:显示最近n个创建的容器。

在这里插入图片描述

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

在这里插入图片描述
–no-trunc :不截断输出。

在这里插入图片描述

4.5退出容器

1,exit:停止容器并退出

2,ctrl+P+Q 容器不停止退出

4.6启动停止重启容器

docker start/stop/restart 容器ID或容器名称

4.7强制停止容器

docker kill 容器ID或容器名称

4.8删除已停止的容器

#单个删除
docker rm 容器ID
#多个删除
docker rm -f $(docker ps -aq)

5.其它重点内容

5.1启用守护式容器

#使用镜像centos:latest以后台模式启动一个容器

docker run -d centos

问题:docker ps -a 进行查看, 会发现容器已经退出

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.

容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动是应的service即可。例如 service nginx start

但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,

这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.

所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行

总结

容器运行必须要有一个前台进程,没有的话,相当于容器认为自己没有事可做,就自杀了,但是当用户启动tomcat之后,很长时间不使用,为什么tomcat不挂

  1. 有项目正在运行 —不成立

    如果我把webapps清空。启动docker容器。它也不退出

  2. 因为tomcat启动总会有一个终端挂起

5.2查看容器日志

如果是后台运行的程序,那么如何查看运行的日志呢?

1,先运行一个程序 在后台被隔两秒输出[hello laolei]

 docker run -d centos /bin/sh -c "while true;do echo hello laolei;sleep 2;done"

2,查看日志

Docker logs 查看容器内部的日志

docker logs -tf --tail 10 容器ID

*   -t 是加入时间戳
*   -f 跟随最新的日志打印
*   --tail 数字 显示最后多少条

5.3查看容器运行进程

docker top 容器ID

5.4查询容器内部细节

docker inspect 容器ID

5.5进入正在进行的容器并以命令行交互

#方式1
docker exec -it 容器ID /bin/bash
#方式2
docker attach 容器ID
#两种方式的区别
exec 在容器中打开新的终端 并且可以启动新的进程

attch 直接进行容器终端,不会启动新的进程

5.6进入容器内拷贝文件到主机

docker cp 容器ID:容器内的路径 宿主机目录
在这里插入图片描述

6.视频地址

https://ke.qq.com/course/469242?taid=3997450616908026&tuin=21f98a63

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

标签:03,教程,容器,ID,镜像,Docker,docker,运行
来源: https://blog.csdn.net/zhoujunfeng121/article/details/104802024

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有