docker
什么是Docker ?
基于linux内核,基于操作系统层面的,虚拟化技术
为什么使用Docker?
用来快速得部署项目
占用磁盘小,启动速度快(秒级) 环境一致性好,节约开发,测试,运维的部署时间
隔离性好,迁移更方便
能够实现快速部署
Docker怎么用(三要素)?
镜像:特殊的文件,包含程序,资源,配置
容器:运行在隔离环境中的进程,独立于宿主机的一个操作系统(mini操作系统,不完整)
仓库:集中存储,管理镜像的服务站
1.镜像
安装docker
1. linux内核,需要在3.10以上: uname r
2.系统升级: yum -y update
3.安装docker: yum install y docker
4.重启linux虚拟机: reboot
5.开启docker服务: systemctl start docker
6.验证docker,查看版本号: docker version
网上搜索
docker search xxxxx_name
下载
docker pull xxxx_name
查看本地镜像
docker images
删除本地镜像
docker rmi xxxx_name(名字或者id取前四位就好)
镜像加速(换源,下载速度变快,国外网站时常下载镜像失败)
1. root账号修改服务配置
- vi /etc/docker/daemon.json
- {"registry-mirrors": ["https://wixr7yss.mirror.aliyuncs.com"]}
- systemctl daemon-reload
- systemctl restart docker
2.在文件中添加配置:
3. 重载配置:
4.重启Docker
• docker服务操作:启动(start),重启(restart),停止(stop)
上面的阿里云服务地址,自己可以注册:
- https://cr.console.aliyun.com/cn-hangzhou/instances/mirro
- 进入之后ls一下,发现里面的目录和linux差不多
- docker start xxxx_name
- docker stop xxxx_name
- docker restart xxxx_name
- -- rivileged=true容器特殊权限
!!!注意:每次进入虚拟机都需要
打开网卡
ipconfig 组合 ifup ens32
启动docker
systemctl start docker
xxxx stop
xxxx restart
查看启动了没:docker version
关闭防火墙
systemctl stop ?rewalld
2.容器
查看镜像
docker images
运行容器 dock_name是镜像名称
docker run -d dock_name
查看所有容器(运行中的和运行结束的)
docker ps -a
进入容器(小的虚拟机、up状态)
docker exec-it 容器id bash
退出容器
Ctrl+p+q / 输入exit
删除容器(先stop在rm)
docker rm xxxx_name
容器运行后的操作
启动
停止
重启
3.docker容器目录挂载(宿主机的文件目录映射到容器,方便容器访问宿主机的文件)相当于共享文件
1.docker run -v 宿主机目录:容器目录 镜像ID/镜像名称
docker run -d -v /tmp:/home -- rivileged=true httpd
2.查看运行的容器
docker ps -a
3.进入容器(小的虚拟机、up状态)
docker exec-it 容器id bash
4.进入之后ls一下目录查看一下
4.端口映射
docker run -p宿主机端口:容器端口 镜像ID/镜像名称
docker run -p 8001:80 xxxx_name
5.Docker镜像nginx发布一个web页面(简单网页)
注意1:使用谷歌浏览器
注意2:网站要写全(ip,端口, 网页),写到具体网页,只写到端口是不行的(错误写法: ht
tp://192.168.80.128:8001) ,网站会提示“403 Forbidden"
注意3:必须写端口,端口前是英文的冒号,不能用中文的冒号
1. 使用xftp工具上传网页到linux目录 /tmp
2. 准备镜像 :webdevops/php-nginx(服务器)
1.docker images查看一下镜像
记住找到名字是:webdevops/php-nginx,后面启动要用
3. 启动容器
docker run -d-p 8001:80 -v /tmp:/app --privileged=true webdevops/php-nginx
- /app是nginx默认的网页发布路径 (配置文件/opt/docker/etc/nginx/vhost.conf )可以进入容器cat一下
- 80端口是nginx默认的网页发布端口
- 注意1:使用谷歌浏览器 ,宿主机地址要ifconfig看一下,关闭防火墙
- 注意2:网站要写全(ip,端口,网页),写到具体网页,只写到端口是不行的(错误写法:ht tp://192.168.70.136:8001),网站会提示“403Forbidden”
- 注意3:必须写端口,端口前是英文的冒号,不能用中文的冒号
- 查看有没有生成对应目录:ll /var/lib/docker/volumes/
- docker image
- 例子:# docker run -d -v xxx_name:/home --privileged=true httpd
- 停止容器
4. 关闭防火墙
systemctl stop firewalld
5. 打开浏览器访问地址
http://宿主机的IP地址:8001/form.html
6.数据卷(比挂载目录要好,统一管理,更规范)要在容器使用时挂起
查看已有的数据卷
docker volume ls
查看数据卷的详情信息(关键看数据卷目录mountpoint,使用数据卷的时候要用到)
docker volume inspect 数据卷卷名
创建数据卷
docker volume create 数据卷卷名
使用数据卷
找一个镜像
docker run -v 数据卷名称:容器目录 --privileged=true 镜像ID/镜像名称
进入容器中查看(ls /home)是否使用成功(可以提前在数据卷里放一些文件,方便看)
docker exec -it 5070(容器名称) bash
删除数据卷(数据卷的目录也被删除)
docker volume rm xxx_name
注意:如果数据卷再被容器使用,需要先停止或者删除容器(一般会提示正在使用容器的名称)
• docker stopxxx_name
• docker rmxxx_name
7.Docker网络(容器间网络交互)
查看已有的docker网络
docker network ls
新建网络
docker network create xxxx_name
查看单个网络详情信息
docker network inspect xxxx_name
删除网络
docker network rm net_name
使用网络
docker run --network 网络名称 镜像ID/镜像名称
8.用数据卷实现论坛网站部署
1.关闭防火墙
2.重启dvcker
3.查看已有的数据卷(volume ls)和容器(ps -a)
4.创建数据卷(twovol)
docker volumecreate twovol
5.查看数据卷(twovol)将要存放文件的位置
docker volume inspect twovol
6.xftp将文件传输到docker中,位置就是上面数据卷的位置(Discuz_X3.3_SC_UTF8.zip)
twovol数据卷额存放文件的地址:/var/lib/docker/volumes/twovol/_data
7.切换到目录,解压
unzip Discuz_X3.3_SC_UTF8.zip
8.给用到的文件upload权限(ll一下)
chmod -R 777 upload
9.数据库创建一个数据卷
docker volume create thvol
10.准备2个镜像(docker images)
1.网站服务器:webdevops/php-apache-dev
2.数据库服务器:mysql:5.5.62
11.创建docker 网络
docker network create twonet
12.启动容器
启动apache容器:docker run -d -p 8086:80 -v twovol:/app --networktwonet --privileged=true webdevops/php-apache-dev
启动mysql容器 : docker run -d -p 3306:3306 -v thvol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --network twonet --privileged=true mysql:5.5.62
13.使用谷歌浏览器访问
http://192.xxx.xx.xx:8086/upload