Docker介绍及相关操作命令

一、Docker是什么

二、Docker的基本命令

1 容器操作的相关命令

2 镜像操作的相关命令

一、Docker是什么

       Docker是一个应用打包、分发、部署的工具,你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要。

Docker(容器)跟普通虚拟机的对比Docker介绍及相关操作命令_第1张图片Docker介绍及相关操作命令_第2张图片

打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包

分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装

部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一模一样的运行环境,不管是在Windows/Mac/Linux

Docker的基本组成Docker介绍及相关操作命令_第3张图片镜像:Docker 镜像(Image)就是一个只读的模板,可以理解为软件安装包,可以方便的进行传播和安装。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

容器:Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例,可以理解为软件安装后的状态,每个软件运行环境都是独立的、隔离的。它可以被启动、开始、停止、删除。事实上容器就是一个可读可写的镜像文件。

仓库:集中存放镜像文件的场所。仓库 (Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中包含了多个镜像,每个镜像有不同标签(tag)。

Docker的应用

• 应用分发、部署,方便传播给他人安装,特别是开源软件和提供私有部署的应用;
• 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上,例如Redis/MongoDB/ElasticSearch/ELK
• Windows上体验/学习各种Linux系统
• 持续集成 
• 提供PaaS产品(平台即服务)

二、Docker的基本命令

命令参考:命令

1 容器操作的相关命令

创建容器的命令如下,image代表一个镜像的名称:

docker container run 

#例如创建nginx
docker container run nginx

#例如创建ubuntu镜像
docker container run ubuntu

       输入完成后,直接回车。如果系统中没有这个镜像,Docker会自动去Docker Hub上拉取对应的镜像到本地,然后执行对应的Shell脚本,脚本会把镜像自动安装到Doker容器里,并最终启动对于的镜像服务。

Docker Hub 是Docker官方的镜像和社区,里边有很多开发者制作好的镜像,我们可以直接使用这些镜像。如果你有能力,也可以制作镜像,并上传到Docker Hub。

注意:这时候容器是在前台运行的。

查看容器的相关命令

       创建万容器后,如何查看这个容器的信息和状态呢?这时候你可以新打开一个powerShell窗口使用下面的命令:

docker container ls

       输入命令后,就会显示出当前已经存在的容器,并且会列出对应的信息,但只显示正在运行的容器,想要显示包括已经停止的所有容器,运行下面这个命令:

docker container ls -a

停止容器的相关命令

       如果你想停止掉一个正在运行的容器,可以使用下面的命令:

docker container stop 

删除容器

当我们停止容器之后,容器并没有删除,而只是停止掉了。这时候可以使用下面的命令删除容器:

docker container rm 

多容器操作和强制删除容器的方法

       在实际工作中,我们往往管理的都是多个容器,这也是容器的主要特点之一,这里说一下对于多个容器的操作。

创建多个容器

       在WIndows环境下我们来作这个,先打开三个PowerShell窗口,然后在每个窗口中输入创建容器的命令,这里以Nginx镜像为例

docker container run nginx

       然后再重新打开一个PowerShell窗口,输入查看命令,查看已经开启的容器。

docker container ls

       可以看到现在已经有3个开启的容器了

停止多个容器

       现在要把三个容器用一个命令停掉,笨的方法是直接加上ID或名字:

docker container stop 

       但如果这时候有100个容器,我们用这种方法就会非常麻烦。这时候我们需要学一个新的查看命令,比如只查看现在所有容器的ID,命令如下:

docker container ls -aq

       这样就打印出了所有容器的ID,这时候包括没有开启的:

        有了这个命令之后,我们可以作一个命令组合:

docker container stop $(docker container ls -qa)

       命令执行后,会返回给我们容器的编号,说明已经停止了。可以使用下面的命令再次查看,就可以看到,所有容器不在是up状态了,而是exited状态。

Docker介绍及相关操作命令_第4张图片

删除多个容器

       删除多个容器类似停止多个容器

docker container rm $(docker container ls -aq)

强制删除容器

       正在运行的容器,是不可以直接删除的,会报错。例如,新建一个容器后,新开一个PowerShell,直接使用rm命令删除,会直接报错。具体如下:

Docker介绍及相关操作命令_第5张图片

       报错信息大体就是不能删除没有stop的容器。但这时候就是要删除,可以使用强制删除命令。

docker container rm  -f

       输入完成就删除成功了。

容器的attached 和 detached 模式

       容器的端口没有跟服务器的端口映射,没有办法在外网访问,想要在外网访问必须做端口映射。这里说明Docker的端口映射和两种运行模式attached和detached模式。首先看一下如何把一个容器的端口映射到主机的80端口上。在开启端口映射之前,你首先要知道Docker对应的容器端口是多少。比如Nginx镜像的端口是80。知道这个端口后,就可以在启动容器的时候,用-p  的形式,启用映射了,第一个port为服务器的端口,一般的web对外访问端口为80,默认也为80,第二个port为容器的端口。

docker container run -p 80:80 nginx

       等待项目启动后,打开浏览器窗口,在地址栏输入127.0.0.1,就可以打开nginx的默认网址。

       attached 和 detached 模式这两种模式最简单的对比理解就是:attached模式在前台运行,detached模式在后台运行detached模式的开启方法,就是加一个参数-d或者--detach

2 镜像操作的相关命令

Image镜像的拉取和删除

       当在PowerShell里输入docker image 命令后,会出现对于Image操作的所有命令和提示(算帮助信息吧)。

Docker介绍及相关操作命令_第6张图片

        这些命令中可以看到pull的使用方法是用于拉取镜像。比如去拉取一个wordpress的镜像来试试。打开hub.docker.com,进入explore后,搜索pytorch,选择镜像后点击进入主页,右侧会告诉你拉取的方法。

Docker介绍及相关操作命令_第7张图片

        这条命令是docker pull pytorch/pytorch, 细心的小伙伴一定可以发现,正常应该是docker image pull pytorch/pytorch,不写image是老版本的写法,你也可以理解为简写,但建议大家把命令写全,也就是带上image。如果是第一次拉取镜像是需要下载过程的,需要下载很多依赖的基础镜像。具体快慢会和网速有关。

查看现有镜像

       查看镜像列表的方法,通过下面这条命令就可以查看Docker中有的镜像和相关信息。

docker image ls

       查看具体镜像信息,inspect检查的意思。执行这条命令后就会显示很多关于这个镜像的详细信息。

docker image inspect 

删除镜像

docker image rm 

       需要注意的是,当有容器在使用镜像时,是没有办法被删除的。即使容器是停止掉的,依然是没办法删除的。

Docker镜像的导入导出

导出镜像

       在导出之前,你最好到一个好找的路径下面,比如我这里就选择了D盘,使用mkdir命令创建一个文件夹,进入文件后输入下面的命令。比如现在要导出镜像中的busybox镜像,可以这样写命令。

docker image save busybox:latest -o mybusybox.image

       解读上面的命令,save是导出/保存的意思,busybox:latest是镜像名称+版本号, -o代表输出,mybusybox.image是导出后镜像的名字。

       命令执行完成后,可以看到在执行命令所在的目录下就会多出一个mybusybox.image的文件,这就是刚才导出的镜像了。

导入镜像

       先删除掉本机已有的busybox镜像。

docker image rm busybox

       删除后直接导入镜像。

docker image load -i .\mybusybox.image

       执行完命令之后,再使用docker image ls命令查看,busybox镜像已经回来了。

通过Dockerfile来DIY制作镜像

      除了上述两种获取Docker镜像的方式,第一种是直接从Registry中拉去,第二种是自己导入导出镜像外,还有第三种获得镜像的方法,通过Dockerfile来DIY制作镜像。

       Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

       具体制作可以学习通过Dockerfile来DIY制作镜像

把镜像分享到Dockerhub

       把镜像push到dockerhub上去,这样就可以让所有人进行使用了。具体可以参考把镜像分享到Dockerhub

相关参考:

Docker&Kubernetes从入门到实战教程

Docker labs的github链接

Docker教程

你可能感兴趣的:(docker,linux,运维)