了解docker

本文介绍了Docker的核心概念,包括什么是Docker容器,它是如何解决系统环境不一致问题的,以及镜像的原理和使用。此外,文章还详细讲解了Docker的基本命令,如镜像管理、容器创建和删除等,以及离线安装容器的方法。
摘要由CSDN通过智能技术生成

docker

简介

什么是docker

docker是一个用来装应用的容器,就像杯子可以装水,我们可以将helloworld方法放到docker中,可以把网站放入docker中,可以把任何想要的程序放在docker中

docker解决的问题

系统环境不一致

CPU硬盘过载会杀掉对应进程

应对高并发的情景

镜像 image

从本质上来说镜像就是一系列文件,可以包括我们应用程序的文件,也可以包括我们应用的运行环境的文件,既然是文件,那么是以什么样的格式在本地保存的呢?

说到存储格式,就要提到linux的一个存储技术,叫做联合文件系统,是一种分层的文件系统,可以将不同的目录挂到同一个虚拟文件系统下

比如test1下有三个文件夹,test2下有两个文件夹,还有一个readme文件.联合文件系统就是可以在一个文件夹(test)中看到多个文件夹(test1,test2)中的内容.

img

通过这种方式可以实现文件的分层,test1可以把它看作第一层,test2可以把它看作第二层,每一层有每一层自己的文件,docker就是利用了这种分层的概念实现了镜像存储.

下图就是镜像的存储格式,这张图是分层的,最下面一层,上面也是一层层的好像集装箱罗列在一起.这就是镜像最直观的存储方式.下面是操作系统的引导,上面是linux操作系统,再上面是一些相关的软件,如果是我们自己的程序,就可以是tomcat,jdk,再往上是应用代码,每一层是我们自己都可以控制得,最上面一层先忽略不看,因为这是和容器有关的.注意一点,docker镜像系统的每一层都是只读的,然后把每一层加载完成之后这些文件都会被看成是同一个目录,相当于只有一个文件系统.docker的这种文件系统被称之为镜像.

img

容器

每个虚拟机都有自己的文件系统,可以把上图整个一部分看成是文件系统,与虚拟机系统的区别是这里面的文件系统是一层一层的,并且最下面的n层都是只读的,只有上面一层是可写的.为什么要有可写的这层呢?大家的程序运行起来,势必会要写一些日志,写一些文件,或者对系统的某一些文件做一些修改,所以容器在最上面一层创建了可读可写的文件系统.

在程序的运行过程中,如果要写镜像文件时,因为镜像的每一层都是只读的,它会把文件的每一层拷到文件的最上层,然后再对它进行修改,修改之后,当我们的应用读一个文件时会从顶层进行查找,如果没有才会找下一层.

由于容器的最上一层是可以修改的,镜像是不能修改的,这样就能保证镜像可以生成多个容器独立运行,没有任何干扰

仓库

我们的镜像是要在其它机器上运行,如何进行传输呢?

这就用到了docker仓库,我们要先把我们的镜像传到docker仓库中,再由目的地把docker仓库拉过去,这就完成了这样的一次传输过程.

docker基本命令

镜像相关

查看镜像

sudo docker images

镜像搜索

sudo docker search xxx 

下拉镜像

sudo  docker pull 镜像名
sudo docker pull 镜像名:Tag

删除镜像

sudo docker rmi -f 镜像名/镜像ID

保存镜像

docker  save 镜像名/镜像ID -o 镜像保存的位置与名字

容器相关

容器列表

sudo docker ps
sudo docker ps -a  查看所有容器,正在运行和已经停止

创建容器

docker run -it -d --name 要取的别名 -p 宿主机端口:容器端口 -v 宿主机文件存储位置:容器内文件位置 镜像名:Tag /bin/bash
-it 表示 与容器进行交互式启动
-d 表示可后台运行容器 (守护式运行)  
--name 给要运行的容器 起的名字  
/bin/bash  交互路径
-p 将容器的端口映射到宿主机上,通过宿主机访问内部端口
-v 将容器内的指定文件夹挂载到宿主机对应位置

停止容器

sudo docker stop 容器名/容器ID

删除容器

删除单个
docker rm -f 容器名/容器ID
删除多个
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID 
删除全部
docker rm -f $(docker ps -aq)

进入容器

sudo docker attach 容器ID/容器名

离线拷贝方法

在Ubuntu环境下打包Docker容器

docker save -o container.tar container-image:tag

在目标服务器上离线安装Docker容器

首先加载tar文件
docker load -i container.tar
然后运行容器
docker run -d --name container -name -p host-port:container-image:tag

其中, container-name 是容器的名称, host-port 是主机端口, container-port 是容器端口, container-image:tag 是容器的名称和标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值