docker 和 vm 虚拟机技术比较像,但又有一些区别。

vm 像真机一样有 BIOS ,有硬盘,有网卡,声卡,可以安装操作系统, win7 win10 macOS ubuntu centOS,有好用方便的快照功能,隔离性较强,vm 蹦溃不影响宿主,软件发布时间长,支持众多宿主操作系统,XP WIN7 centOS 6。

vm 缺点也是上面的问题,需要自行安装 操作系统,软件,启动慢,大概需要1分钟,高配电脑,也需要有半分钟。

docker 可以很方便的拉取 image 运行,省去了自行安装操作系统和软件的过程。还可以很方便的进行配置或删除。随便安装ubuntu 14 16 18 仅需要下载 image 就行了。启动快速,秒开。

docker 缺点是不支持 windows mac OS 这种非 linux 的操作系统,软件这几年刚有,仅支持 CentOS 6.8 7 或更高版本,kernel 要求 3.1 以上,仅支持 win10,还是用虚拟机实现。

基本使用

1, 先去 https://www.docker.com/ 注册一个帐户 因为有的 image 需要登录用户才能拉取

2, 安装 docker 在 ubuntu 18

sudo apt-get install docker.io
sudo docker info

3, 添加 docker 用户,这样以后就不必每次都打 sudo

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用

4,启用systemctl

sudo systemctl enable docker
sudo systemctl start docker

5, 拉取 nginx 并运行

docker pull nginx
docker run --name "nginx" -p : -d nginx

#传入 html 路径 交互模式 退出自动删除容器
  docker run --rm -it -p 8000:80 -v $PWD/html:/usr/share/nginx/html nginx

6, 修改docker 保存的位置, 用软链比较简单。

sudo mv /var/lib/docker /opt/data/
sudo ln -s /opt/data/docker/ /var/lib/docker

7, 其它的命令

搜索 image
docker search nginx

查看容器运行状态
docker ps -a

查看所有镜像
sudo docker images

仅显示容器ID
sudo docker ps -aq

停止所有容器
sudo docker stop $(sudo docker ps -aq)

删除所有容器
sudo docker rm $(sudo docker ps -aq)

进入容器
sudo docker exec -it f66627b76918 /bin/bash

复制容器配置文件
docker cp f66627b76918:/etc/nginx/ .

run 详细参数
https://docs.docker.com/engine/reference/commandline/run/#options
--detach , -d Run container in background and print container ID
--rm Automatically remove the container when it exits
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY

如何打包制作镜像 image 

Dockerfile

ENV PORT 8000 #设置变量,可以通过 -e 指定
RUN apt-get update && apt-get install -y ssh && rm -rf /var/lib/apt/lists/* # 执行普通的命令

RUN sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config #通过 sed 流文本编译器来修改文件,经常使用
COPY run.sh /run.sh #复制文件到镜像中 另一个常用的是 ADD 可以从网络读取下载到镜像
EXPOSE 80 #声明发布的端口 这里是 web 的 80
CMD ["/run.sh"] #自动启动时执行的自定义命令  -d 的时候

开始构建
docker build -t ubuntu-nginx .

docker 技术全面整理的更多相关文章

  1. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  2. 利用Docker技术实现UDP广播效果(网络编程python版)

    docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...

  3. Docker - 技术栈

    与传统的方式类似,构建及运行Docker容器与在一台虚拟机上构建和运行程序的方式是相似的,只是使用了一套新的工具以及技术. 与虚拟机不同的是,Docker容器将宿主机与应用程序或者服务隔离,从而提高了 ...

  4. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  5. 转载:.NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  6. Docker技术学习

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1598249 貌似Doc ...

  7. Docker技术浅谈:私有化部署的优势以及在顶象内部的应用实践

    顶象全景式业务安全风控体系基于新一代风控体系构建,并采用Docker技术进行私有云和公有云部署.本文主要和大家分享下Docker容器技术和顶象风控系统私有化部署的优势以及Docker容器技术在顶象内部 ...

  8. Docker技术知识点总结

    Docker技术知识点总结 本文宿主机环境Centos7.4Docker version 18.09.2, build 6247962采用国内 Daocloud 加速器---------------- ...

  9. Docker技术应用场景(转载)

    场景一:节省项目环境部署时间 1.单项目打包 每次部署项目到测试.生产等环境,都要部署一大堆依赖的软件.工具,而且部署期间出现问题几率很大,不经意就花费了很长时间. Docker主要理念就是环境打包部 ...

随机推荐

  1. 1)session总结

    (1)session的由来: HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众 ...

  2. SQL语句简单应用(未完)

    简介:   SQL(structured query language)结构化查询语句,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系型数据库系统,同时也是数据库脚本文件的扩展名 ...

  3. Python-SSH批量登陆并执行命令

    Python-SSH批量登陆并执行命令 #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko from time import cti ...

  4. [LC] 11. Container With Most Water

    Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). ...

  5. pycharm中无法调用pip的安装包

    https://blog.csdn.net/sinat_23619409/article/details/79962518 较详细:https://blog.csdn.net/weixin_41287 ...

  6. Serializable 接口(序列化)

    目录 Serializable 接口(序列化) 前言 用途 如何实现 异常 serialVersionUID transient关键字 Serializable 接口(序列化) 前言 查看API文档时 ...

  7. 批量修改ACCESS表列名

    问题来源:从ODBC导入数据到ACCESS 再从ACCESS导入到SQL数据库,ACCESS会多带个DBO. 所以需要批量修改ACCESS的表名. 首先需要引用ADOX引用方法:打开ACCESS的VB ...

  8. Holer一款局域网服务器代理到公网的内网映射工具

    Holer简介 Holer是一个将局域网服务器代理到公网的内网映射工具,支持转发基于TCP协议的报文. 相关链接 开源地址:https://github.com/Wisdom-Projects/hol ...

  9. Css兼容性大全

    知识有所欠缺  疯狂脑补抄袭经验中... 兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, ...

  10. Navicat导入导出数据表

    当我们对mysql数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...