1.什么是docker: Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2.为什么使用docker: docker有以下优点,更高效的利用系统资源,更快速的启动时间,一致的运行环境,持续交付和部署,更轻松的迁移,更轻松的维护和扩展,对比传统虚拟机总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB |
一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
话不多说,开始使用docker,下面都以root用户运行
1.安装docker
apt-get update //更新系统软件
apt-get install
apt-get install apt-transport-https
apt-get install ca-certificates
apt-get install curl
apt-get install software-properties-common //安装依赖包
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - //添加官方密钥
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" //添加仓库
apt-get update //再次更新软件
apt-get install docker-ce //安装docker,默认安装最新版
docker -v //查看docker版本 出现Docker version 19.03.4, build 9013bf583a类似文字,则安装成功
2.使用docker镜像
vim /etc/docker/daemon.json
添加以下代码,之后保存
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker //重启docker服务
docker pull ubuntu:16.04 //拉取ubuntu:16.04镜像
docker images //查看本地已有镜像
docker run -it -d --name ctf -p 8087:80 ubuntu:16.04 //使用ubuntu:16.04镜像,在后台以名字为ctf,映射端口为8087-->80运行一个容器
docker ps //查看正在运行的docker容器
docker ps -a //查看所有的docker容器
docker start id //运行docker容器
docker stop id //停止docker容器
3.用容器部署CTF题
docker exec -it id /bin/bash //进入docker容器shell,id一般取前三位即可
进入容器后,搭建一个php7+nginx的简单服务
apt-get update //首先更新容器软件源,之后可以进行换源,换源后要再次更新软件源
apt-get install nginx //安装nginx
apt-get install php7.2-fpm //安装fpm扩展
cd /etc/nginx/sites-available
vim default
将里面内容作出以下修改,不清楚可以自行查询,这里不多讲
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
cd /var/www/html //默认网站根目录
touch test.php
vim test.php //写入<?php phpinfo();?>,若出现phpinfo界面则成功了,可以自己搭建CTF题
3.打包docker镜像给他人使用
docker commit id ctf:ctf //将容器固化为镜像
docker export id > ctf.tar //将其打包成docker压缩包供复制到其他电脑上去使用
docker load < ctf.tar //导入文件为docker镜像,若导入时出现这个问题open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or directory,说明这个tar包缺少docker所需要的一些json文件,不能直接导入
cat ctf.tar | docker import - ctf //可以这样导入
docker images //查看是否已导入
以上就是docker简单的学习。