docker的常用命令汇总和基本概念详解

2019-11-05 16:59栏目:编程
TAG: docker


Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
dockerps//查看当前运行中的容器
dockerps-a//查看所有运行过的容器
dockerinspectcontainerId(容器ID或容器名)//查看对应容器的具体配置信息
dockerportcontainerId//查看对应容器端口映射
dockerrun--namecontainerName-it-p80:80-d//--name是为容器取一个别名,-p80:80是端口映射,将宿主机的80端口映射到容器的80端口上,-d是指后台运行容器,即容器启动后不会停止,-it是-i和-t的合并,以交互模式运行容器。(-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开)
dockerimages//查看所有镜像
dockerexec-itcontainerName/bin/bash//进入已启动的容器内,新启一个进程,执行命令。
dockerstopcontainerName//停止一个容器
dockerstart-icontainerName//重启启动一个运行过的容器
dockerrmcontainerName//移除一个容器
dockerps// 查看当前正在运行的容器
dockerps-a// 查看已关闭的容器列表
dockerps-l// 查看最近启动的容器信息
dockerimages(dockerimagesls默认是列出顶级镜像列表)// 列出本地主机上的镜像列表
dockerimagels-a//查看所有镜像(包括中间层镜像)
dockerpull//下载指定的镜像
dockersearch//查找镜像,从dockerHub上查找需要下载的镜像
dockerport//查看端口的绑定情况

docker命令详解
构建docker镜像需要创建Dockerfile文件
dockerbuild-t"镜像名" . // t代表创建指定的目标镜像名 .代表当前Dockerfile文件目录
dockertag"镜像id" "镜像名" : "新的标签名" //为镜像添加一个新的标签(local,dev,proc)
dockerrun-d-P(-p)//启动一个应用容器 (-d表示让container运行在后台,-P:是容器内部端口随机映射到主机的高端口。-p:是容器内部端口绑定到指定的主机端口)。
sudodockerrun-i-tubuntu/bin/bash//
(/bin/bash表示载入容器后运行bash,docker中必须要保持一个进程的运行,要不然整个容器就会退出。
这个就表示启动容器后启动bash。)
docker镜像(image)和容器(container)的关系相当与java中的类与实例的关系一样,容器的实质是进程,但与直接在宿主执行的进程有所不同
容器进程运行于自己独立的命名空间(命名空间是Linux内核的一项功能,它对内核资源进行分区,使得一组进程看到一组资源,
而另一组进程看到一组不同的资源).
docker-registry:镜像构建完成后,可以很容易在当前的宿主机上运行,如果需要在其他服务器上使用该镜像,则需要一个集中的存储丶分发镜像的服务.
docker-registry公开服务:是开放给用户使用,允许用户管理镜像的registry服务.(docker-hub是官方的公开服务)
一个docker-registry中可以包含多了仓库(repository);每个仓库包含多个标签(tag),每个标签对应一个镜像
linux命令中的反斜线符号“\”在Bash中被解释为转义字符,用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值,除了换行符,
比如:dockerrun-it--rm\
ubuntu:18.04\
bash
查看当前linux操作系统的的版本命令:cat/etc/os-release
dockerrun-itubuntu:18.04bash(it是-i和-t的结合体,-i(interaction交互)表示交互式操作,-t(terminal)代表终端)
dockerrun-t-iubuntu:18.04/bin/bash(-t代表docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开)
虚悬镜像(danglingimage):新旧镜像同名,旧镜像名称被取消,会出现仓库名和标签都为none的镜像称为虚悬镜像.
删除镜像: dockerimagerm
为了加快镜像的构建,重复利用资源,docker会利用中间层镜像.上层镜像依赖于中间镜像,所以不可删除中间镜像.会导致上层镜像的依赖关系出错
查看指定的镜像列表:dockerimagelsubuntu //根据仓库名列出镜像
dockerimagelsubuntu:18.04 //根据仓库名和标签列出镜像
dockerimagels命令还包含过滤的功能(--filter),简写-f,比如查询仓库名为ubuntu之后建立的镜像列表.
dockerimagels-fsince=ubuntu:18.04 //查看镜像ubuntu18.04之后的镜像列表
dockerimagels-fbefore=ubuntu18.04 //查看镜像ubuntu18.04之前的镜像列表
dockerimagels-q //列出所有顶层镜像的id,也可配合-f来检索指定范围的id列表
dockerimagels--format"table{{.ID}}\t{{.Repository}}\t{{.Tag}}"//自定义格式输出镜像列表

