Docker
兴趣使然,有次接触到docker就很想学习一下容器技术,个人觉得比较有发展前景,再者多门技术多个加分项。
什么是容器(容器和虚拟机的区别)
- 容器是我觉得算是类似于虚拟机的技术,非常轻量的虚拟化技术,虚拟机都知道是非常比较占用内存的,运行成本比较高,可能一台8G内存的笔记本一次只能同时运行三个虚拟机,但是docker就可以同时运行多个应用
- 容器就像是化学实验室里面的杯子,而虚拟机就像是一个个教室。
- 官方解释:
一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包
,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
优点
- 可以将代码部署到一致的运行环境----确保了应用运行环境一致性
- 可以做到秒级、甚至毫秒级的启动时间—更快速的启动时间
- 避免公用的服务器,资源会容易受到其他用户的影响—隔离性
- 可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况—迁移方便
- 使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署—持续交付和部署
安装
kali安装
- 直接运行一个脚本,这个脚本是网上找的,出处我好像找不到了…()
- 记得更改一下脚本的权限
#!/bin/bash
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D;
echo 'deb https://apt.dockerproject.org/repo debian-stretch main' > /etc/apt/sources.list.d/docker.list;
apt-get install apt-transport-https ca-certificates;
apt-get update && sudo apt-get install docker-engine;
systemctl start docker;
systemctl enable docker;
systemctl status docker;
exit;
EOF
- 运行就直接安装完成
- 镜像加速,阿里云上登录控制台可以获取个人的加速器—镜像加速器地址通过修改
/etc/docker/daemon.json
文件然后重启docker就可以了
sudo systemctl daemon-reload
sudo systemctl restart docker
- 运行
docker run hello-world
就可以看到输出了 - 图形界面:kitematic下载unbuntu版本,使用deb软件安装,登录账号就可以直接使用
windows安装
- 需要查看一下我的电脑的属性,查看一下windows10系统是否是专业版。因为需要Hyper-V,不是专版没有(专业版可以直接下载doekcer for desket很方便)
- 我的就不是专业版,所以就需要使用docker-tools安装。
- 阿里云docker-tools下载地址: http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/?spm=5176.8351553.0.0.3bbc199197cONv
- github下载地址:https://github.com/docker/toolbox/releases
- 如果安装了以前版本的VirtualBox,请不要使用Docker Toolbox安装程序重新安装。出现提示时,取消选中它。如果运行Virtual Box,则必须在运行安装程序之前将其关闭。
- 下载一个boot2docker.iso:https://github.com/boot2docker/boot2docker/releases最新版放到
C:\Users\lenovo\.docker\machine\cache
下(国内速度很慢可能会下载失败,所以你懂的) - 然后就镜像加速。在你创建的docker-machine的
docker\machines\default
下有一个config.json文件修改红色区域。
简单使用
- 查看所有容器:
docker ps -a
- 查看所有镜像:
docker images
- 删除所有的容器:
docker rm ID
- 搜索镜像:
docker search xxx
- 下载镜像:
docker pull xxx
- 使用Nginx部署一个html页面:
docker run --name test-web -p 8082:80 -d nginx
* 运行一个名字为test-web的nginx容器
* -p绑定本地端口8082到容器的80端口
* -d在后台运行
*docker cp ~/nginx/www/index.html 0490256e712a://usr/share/nginx/html
* 将本地上的index.html文件复制到0490256e712a容器下的usr/share/nginx/html下
* 打开127.0.0.1:8082
- 暂停镜像 docker stop xx
- 恢复镜像 docker start xxx