全面认识Docker和基本指令
Docker逐渐成为虚拟化技术的佼佼者,Java架构师之路接下来会推出一系列的Docker相关技术文章,Docker技术也是架构师的必备技能。
什么是Docker
Docker 是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotCloud公司,开发者可以打包应用到一个轻量级、可移植的容器中,然后发布到主流Linux系统上运行。
为什么用Docker
持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成,持续交付,部署。开发人员构建后的镜像,结合持续集成系统进行集成测试,而运维人员则可以在生产环境中快速部署该镜像,也可以结合持续部署系统进行自动部署。
更高效的资源利用:Docker是基于内核级的虚拟化,可以实现更高效的性能,同时对资源的额外需求很低,相比传统虚拟机方式,相同配置的主机能够运行更多的应用。
更轻松的迁移和扩展:Docker容器几乎可以在任何平台上运行,同时支持主流的操作系统发行版本。
更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到妙级,甚至毫秒级的启动时间,大大的节约了开发,测试,部署的时间。
Docker与传统虚拟机差异
传统虚拟化方式
Docker虚拟化方式
传统虚拟化是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层,而Docker容器是在操作系统层面实现虚拟化,直接复用本地主机操作系统,更加轻量级。
核心概念
Docker镜像:类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,使用镜像可以创建容器,可以理解为镜像是容器的基石。
Docker容器:是由Docker镜像创建的运行实例,类似于轻量级的沙箱,每个容器之间都是相互隔离的。支持的操作有启动,停止,删除等。
Docker仓库:类似于经常使用的代码仓库,如github,它是Docker集中存放镜像文件的仓所,国内也有网易,阿里等镜像仓库。
镜像操作指令
获取镜像:
docker pull centos (默认获取centos最新的镜像)
docker pull centos:7 (获取指定标签镜像)
查看本地镜像:
docker images
查看镜像详细信息:
docker inspect centos:7
查看镜像历史:
docker history centos:7
删除镜像:
A:使用标签删除:docker rmi centos
B:使用ID删除:docker rimi
构建镜像:
A:使用docker commit命令
B:使用Dockerfile构建
使用docker commit
例:构建一个带有jdk的镜像
按照如下步骤操作
[root@localhost ~]# docker run -it centos:7 /bin/bash[root@060793baf536 /]# yum install wget[root@060793baf536 /]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm [root@060793baf536 /]# rpm -ivh jdk-8u131-linux-x64.rpmPreparing... ################################# [100%]Updating / installing... 1:jdk1.8.0_131-2000:1.8.0_131-fcs ################################# [100%]Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar...[root@060793baf536 /]# exit[root@localhost ~]# docker commit 060793baf536 centos/jdk:2.0
通过docker images命令可以看到新增了centos/jdk 标签为2.0的镜像
使用Dockerfile构建
实际使用中不推荐使用docker commit构建,应使用更灵活和强大的Dockerfile构建docker镜像,直接举例来认识Dockerfile。
例:构建一个带有jdk的centos7镜像
[root@localhost Dockerfile]# mkdir Dockerfile[root@localhost Dockerfile]# cd Dockerfile
编写Dockerfile:
FROM centos:7MAINTAINER Java-Road "Java-Road@qq.com" RUN mkdir /usr/local/jdkCOPY jdk-8u171-linux-x64.rpm /usr/local/jdk/RUN rpm -ivh /usr/local/jdk/jdk-8u171-linux-x64.rpm
执行如下指令:
[root@localhost Dockerfile]# docker build -t centos/jdk .
运行结果如下:
-
docker images可以看到新生成的centos/jdk镜像。
- 容器操作指令
创建启动容器:
[root@localhost ~]# docker run centos:7 /bin/echo'hello world'
容器运行完后直接退出
交互形式创建启动容器
[root@localhost ~]# docker run -it centos:7 /bin/bash[root@802e3623e566 /]# ps PID TTY TIME CMD 1 ? 00:00:00 bash 13 ? 00:00:00 ps[root@802e3623e566 /]# exit
执行exit才能退出容器
守护状态运行容器
[root@localhost ~]# docker run -d centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
启动已有的容器:
docker start 容器ID例:[root@localhost ~]# docker start 802e3623e566
停止运行的容器:
docker stop 容器ID例:[root@localhost ~]# docker stop 802e3623e566
删除容器:
[root@localhost ~]# docker stop 89566e38c7fb[root@localhost ~]# docker rm 89566e38c7fb
进入运行的容器:
[root@localhost ~]# docker exec -it cbd8b1f35dcc /bin/bash
导出容器:
导出容器cbd8b1f35dcc到centos_test.tar文件 [root@localhost ~]# docker export -o centos_test.tar cbd8b1f35dcc 导出的tar文件可以在其他机器上,通过导入来重新运行
导入容器:
把导出的文件centos_test.tar通过docker import导入变成镜像 [root@localhost ~]# docker import centos_test.tar test/centos 通过docker images命令可以看到增加了个test/centos镜像
转载于:https://www.cnblogs.com/starsyh/p/9243975.html
全面认识Docker和基本指令相关推荐
- 使用ASP.NET Core 实现Docker的HealthCheck指令
写在前面 HealthCheck 不仅是对应用程序内运行情况.数据流通情况进行检查, 还包括应用程序对外部服务或依赖资源的健康检查. 健康检查通常是以暴露应用程序的HTTP端点的形式 实施,可用于配 ...
- Docker的使用(二:Docker客户端常用指令练习)
1.列出镜像: 2.搜索镜像: 3.拉取镜像: 4.构建镜像: 4.1.在Dockerfile文件所在目录构建镜像: 4.2.在其他目录构建镜像: 4.3.查看镜像是否构建成功: 5.删除镜像: 6. ...
- Docker之Dockerfile 指令详解
闲话不多说,dokerfile常用指令解析奉上 FROM 作用:指定基础镜像,必须放在DOckerfile的第一行,表示从哪个baseimage开始构建 格式: FROM <image>: ...
- docker 容器commit指令和export指令有什么区别?(commit保存镜像提交历史记录,export不保存)
参考文章:docker save和docker export及docer commit命令的区别 另外:Docker history 命令 docker history : 查看指定镜像的创建历史. ...
- Docker学习——Dockerfile 指令详解(五)
2019独角兽企业重金招聘Python工程师标准>>> 我们已经介绍了 FROM (指定基础镜像) , RUN(执行命令) ,还提及了 COPY , ADD ,其实 Dockerfi ...
- 干货!全面认识Docker和基本指令
点击上方"朱小厮的博客",选择"设为星标" 回复"1024"获取独家整理的学习资料 Docker逐渐成为虚拟化技术的佼佼者,Java架构师之 ...
- docker之Dockerfile指令介绍
Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...
- Docker入门-常用指令总结与归纳
Docker 目录 文章目录 前言 Docker是什么? Docker安装 查看内核版本 Docker的架构 阿里云配置 运行 docker的帮助命令 docker镜像命令 容器命令 镜像commit ...
- K8s Docker 相关操作指令
文章目录 1 Docker镜像删除的多种方法 2 Docker常见问题 3 K8s节点驱逐 4 Centos7 修改Docker Root Dir 5 K8s 重新生成token并加入集群 6 K8s ...
最新文章
- ReentrantReadWriteLock(读写锁)
- 传感器数据完善 AI 功能,激起机器人“网络效应”
- 使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
- Common Database Security Tasks_5_30
- C#导出Excel文件,过长数值显示为科学计数法解决方法 C#
- 设计模式 之 建造者
- java正则效率_【Java】Java-正则匹配-性能优化
- ViewSwitcher用法浅析
- qt tableview修改表格内容_如何修改一次代码就可以完成多种类型 cell 的 UITableView 增删修改
- 【Flink】checkpoint storage at checkckpoint coordinator No route host from xx to xx:9000
- 凸台可以延伸吗_知道对比度、清晰度和锐化的差别吗?操作不好,让一张照片报废...
- 熬了一个通宵,终于把Reids的7千万个Key删完了,今天脑子都嗡嗡响!
- 文字处理技术:正式开始新布局工作
- Python技能树测评之改进建议
- spark安装以及hive on spark和spark on hive 的配置
- spss多元线性回归散点图_SPSS多元线性回归.pdf
- HLA RTI(Run-time Infrastructure)
- 趣头条视频解析去水印原理分析过程及源码,简单又有趣
- Python Level 4 程序题:布置任务
- 数据库(二)—— 关系模型概述
热门文章
- ipython安装_IPython 它不香吗?
- sparklines插件_21个实用的Javascript数据图表插件
- python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)
- c语言串口通信_stm32 串口通信收发说明
- VMware 创建开启虚拟机时候报错的解决方式
- 886 微型计算机原理,886微型计算机原理及应用.pdf
- unsigned short占几个字节_ARM中,字、半字、字节分别是多少位?
- Android消息向下堆积,android - 从CoordinatorLayout中的按钮单击事件触发NestedScroll折叠动作 - 堆栈内存溢出...
- 给php权限,PHP实现权限管理功能的方法
- php html标签闭合,php截取字符串,完美html自动闭合