一、docker常用命令?
1. 常用帮助命令
1.1 docker的信息以及版本号
/*
docker info 查看docker的信息 images2 docker本身就是一个镜像。
docker version 查看docker的版本号
*/ 1.2 docker的启动,停止,重启,查看状态。
// service docker start/stop/restart/status 二、镜像命令? 1. 列举出所有的镜像(本地镜像)
/* docker images 所拥有的参数:
docker images --no-trunc
docker images --no-trunc --no-trunc:显示完整的镜像信息
docker images -a -a:列出本地所有的镜像(包括不完整/损坏的镜像信息)
docker images -q -q:只显示镜像的id
docker images --qa -qa:可以连用,显示出所有镜像id(包括不完整/损坏的镜像)/-q -a
docker images --digests --digests:显示镜像的摘要信息 所拥有的参数:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-world latest 9f5834b25059 8 months ago 1.84 kB 1. REPOSITORY:
!目前为止!理解为镜像的名字
2. TAG:
镜像的版本号
如果下载镜像的时候不携带版本号默认为最新版(latest)
3. IMAGE ID:
镜像的唯一标识符
4. CREATED:
镜像所被创建的时间(镜像所被下载的时间)
5. VIRTUAL SIZE:
该镜像占用本地硬盘的大小 */ 2. 搜素镜像的命令? // docker search 镜像名 1.1 搜索出详细的信息。
docker search --no-trunc 镜像名
// docker search --no-trunc tomcat 2. -s:列出收藏数不小于多少的镜像
// docker search -s 50 tomcat 3. --automated:只显示automated类型的镜像 也就是说忽略官方所提供的镜像
// docker search --automated tomcat 4. 混合使用。
// docker search -s 50 --automated tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementa... 2524 [OK]
tomee Apache TomEE is an all-Apache Java EE cert... 67 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 53 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 29 [OK] NAME:镜像的名字 DESCRIPTION:对于这个镜像的描述 STARS:点赞数(收藏数) OFFICIAL:官方提供 AUTOMATED:开发者提供 命名规则:
除了官方所提供的docker镜像之外,其他人提供的镜像必须要添加命名空间
xxxx/tomcat:Seven/tomcat 3. 下载(拉取)镜像 docker pull 镜像名。
// docker pull tomcat:7 所拥有的参数:
docker pull tomcat:8
:8代表了tomcat的版本号,如果不写则下载就是最新的镜像
如果下载镜像则会下载镜像的所有版本(最终使用到什么版本直接使用,不再需要下载)
tomcat:6
tomcat:5.0.1(默认下载的是第一个小版本)--->tomcat:5.22--->覆盖5.0.1版本
tomcat:7
tomcat:8
tomcat:9
.... 4 删除镜像?
1.删除单个镜像
// docker rmi 2.可以根据id进行删除
docker rmi 9f5834b25059 3.还可以根据镜像的名字进行删除
如果根据镜像名字进行删除的时候不指定版本号,会怎么样?
会删除这一类型的所有镜像 (会删除latest(包含了所有的版本))(如果下载的为latest版本,会把所有的版本全部下载)
docker rmi 镜像名:版本号
// docker rmi redis
// docker rmi tomcat:8 4.所拥有的参数:
-f:强制删除 还在启动中的。
// docker rmi -f hello-world 5.删除多个镜像
// docker rmi -f tomcat:7 hello-world redis
镜像和镜像之间用空格隔开即可 6.删除所有的镜像
-qa:获取所有的镜像的id
获取到所有的镜像id
根据id进行删除
// docker rmi -f $(docker images -qa) 5.保存镜像到本机(linux)硬盘
docker save -o nginx.tar.gz(保存到本地硬盘上的名字) nginx(docker本地仓库中的名字)
// docker save -o nginx.tar.gz nginx
会保存在光标所在的当前所在目录 6.把镜像导入到dicker本地仓库
// docker load --input nginx.tar.gz 该目录中必须要有nginx.tar.gz
或者使用
// docker load < nginx.tar.gz 三、容器命令?
1.通过镜像新建并启动容器
docker run 镜像的名字:版本号
// docker run centos:7 1. 所拥有的参数:
--name="":给容器起一个名字,如果不使用该参数则会随机名字
docker run -it --name=xxx 镜像名。
// docker run -it --name=zhou_centos centos:7 2. -d:后台运行(守护式进程) 3. -i:与以交互模式运行容器(交互式进程),一般情况下-i和-t连用(-it)
// docker run -it centos:7 // docker run -it --name=zhou_centos centos:7 // exit 退出 4.-t:给容器打开一个新的终端(命令行) 5.-P(大写):随机端口号运行
tomcat所默认的端口号为8080,当使用-P启动的时候,为了防止端口号被占用,docker会默认随机指定一个端口号(6060),然后把指定的这个端口号(6060)指向tomcat所默认的端口号(8080)
当使用浏览器访问的时候8080端口号会失效,必须要是用docker所随机出的端口号进行访问!!! 6.-p(小写):指定端口号运行
// docker run -it -p 8081:8080 tomcat:8 2.显示所有正在运行的docker容器
docker ps
所拥有的参数:
-a:显示所有的容器信息
//docker ps -a -q:只显示容器的id
//docker ps -q -l:显示最近创建过的一个容器
//docker ps -l -n:显示最近创建过的n个容器
//docker ps -n 3 3个容器 3.退出容器
exit:退出并停止容器(让容器直接停止,不在后台进行运行)
crtl+P+Q:退出容器但是不停止容器运行(让容器在后台继续运行) 4.启动容器(启动已经停止的容器)
docker start 容器的名字/容器的id
// docker start f65b45607510
// docker start centos:7 只能把容器作为后台运行,没有办法开启交互式 5.重启容器
docker restart 容器的名字/容器的id
// docker restart f65b45607510
6.停止容器
docker stop 容器的名字/容器的id
// docker stop f65b45607510 7.强制停止容器
docker kill 容器的名字/容器的id
// docker kill f65b45607510 8.删除已经停止的容器(强制删除使用-f)
删除单个容器根据id来操作。
docker rm 容器的id
// docker rm f65b45607510 强制删除使用-f
// docker rm -f f65b45607510 删除多个容器
// docker rm -f $(docker ps -qa) 删除多个容器 获取使用
// docker ps -qa | xargs docker rm -f 9.启动守护式容器 后台运行!!!
docker run -d 镜像名
// docker run -d centos:7 启动该模式的容器后,该容器为一个挂起状态,需要使用的时候直接唤醒,如果不需要使用则直接可以删除,并且这种启动的好处在于不占用系统内存
一般情况下大批量的启动容器的时候需要(1500个容器) 如果启动的容器都是交互式,每一个容器就会占用内存,虽然每一个容器内存占用很小,启动到第1300个的时候内存被占满了,剩下的容器无法启动,按需加载(先把这1500个容器全部启动为守护式,最终需要用到哪些然后进行唤醒(java代码)) 10.查看容器日志(一般报错的时候才会使用,运维查看)
docker logs -f -t --tail=条数 容器的id
// docker logs -f -t --tail=5 c65ccc378bb8 11.查看容器内部运行的进程
docker top 容器的id
// docker top f65b45607510 查看当前容器在本机系统的信息 12.查看容器的详细信息(数据卷的时候会用到)
docker inspect 容器的id
// docker inspect f65b45607510 13.重新【以交互】的形式进入到正在运行的容器中? 交互式重新启动? 不会打开新的终端,也就是说不会启动新的进程(仍然是老的进程),直接返回所要访问的结果
1. docker exec -it 容器的id
// docker exec -it f65b45607510 需求:
查看id为96cc01843e9c的容器中根目录下所有的信息
cd /
ll // docker exec -it 96cc01843e9c ls -l
docker只会安装基础版的linux(按需加载,需要到什么样的工具或者配置文件才会加载) 重新打开新的终端,开启新的进程
2. docker attach 容器的id
// docker attach f65b45607510 14.把容器中的文件复制到主机上
1. 现在虚拟机上创建 /home/apps/66.txt 文件 2. 在另一个中终端上打开,docker 。 在主机上操作。
docker cp 容器的id:容器的路径 主机的路径
// docker cp e62c23a8029d:/home/apps/66.txt /home/apps/ 实列运用
/*
在docker上运行一个Tomcat? 1. pull一个tomcat8的镜像
docker pull tomcat:8 4.1.1.指定端口号运行(小写的p)
docker run -it -p 8081:8848 tomcat:8 4.1.2.随机端口号运行 (大写的p)
docker run -it -P tomcat:8
通过docker ps命令查看随机指定的端口号 2.通过容器创建镜像
docker commit -a="作者" -m="描述" 容器的id 新的镜像的名字:新镜像的版本号
(!!!!!所有的过程不能停止容器!!!!!)
需求:
创建新的tomcat镜像(不带example文件夹,也就是说tomcat主页面上点击exampl按钮的时候会进入404页面) 4.2.1.先启动tomcat8容器
docker run -it -p 8081:8080 tomcat:8 4.2.2.再打开一个新的终端并且进入到正在启动中的tomcat容器中
docker exec -it 容器的id(9462ab070461) /bin/bash(docker所提供的常规命令,支持系统的命令行(无论是什么系统)),bash文件就是操作系统所提供的基础命令 4.2.3.删除example目录
rm -rf example
现在容器已经变成没有example目录的新tomcat容器 4.2.4.根据新的容器创建一个新的镜像并且放到docker的本地仓库中
docker commit -a="seven" -m="this is tomcat server's contianer without example" 9462ab070461 seven/tomcat:20 */ 四、数据卷(在容器中存在) // 把容器中的数据持久化到本机的硬盘中,做数据共享
宿主机(本机linux系统)
需求:
把本机中/home/hostData文件夹和容器中的/home/containerData文件夹进行数据共享 5.1.把数据持久化到主机中
docker run -it -v /主机的路径(/home/hostData):/容器的路径(/home/containerData) 镜像名 5.2.查看是否配置成功
docker inspect 容器的id
"Volumes": {
"/home/containerData": "/home/hostData"
}
"Binds": [
"/home/hostData:/home/containerData"
] 思考问题:
把容器停掉,修改主机上的文件,那么容器会自动同步么?
5.2.1.停止容器
exit
5.2.2.修改主机上的文件
5.2.3.再次启动容器
docker attach 容器的id(6ffba5256bee)
容器会一直监视主机目录的变化(容器停止后就不再监视)
当容器重新启动,就直接启动监听,一旦监听到主机目录和容器的目录数据不一致,则会自动同步(需要一些时间) 5.3.实现带权限的持久化数据
主机可以任意修改目录数据,但是容器不能修改!
主机有读和写的权限,但是容器只有读的权限
思考问题:
读写分离
当docker中部署了mysql集群(读写分离),写的数据可以持久化到本机硬盘中,但是读的mysql服务器并不能对主机的硬盘拥有写的操作
docker run -it -v /主机的路径:/容器的路径:ro(read only) 镜像的名字
查看是否配置成功:
"VolumesRW": {
"/home/containerData2": false
} // !!!!!!!开发docker其实就是编写dockerFile!!!!!!!! 五、使用dockerFile创建镜像
需求:
通过dockerFile创建centos7镜像(容器中的containerData2和containerData3和主机中的hostData做数据共享)
6.1.在home目录下创建dockerfiles文件夹
mkdir dockerfiles 6.2.在dockerfiles文件夹中创建Dockerfile文件
touch Dockerfile 6.3.编写Dockerfile文件
FROM centos:7(当前的环境为centos7)
VOLUME ["/home/containerData3","/home/hostData3"](顺序我忘了,如果写反了你们自己更正)
CMD /bin/bash 6.4.执行创建命令
docker build -f /home/dockerfiles/Dockerfile -t 创建的镜像名称:版本号 .
"."就代表了当前所在目录,如果Dockerfile就在你当前的所在目录直接使用"."即可
如果Dockerfile没有在你的当前目录,需要指向docker所在的目录
docker build -f /home/dockerfiles/Dockerfile -t 创建的镜像名称:版本号 /home/dockerfiles 6.5.启动镜像创建容器
docker run -it centos_seven:7 六、dockefile的语法规则
7.1.FROM 基础镜像,当前新镜像是基于哪个镜像的。
7.2.MAINTAINER 镜像维护者的姓名和邮箱地址
7.3.RUN 容器构建时需要运行的命令
7.4.EXPOSE 当前容器对外暴露出的端口号
7.5.WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录,落脚点,默认是根目录/
7.6.ENV 用来在构建镜像过程中设置环境变量
7.7.ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
7.8.COPY 类似ADD,拷贝文件和目录到镜像中。eg. COPY src dest or COPY ["src","desc"]
7.9.VOLUME 数据容器卷,用于数据保存和持久化工作。
7.10.CMD指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
7.11.ENTRYPOINT 指定一个容器启动时要运行的命令。目的和CMD一样,但docker run 之后的参数会追加而不是替换。
7.12.ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的ONBUILD被触发
docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。的更多相关文章
-
Docker学习笔记:镜像、容器、数据卷
核心概念 镜像:一个只读的模板,类似虚拟机的镜像. 容器:可以理解为镜像的一个运行实例.运行时类似于沙箱,多个容器互相独立. 仓库:存放镜像文件的地方. 镜像 命令表格 命令 解释 选项 docker ...
-
1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云
一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...
-
Docker镜像与容器命令(转)
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
-
Docker学习总结(4)——Docker镜像与容器命令
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...
-
Docker镜像与容器命令 专题
https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html docker的工作流程图: 至少需要配备三样东西去使用doc ...
-
(三) Docker 常用操作与CentOS7 防火墙命令
参考并感谢 Docker 常用命令 https://docs.docker.com/engine/reference/commandline/docker/ Docker 登录docker账户 doc ...
-
docker 数据卷和docker数据卷容器以及数据卷的备份和还原
一:数据卷 1.什么是数据卷 数据卷是通过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供服务,数据卷是在docker宿主机当中,数据卷可以是文件也可以是文件夹. 2.特点 1.数据卷在容 ...
-
Docker 容器的数据卷
数据卷的特点: 1. 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中 2. 数据卷可以在容器之间共享和重用 3. 可以对数据卷里的内容直接进行修改 ...
-
Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。
Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...
随机推荐
-
AxureRP8实战手册(基础1-10)
基础操作篇 本篇包含56种常见的基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍.同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握. 第1章 使用元件 本文目 ...
-
通过dbms_xplan.display_cursor识别低效的执行计划
dbms_xplan.display_cursor定义: function display_cursor(sql_id varchar2 default null, ...
-
在地图上添加POI(二)
在上一篇中实现一个icon + label的Marker需要使用两个Tangram的Marker, 今天分析了Tangram的源码后, 发现Tangram时支持单一Marker同时显示的, 这需要使用 ...
-
javascript在一个字符串中每隔多少字符插入某个字符串
function insertStr(str,tar,n,m){ var x='' var str=str.split('') if(str.length==0) return for(var i=n ...
-
什么是B-Tree
B-Tree就是我们常说的B树,一定不要读成B减树,否则就很丢人了.B树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高. B-Tree与二叉查找树的对比 我们知道二叉查找树查询的时间复杂度 ...
-
LightOJ1259 Goldbach`s Conjecture
题面 T组询问,每组询问是一个偶数n 验证哥德巴赫猜想 回答n=a+b 且a,b(a<=b)是质数的方案个数 Input Input starts with an integer T (≤ 30 ...
-
通过数据流处理-微信小程序生成临时二维码
1.小程序代码 onLoad: function (options) { var that = this api.Login(function (login) { var codeModel = ne ...
-
ES 06 - 通过Kibana插件增删改查ES中的索引文档
目录 1 document的结构 2 document的常见CRUD操作 2.1 添加商品: 添加文档并建立索引 2.2 查询商品: 检索文档 2.3 修改商品: 替换文档 2.4 修改商品: 更新文 ...
-
在原生Windows安装Keras
既然要深入学习,就不能和时代脱节,所以选择了keras,资源相对比较丰富.由于Windows饱受歧视,各种文档都不推荐使用.但我又没有换系统的成本,所以还是凑合下,毕竟他们给出了方法,稍微折腾一下还是 ...
-
Python作业
1使用while 循环输入1,2,3,4,5,6,,8,9,10 count = 0 while count<10: count+=1 if count ==7: continue print( ...