目录
一、概述
(一)docker介绍
(二)为什么使用Docker
(三)docker优势
1、运行环境的一致性:
2、更快速地启动部署:
3、更好的隔离性:
4、弹性伸缩、快速扩展:
5、迁移更加方便:
6、持续交付和部署:
二、docker的组成
(一)镜像:类似虚拟机镜像 , 是一个特殊的文件系统
(二)容器:类似linux系统环境,运行和隔离应用。是镜像运行时的实体
(三)仓库:集中存放镜像文件的地方。
三、在操作系统CentOS7.9安装
(一)配置安装源
(二)建立元数据缓存
(三)安装docker-ce
(四)更换国内源仓库
四、docker 信息查看
(一)docker version
(二)docker info
五、镜像相关
(一)组成
(二)搜索
(三)拉取
1、docker pull imageName 编辑 2、docker pull alpine
(四)查看
(五)删除
(六)上传
(七)修改POSITORY:TAG(修改后保留原image,且imageID相同)
(八)导出
(九)导入
五、容器相关
(一)启动
1、一次性运行(会直接进入容器中,当exit退出容器时,容器停止运行)
2、后台运行(不会直接进入容器,若进入后exit退出,容器依然运行)
(二)查看
(三)进入(CONTAINER ID 写到不重复即可)
(四)推出
(五)删除容器
(六)将容器导出为归档包
(七)将容器导入的归档包导入为镜像
(八)将容器直接导出为镜像(服务容器导出为镜像采用该方法)
(九)状态
1、created
2、 up
3、Exited
4、paused
(十)查看容器详细信息
(十一)端口映射
1、-P(大写) 随机端口映射,默认32768
2、-p(小写) hostPort:containerPort
3、若发现不能正常进行访问
(十二)查看容器端口映射
(十三)向容器内拷贝文件
(十四)查看容器运行进程
(十五)查看容器资源使用
(十六)查看容器日志
一、概述
(一)docker介绍
1、Docker 就像是一个轻量级的虚拟机,Docker是一个轻量级的容器,我们可以将环境交给 Docker 来管理,当我们需要移植我们的产品的时候,就可以将环境整个的迁移到另一台主机上,而不像虚拟机一样,迁移一台虚拟机及其资源;
2、Docker 是一个开源的应用容器引擎,基于 Go 语言开发。
3、Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
4、Docker相较于虚拟机来说具有更加轻量,启动更快,效率更高,可移植性更强等优势,实现了“一次封装,到处运行”,不用在关心环境的不一致问题
(二)为什么使用Docker
我们知道一款产品从开发到上线,从开发环境到生成环境。作为开发和运维人员之间协作需要考虑很多问题,尤其是当我们的产品多版本迭代之后,不同环境之间的兼容就会成为一个大问题;
这时 Docker 的出现就解决了这一难题,Docker 的出现使我们开发的软件可以“带环境安装”,即安装的时候,可以把原始环境一模一样的的复制过来,不用在担心环境不一致导致“开发时可以正常运行,生成环境就会出问题”,“在我的机器上可以正常运行,在别人的机器上就不能运行”的问题了
(三)docker优势
1、运行环境的一致性:
Docker 的镜像提供了除了内核之外完整的运行环境,确保了应用运行的一致性;
2、更快速地启动部署:
可以做到秒级,甚至毫秒级的的启动时间。大大节约了开发、测试、部署的时间;
3、更好的隔离性:
每个服务器都是独立运行的、完全隔离的。避免公用的服务器,资源会容易受到其他用户的影响;
4、弹性伸缩、快速扩展:
能够更好的处理集中爆发式的服务器使用压力;
5、迁移更加方便:
“带环境安装”;
6、持续交付和部署:
使用 Docker 可以通过定制镜像来实现持续集成,交付,部署;
二、docker的组成
(一)镜像:类似虚拟机镜像 , 是一个特殊的文件系统
1、操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。
2、Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
(二)容器:类似linux系统环境,运行和隔离应用。是镜像运行时的实体
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
(三)仓库:集中存放镜像文件的地方。
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中存储、分发镜像的地方,比如后面我们要学的,Docker Registry就是这样的服务。
三、在操作系统CentOS7.9安装
注意:不要关闭防火墙
(一)配置安装源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(二)建立元数据缓存
yum makecache [fast]
(三)安装docker-ce
yum install -y docker-ce
(四)更换国内源仓库
vim /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
systemctl restart docker
四、docker 信息查看
(一)docker version
(二)docker info
五、镜像相关
(一)组成
index/name:tag #tag为latest时不用书写
(二)搜索
docker search keyWord
(三)拉取
1、docker pull imageName
2、docker pull alpine
(四)查看
docker images
(五)删除
docker rmi imageName
(六)上传
docker push imageName
docker hub登录 docker login
(七)修改POSITORY:TAG(修改后保留原image,且imageID相同)
docker tag oldName(POSITORY:TAG) newName(POSITORY:TAG)
(八)导出
docker save oldName(POSITORY:TAG) -o filePath/fileName
(九)导入
docker load -i filePath/fileName
五、容器相关
(一)启动
1、一次性运行(会直接进入容器中,当exit退出容器时,容器停止运行)
docker run -it POSITORY:TAG /bin/bash
2、后台运行(不会直接进入容器,若进入后exit退出,容器依然运行)
docker run -itd POSITORY:TAG /bin/bash
(二)查看
docker ps -a
(三)进入(CONTAINER ID 写到不重复即可)
docker exec -it CONTAINER ID /bin/bash
(四)推出
exit
(五)删除容器
docker rm -f 容器名称或者ID
(六)将容器导出为归档包
docker export 容器名称 -o 归档包名称
(七)将容器导入的归档包导入为镜像
docker import 归档包名称 repository:tag
(八)将容器直接导出为镜像(服务容器导出为镜像采用该方法)
docker commit 容器名称或ID repository:tag
(九)状态
1、created
docker create
2、 up
(1)docker start
(2)docker run
(3)docker restart
3、Exited
docker stop 容器运行异常
4、paused
docker pause
docker unpause 恢复
(十)查看容器详细信息
docker inspect 容器名称或者ID
(十一)端口映射
1、-P(大写) 随机端口映射,默认32768
2、-p(小写) hostPort:containerPort
3、若发现不能正常进行访问
可能是运行的shell不正确
(1)查看容器详细信息
(2)docker ps -a --no-trunc
(3)查看COMMAND
(4)将COMMAND中的运行脚本跟在docker run命令的最后
(十二)查看容器端口映射
docker port 容器名称或ID
(十三)向容器内拷贝文件
docker cp 文件名 容器名称或ID
(十四)查看容器运行进程
docker top 容器名称或ID
(十五)查看容器资源使用
docker stats 容器名称或ID
(十六)查看容器日志
docker logs 容器名称或ID
1、--details:显示更为详细的日志信息。
2、--follow(-f):跟踪日志输出。
3、--since:显示自某个开始时间的所有日志。
4、--tail:仅列出最新的N条容器日志。
5、--timestamps(-t):显示时间戳。
6、--until:显示到某个截止时间的所有日志。