Welcome to aparke’s blog!
简单描述docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 支持跨平台可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 一键部署的环境文件不仅小,大概只有几百兆。而且最厉害的是部署的网站环境,即使网站存在漏洞,被恶意拿到权限,因为docker这种沙箱机制,也不会被拿到服务器主机权限。
ubuntu16.04下载安装docker
安装docker
$sudo apt install docker.io
启动docker
切换到root用户下使用docker
service docker start
在docker hub中查找lamp环境并拉去到本地
docker searche lamp
docker pull tutum/lamp
查看本地拉取的镜像docker images
docker images
映射docker80端口到本地启动,进入docker bash环境下
docker run -i -t -p 80:80 tutum/lamp /bin/bash
初始化lamp环境
此lamp环境还自带了一些服务脚本可以一键启动web环境,
首先要执行run.sh,初始化数据库,默认数据库root是没有密码的,给了一个admin账户及一个随机密码,这里不使用admin账户,如果root用户进不去,先使用admin进去一次退出就行
待初始化完成后使用ctrl+c终止
给root用户设置密码,默认是没有密码的
进入mysql设置root密码
mysql -uroot -p
回车,设置密码为123456
set password for root@localhost = password('123456');
给root账户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
删除admin账户
drop user admin@'%';
退出mysql
exit;
查看docker运行的情况
使用ctrl+p,ctrl+q退出docker的 bash 让docker在后台运行
docker ps
上传本地网站源码到docker
使用
docker cp
上传本地源码到docke容器根目录下
docker cp jddvwa 1967d9fb88f4:/
此处需要注意的是:
docker cp 、attach 后面的参数是容器id,不是镜像名,每次启动id都是不同的,如果每次启动docker镜像后都有修改,退出时记得一定要保存镜像,或者后台,否则直接退出docker上次的操作就没有了。
进入后台运行的docker
docker attach 1967d9fb88f4
删除网站根目录下默认的文件
cd /var/www/html
rm -rf ./*
复制网站源码到网站根目录下
cd /jddvwa
cp -r ./* /var/www/html
启动web容器apache2的服务
修改网站源码中的配置文件的
默认为空,设置为123456
打开网页看见是否成功
保存此docker环境为一个镜像并导出
使用ctrl+p,ctrl+q退出docker的 bash 让后台在后台运行
使用dcoker commit 保存为镜像
docker commit -m"aparke.cn" -a"zhaokaifei" 1967d9fb88f4 jddvwa
由上图可以看出docker下的Ubuntu环境搭打网站只有444mb。
使用dcoker export导出到本地
docker export 1967d9fb88f4 >jddvwa_docker.tar
使用dcoker import导入到本地docker文件
docker import jddvwa_docker.tar aparke/jddvwa
测试是否可以使用
停止之前启动的docker
docker stop 1967d9fb88f4
使用新导入的docker文件
docker run -i -t -p 80:80 aparke/jddvwa /bin/bash
访问成功
遇到的坑,数据库由于是人家提供的可能会遇到如下错误
解决,重新初始化数据库
mysql_install_db
参考上面的重新设置root密码
或者自己去重新装一个mysql解决此问题。
附常用的docker命令
docker命令 | 描述 |
---|---|
docker version | 查看docker版本 |
docker pull tutum/lamp | 拉取镜像 |
docker images | 查看dokcer中镜像 |
docker run -i -t tutum/lamp /bin/bash | 启动docker bash |
docker login | login 登录 docker hub |
docker ps | 列出正在运行的docker容器 |
docker ps-a | 列出dokcer所有创建的容器 |
docker start/stop/restart tutum/lamp | 启动、停止、重启某个docker |
docker commit -容器名 -镜像名 | commit保存镜像 |
docker load -i 文件名 | 加载本地镜像文件 |
docker build -t ubuntu | 根据 Dockerfile 构建一个镜像 |
docker save image-name -o file-path | 根据save保存 |
docker rmi 容器名 | 删除容器 |
docker attach 容器id | 进入后台挂起的docker |
docker logs 容器id | 查看容器内的标准输出 |