学习 Docker 对写 PHP 很有必要,主要有以下几点原因:
首先,保证开发环境一致。不同开发者的系统和配置不同易导致环境差异问题,而 Docker 可通过 Dockerfile 明确指定 PHP 版本、扩展及依赖项,确保开发环境一致,提高开发效率。
其次,简化部署。开发环境构建好的 Docker 镜像可直接在生产服务器运行,避免手动安装配置的繁琐,降低部署风险。
最后,提供资源隔离。Docker 容器为 PHP 应用提供独立的文件系统、网络和进程空间,一个应用问题不影响其他应用和系统服务,提高稳定性和安全性,还便于快速扩展和迁移。
启动:systemctl start docker
停止:systemctl stop docker
重启:systemctl restart docker
查看状态:systemctl status docker
开机启动:systemctl enable docker
查看概要信息:docker info
查看总体帮助文档:docker --help
查看指令帮助文档:docker 具体指令 --help
docker images 列出本地主机上的镜像
docker images -a 列出本地所以的镜像(含历史)
docker images -q 只显示镜像id
docker search [OPTIONS] 搜索镜像(OPTIONS镜像名字)
docker search --limit:10 [OPTIONS] 搜索镜像列出10个
docker pull [OPTIONS]:[TAG] 下载镜像(OPTIONS镜像名字、TAG版本号,不填默认最新版本)
docker system df 查看数据占用空间
docker rmi -f [镜像ID] 删除单个镜像
docker rmi -f [镜像TAG] [镜像TAG] 删除多个镜像
docker rmi -f $(docker images -qa) 删除全部镜像
docker run [镜像images]
-it 启动镜像的终端
exit 退出终端
--name=[容器改名名称]
例子:
新建容器并进入容器终端
docker run -it ba6acccedd29
新建进入容器+终端+容器名为myubuntu
docker run -it --name=myubuntu ba6acccedd29
docker
ps 列出正在运行的容器
-a 列出正在运行的容器+历史运行过的
-l 列出最近创建的容器
-n [数量] 列出最近n个创建的容器
-q 列出容器编号
-p [主机端口]:[容器内部端口] 端口映射
-v [主机文件夹路径]:[容器文件夹路径] 同步文件夹内容
--net [网段]
--privileged=true root权限,一般配合-v使用
exit 退出容器终端,容器会停止
ctrl+p+q(按键) 退出容器终端,容器不会停
ctrl p ctrl q
docker start [容器ID或者容器名] 启动已停止运行的容器
docker restart [容器ID或者容器名] 重启容器
docker stop [容器ID或者容器名] 停止容器
dokcer kill [容器ID或者容器名] 强制停止容器
docker rm [容器ID或者容器名] 删除已停止的容器
-f 强制删除容器(包括正在运行的容器)
$(docker ps -a -q) 强制删除所有容器(包括正在运行的容器-谨慎使用)
希望docker的服务是后台运行的
docker run -d [容器名] 有些并不可行(一般-it较好)
docker logs [容器id]
docker top [容器id]
docker inspect [容器id]
exec在容器中打开新的终端,并且启动新进程,exit退出不会导致容器停止--==推荐使用==
attach直接进入容器启动命令终端,不会启动新的进程,exit会导致容器停止
docker exec -it [容器id] /bin/bash 进入
docker attach [容器id] 重新进入
docker cp [容器id]:[容器内路径] [主机目录]
docker export [容器id] > [文件名].tar
cat [文件名].tar | docker import - [镜像用户]/[镜像名]:[镜像版本号]
docker commit -m="你的描述信息" -a="作者" [容器id] [镜像用户]/[镜像名]:[镜像版本号]
docker pull registry
相当于本地的dockers hub
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
curl -XGET http://[您的ip地址(0.0.0.0)]:5000/v2/_catalog
docker tag [镜像名称]:[镜像版本号] [ip地址]:5000/[镜像名称]:[镜像版本号]
docker默认不允许http推送镜像
修改配置文件 /etc/docker/daemon.json
如果不生效,重启docker服务
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries": ["您的ip:5000"]
}
docker push [镜像名]:[版本号]
docker pull [ip地址]:5000/[镜像名]:[版本号]
Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
docker run -it --privileged=true -v /[主机绝对目录]:/[容器目录] [镜像名]
:rw 读写权限(默认)
:ro 只读权限
docker run -it --privileged=true -v /[主机绝对目录]:/[容器目录]:ro [镜像名]
docker image ls -f dangling=true
docker image prune
docker network ls 查看newtwork列表
connect 将容器连接到 network
create [name] 创建 network
disconnect 断开容器与 network 连接
inspect [name] 显示一个或多个的详细信息
prune 删除所有未使用的network
rm [name] 删除 network
--network bridge ,默认使用docker0
--network host 指定
--network none 指定
--netwokr container:[name/容器id]
收藏吃灰
跟
收藏,收藏,收藏。谢谢!
大佬 要不要整个完整的.. 比如手头的项目 怎么使用docker的案例..
就我个人来说 把项目部署到 服务器 的步骤是这样的
1.装宝塔
2.装nginx+php+mysql+redis 基本环境
3.通过git拉取项目 配置端口 伪静态 修改数据库配置
至此 项目就部署完毕了
4.本地更新项目后 git 提交 ,然后到服务器 进到项目里面 git pull 拉取一下 完成了项目的更新
就我这些场景的话 , 用 docker 是怎么个用法呢。 一直没弄过 整不明白
更详细的步骤可以去看一些相关视频,文字说明可能还是有点模糊的
宝塔中使用docker出一期,图文步骤吧!!!感谢了