Docker虚拟化容器的使用
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
推荐学习docker的网址:https://www.w3cschool.cn/reqsgr/
一、docker常用命令
docker容器生命周期管理
docker run 在一个新的容器执行一个命令
docker start 开一个或者更多已经停止的容器
docker stop 停止一个运行的容器
docker restart 重新开始一个运行的容器
docker kill 杀死一个运行的容器
docker rm 删除一个或更多的容器
docker pause 暂停一个容器的所有进程
docker unpaunse 恢复一个容器的所有进程
docker容器操作运维
docker ps 列出容器
docker inspect 列出关于容器或镜像的底层信息
docker top 显示一个容器运行的进程
docker attach 附上一个运行的容器
docker events 得到实时的来自服务的事件
docker log 获得一个容器的日志
docker wait 阻塞直到一个容器停止,然后打印它的退出代码
docker export 导出一个容器的文件系统作为一个tar文件
docker port 列出容器映射的端口
docker版本管理
docker commit 创建一个新的镜像从一个容器
docker cp 从容器复制一个文件或目录到本地目录或标准输出
docker diff 展示一个容器文件系统的变化
docker镜像仓库
docker login 登入仓库
docker pull 拉取镜像
docker push 推送镜像
docker search 搜索镜像
docker本地镜像管理
docker images 列出本地的镜像
docker rmi 删除本地的镜像
docker tag 打标签本地的镜像
docker build 通过Dockerfile构建本地的镜像
docker histroy 列出镜像的历史
docker save 保存本地的镜像为一个tar文件
docker import 通过tar导入镜像
docker load 加载tar镜像
docker其它命令
docker info
docker version
二、docker私有仓库操作
1. 配置docker daemon的参数,由于每个发行版的linux的init系统不用,所以使用通用的命令行方式重启docker daemon
docker daemon --insecure-registry 192.168.6.65:5000 &
2. 认证私有仓库
docker login -u -p -e 192.168.6.65:5000
3. 拉取镜像
docker pull 192.168.6.65:5000/centos:latest
4. tag本地镜像
docker tag 192.168.6.65:5000/centos:1.0.0 192.168.6.65:5000/centos:latest
5. 推送镜像
docker push 192.168.6.65:5000/centos:1.0.0
6.docker, mac 的镜像目录
/Users/{YourUserName}/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 保存到文件当中
三、docker run 命令详解
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d,--detach=false指定容器运行于前台还是后台,默认为false
-i,--interactive=false打开STDIN,用于控制台交互
-t,--tty=false分配tty设备,该可以支持终端登录,默认为false
-u,--user=""指定容器的用户
-a,--attach=[] 登录容器(必须是以docker run -d启动的容器)
-w,--workdir=""指定容器的工作目录
-c,--cpu-shares=0设置容器CPU权重,在CPU共享场景使用
-e,--env=[] 指定环境变量,容器中可以使用该环境变量
-m,--memory=""指定容器的内存上限
-P,--publish-all=false指定容器暴露的端口
-p,--publish=[] 指定容器暴露的端口
-h,--hostname=""指定容器的主机名
-v,--volume=[] 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[] 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile=""运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset=""设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[] 添加主机设备给容器,相当于设备直通
--dns=[] 指定容器的dns服务器
--dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint=""覆盖image的入口点
--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量
--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口
--link=[] 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name=""指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge"容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID>//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=false指定容器是否为特权容器,特权
容器拥有所有的capabilities
--restart="no"指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--rm=false指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
example:
1.docker run -d--name=server-db -p 3306:3306 centos6.8-mysql /usr/bin/mysql_safe –d
主机3306端口映射到容器3306端口
2.docker run -it --rm centos6.8 容器结束后自动删除
3.docker run -d--name=server-db -p 3306:3306 -v /server/mysql-data:/mysql-data centos6.8-mysql /usr/bin/mysql_safe –d
将主机的/server/mysql-data 目录映射到容器 /mysql-data 中
四、docker 技巧
1..清理无用的docker容器命令
docker ps -aqf status=exited | xargs docker rm
2.清理无用镜像的命令
docker images -qf dangling=true | xargs docker rmi
3.清理无用的docker挂载
docker volume rm $(docker volume ls -q -f dangling=true)
dockerignore使用
类似.gitignore一样,运行Dockerfile里的COPY指令的时候会根据.dockerignore进行部分目录或者文件忽略。
docker的架构如下图 :

Docker虚拟化容器的使用的更多相关文章
- docker虚拟化之将容器做成镜像
1,docker ps -a 选择要启动的容器. 2,docker start 容器+ID 启动容器 3,docker exec -i -t 容器ID /bin/bash 进入容器 这里的/ ...
- 【转】深入 Docker:容器和镜像
在本专栏往期的 Flux7 系列教程 里,我们已经简单地探讨了 Docker 的基本操作.而在那篇教程中,我们一直是简单地将容器当成是"正在运行的镜像",并没有深入地区分镜像和容器 ...
- Docker与容器快速入门
Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...
- XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化
XP+devOps开发模式与scrum敏捷开发对比,docker虚拟化 我们现在用的就是典型的XP+devOps模式,已经放弃scrum了 现在还很多公司弄docker虚拟化docker非常复杂,当然 ...
- Docker,容器,虚拟机和红烧肉
Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- Docker虚拟化平台
1.虚拟化技术的概念 1)虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构间的壁垒,让计算机的元件运行在虚拟的基础上,而不是真实的物理设备: 2)虚拟化技术可以将物理机硬件资源虚拟生成单 ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- Linux运维之docker虚拟化部署nginx
一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
随机推荐
- Devexpress Xtrareport 并排报表
什么是并排报表呢? 按照我个人理解:并排报表是把两张或者两张以上的报表,放在一个报表页面. 注:为了方便,本示例使用同一个数据源,但是您可以使用相同的方法,而在一个报表文档中显示两个完全不同的 (使用 ...
- mysql中count(*)和found_rows()的区别
count(*)和found_rows()都可以用来求查询记录的数量 而count(*)往往单独使用,found_rows()却可以跟上前面一个查询,即select * from table limi ...
- Django auth组件拓展 关联外部信息---------------------------- Profile 模式
https://docs.djangoproject.com/en/2.1/topics/auth/customizing/ 官方文档. 网上的get_profile 方法不好用太假了 可能我没用明白 ...
- eclipse 构建从 SVN 上下载的可识别的 maven 项目
从 SVN 上下载的 maven 项目中含有父项目,属于 maven 的嵌套,每个子项目和父项目虽有 pom.xml 文件,在结构上也是 maven 然而并不是 eclipse 识别的 maven 项 ...
- mysql测试和sysbench工具详解
前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...
- 什么叫erp系统
一般来说,erp系统是一个以会计(此处的会计是指管理会计)为核心的信息系统,用来识别和规划企业资源, 从而获取客户订单, 完成加工和交付,最后得到客户付款,最终获得收入和利润. 实际上, erp 系统 ...
- js获取url的参数和值的N种有效方法
js获取url的参数和值的N种有效方法 function getParameterByName(name) { name = name.replace(/[\[]/, "\\\[" ...
- Eclipse常用设置和快捷键
1.提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项 ...
- xcode import pod 文件不提示
在使用第三方类库时,使用cocoaPods是非常方便的,具体使用方法可以参考:CocoaPods安装和使用教程 的安装使用方法.今天讨论的问题是,我在使用的时候遇到了一些问题:用cocoaPod si ...
- 升级jdk注意事项
最好使用和编译的jdk相同版本的jre去执行.class程序. 今天在本地模拟部署项目到tomcat6就遇到了个坑. 我们项目使用的jdk1.7开发的,编译打war包放到webapps后,启动报错Ex ...