Docker学习笔记分享
Docker 学 习 笔 记 分 享
学习 Docker 对写 PHP 很有必要,主要有以下几点原因:
首先,保证开发环境一致。不同开发者的系统和配置不同易导致环境差异问题,而 Docker 可通过 Dockerfile 明确指定 PHP 版本、扩展及依赖项,确保开发环境一致,提高开发效率。
其次,简化部署。开发环境构建好的 Docker 镜像可直接在生产服务器运行,避免手动安装配置的繁琐,降低部署风险。
最后,提供资源隔离。Docker 容器为 PHP 应用提供独立的文件系统、网络和进程空间,一个应用问题不影响其他应用和系统服务,提高稳定性和安全性,还便于快速扩展和迁移。
Docker启动类指令
启动:systemctl start docker
停止:systemctl stop docker
重启:systemctl restart docker
查看状态:systemctl status docker
开机启动:systemctl enable docker
查看概要信息:docker info
查看总体帮助文档:docker --help
查看指令帮助文档:docker 具体指令 --help
Docker 镜像类指令
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 容器类指令
新建+启动容器
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
运行私有库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
将新的镜像 [镜像名]:[版本号] 修改符合规范的Tag
docker tag [镜像名称]:[镜像版本号] [ip地址]:5000/[镜像名称]:[镜像版本号]
修改配置文件使之支持http
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
network常用指令
docker network ls 查看newtwork列表
connect 将容器连接到 network
create [name] 创建 network
disconnect 断开容器与 network 连接
inspect [name] 显示一个或多个的详细信息
prune 删除所有未使用的network
rm [name] 删除 network
容器network
--network bridge ,默认使用docker0
--network host 指定
--network none 指定
--netwokr container:[name/容器id]
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: