一、什么是容器?
https://www.redhat.com/zh/topics/containers/whats-a-linux-container
Linux容器是与系统其他部分隔离开的一系列进程。
Docker解决的是什么问题?
本质:隔离(权限 资源)
工作原理:Linux容器。
二、Docker是什么?
Docker官方网站: https://www.docker.com/
官方文档: https://docs.docker.com/
Ubuntu安装: https://docs.docker.com/install/linux/docker-ce/ubuntu/
》apt-get update
》apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
》curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
》apt-key fingerprint 0EBFCD88
》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-ce-cli containerd.io
Docker镜像:
官方镜像:
nginx
php
非官方镜像:
zhangsan/nginx
lisi/php
三、Docker如何使用?
如何启动一个容器?
1 准备镜像
2 容器从镜像启动
PHP-FPM 安装扩展
https://hub.docker.com/_/php
方法1: 进入容器 pecl install xxx
容器之间如何互联?
Nginx + PHP-FPM + Redis
1 使用 --link(不推荐)
##注意启动顺序
启动 PHP-FPM容器
docker run -d --name fpm-1906 -v /wwwroot:/wwwroot -p 9000:9000 php:7.4.4-fpm
启动 Nginx容器
docker run -d --name nginx-1906 --link fpm-1906 -p 80:80 -v /wwwroot/:/wwwroot nginx
2 (推荐)使用 自定义网络 docker network
参考文档:https://docs.docker.com/network/bridge/
// 创建用户自定义网络 启动容器时使用 --network参数
> docker network create net-1906
// 启动 redis容器 使用 net-1906 网络
> docker run -d --name redis-1906 --network net-1906 redis
// 启动 PHP-FPM 容器 使用 net-1906 网络
> docker run -d --name fpm-1906 --network net-1906 -v /wwwroot:/wwwroot php:7.4.4-fpm
// 启动 Nginx 容器 使用 net-1906 网络 并绑定宿主机的80端口
> docker run -d --name nginx-1906 --network net-1906 --publish 80:80 -v /wwwroot:/wwwroot nginx
#如何给PHP安装扩展?
https://hub.docker.com/_/php
方法1:
》 在容器中使用 pecl install redis
》 修改php.ini,加入 extension = redis.so
》 重启PHP-FPM 或 重启 容器
使用Docker应该注意的问题:
对容器进行的修改,在容器删除后修改会被重置。
参考文档:
虚拟机与docker的关系:http://dockone.io/article/6051
DockerHub:
hub.docker.com
Docker常用命令:
docker version
docker images // 查看本地镜像
docker ps
查看已启动的容器
docker run
docker run --name nginx-1906 -p 2345:80 -d nginx
// 从 nginx镜像启动一个容器(nginx-1906),并将宿主机端口2345与容器端口绑定
docker run --rm --name nginx-1906 -p 2345:80 -d nginx
docker run --name nginx-1906 -p 80:80 -d -v /wwwroot:/xxxx nginx
docker exec
docker exec -it xxx /bin/bash //进入容器 xxx 中
docker pull yyy // 拉取 yyy镜像
docker stop xxx // 停止 xxx 容器
docker start xxx // 启动xxx容器
docker rm xxx // 删除 xxx容器 (删除前需要先停止容器)
docker rm -f xxx // 强制删除 xxx 容器
docker rmi xxx // 删除 xxx 镜像
docker logs -f xxx // 查看容器xxx的日志
docker cp a.txt xxx:/path //将本地文件 a.txt 复制到 xxx容器中的 /path目录
docker rm $(docker ps -a -q) //删除所有已停止的容器
docker rm -f $(docker ps -a -q) //删除所有的容器(包括正在运行与已停止的)
docker network create xxx //创建docker网络
docker network ls
docker network rm xxx //删除 xxx 网络
命令参考文档:
https://docs.docker.com/engine/reference/run/
- 重要文档
- 工作须知
- 项目下的公共方法
- 程序员给代码写注释时有哪些讲究!
- RestFul 讲解
- 其他知识
- docker容器
- MongoDB的使用
- Node.js的使用
- Session共享
- Wordpress的使用
- Websocket的简介
- Ajax
- 项目技术
- Https配置证书
- Nginx的反向代理
- MySQL读写分离配置(laravel篇)
- Nginx的负载均衡
- App接口返回格式
- laravel中JWT的应用
- laravel验证码的使用
- laravel公共方法文件
- laravel框架的RBAC
- Git相关
- Git篇1
- Git篇2
- Mysql相关
- Mysql的主从复制
- MySQL的备份
- MySQL的使用
- 请求第三方接口
- Redis相关
- redis的使用
- Redis的基本用法以及场景分析
- 开发小技巧
- Linux
- 禁用root及密码登录
- Lnmp环境的安装
- 安装composer
- 安装Redis
- 文件共享服务 samba
- 其他安装
- Lnmp常用命令
- 性能检测命令
- Nginx的配置详解
- PHP相关
- PHP基础知识
- php常见的系统函数
- PHP的设计模式
- Cookie 和 Session 的封装
- Mysql知识
- Mysql索引
- MySQL的数据类型
- PHP重要知识
- PHP框架篇
- Laravel框架
- laravel---Excel
- laravel文件上传
- Laravel-Mysql常用操作
- Laravel队列(queue)
- laravel-发送Email
- laravel--JWT
- TP框架篇
- tp5主从数据库设置读写分离
- 前端
- JS
- js代码实现点击按钮出现60秒倒计时
- 开发软件相关
- 代码编辑器
- vs code配置ftp连接远程服务器实现代码文自动上传
- 编程相关软件下载