镜像的唯一标识是id和摘要,一个镜像可以有多个标签,镜像是容器的基础,每次执行dockerrun的时候都会指定哪个镜像作为容器运行的基础,当从公共服务(dockerregister)中无法获取自己需要的镜像时,此时需要定制这些镜像.

容器 = 镜像 + 可读可写层(也就是容器的存储层)
启动一个web应用时:dockerrun--namemywebserver-d-p80:80nginx// --name自定义容器的名称 -d(daemon后台程序)使容器在后台运行, -p指定映射端口(也就是容器的内部端口和宿主端口进行绑定)
使用dockerexec命令可进入容器,修改内容.
dockerexec-itwebserverbash
可通过dockerdiff + 容器名来查看容器的变更记录
对容器进行了修改后,如果想将其改动保存下来形成镜像,我们需要使用dockercommit命令(dockercommit命令慎用,会有很多的黑箱操作无法显示出来)
dockercommit\
--author"xiaofeifei<837698719@qq.com>"\=>指定修改的作者
--message"修改了默认的访问网页内容" \   =>记录本次修改的内容
mynginx\
nginx:v2
dockerhistory + 容器的名称 + 标签名 //查看镜像内的历史记录

使用Dockerfile定制镜像
镜像的定制实际上就是定制每一层所添加的配置,文件.Dockerfile文件一行指令构建一层.
Dockerfile文件内容实例如下:
FROMnginx
RUNecho'<h1>Hello,Docker!</h1>'>/usr/share/nginx/html/index.html
(1)FROM指定基础镜像,定制镜像是在以一个镜像为基础上对其进行定制.
(2)RUN指令是用来执行命令行命令的,其格式分为两种:
(1)shell格式:RUN<命令>
(2)exec格式:RUN["可执行文件", "参数1", "参数2"] 比如:RUNapt-getupdate
使用dockerbuild命令来构建镜像:
dockerbuild[选项] <上下文路径/URL/->
ps:dockerbuild-tnginx:v3 .// -t代表--taglist表示构建的镜像的名称和标签名(可选的)
//.代表上下文路径,并非是Dockerfile文件所在的路径
镜像构建上下文
dockerbuild的工作原理:Docker在运行时分为Docker引擎(也就是服务器的守护进程)和客户端工具,Docker引擎提供了一组RESTAPI,称为Dockerremoteapi,对于dockerbuild命令这样的客户端工具,则是通过这组api和docker引擎进行交互的,从而完成各种功能.
Dockerfile文件详解:
(3)COPY <源路径>... <目标路径>(官方建议使用该命令)
copy指令将从构建上下文目录中也就是<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>的位置.(目标路径可以是相对于工作目录的绝对路径也可以是相对路径)
(4)ADD是COPY的加强版(不建议使用,适用于自动解压.zip,tar,xz等压缩文件)
(5)CMD容器启动命令: CMD<命令> ps:CMDecho$HOME

容器就是进程,启动时需要指定所运行的程序及参数,cmd命令就是用于指定默认的容器主进程的启动命令的.ubuntu镜像默认的CMD是 /bin/bash.
操作容器:
dockercontainerstart //启动一个容器
dockercontainerlogs //查看容器的日志
dockercontainerstop//终止容器
dockercontainerrestart // 重启容器
dockercontainerrm//删除容器
dockercontainerprune//清空所有处于终止状态的容器
使用-d参数,容器启动后会进入后台
某些时候需要进入容器进行操作,可使用dockerattach(进入容器后,使用exit会导致容器停止)或 dockerexec命令,推荐使用dockerexec
导入导出容器:
导出容器:dockerexport7691a814370e>ubuntu.tar
导入容器:catubuntu.tar|dockerimport(load)-test/ubuntu:v1.0(也可以url形式导入)
访问仓库(repository):
DockerRegister(注册服务器)是管理仓库(repository)的具体服务器,每个服务器上有多个仓库,每个仓库上有多个镜像.可以认为仓库是一个具体的项目或者目录.ps:dl.dockerpool.com/ubuntu是仓库地址,dl.dockerpool.com是注册服务器地址
dockerlogin//登录DockerHub
dockerlogout//退出登录
dockersearch//查找官方仓库的镜像
dockerpull//拉取镜像到本地

上一篇:java实现list分组,list根据某个字段分组

本文来自网络,不代表山斋月平台立场,转载请注明出处: https://www.shanzhaiyue.top