docker
docker:跨平台,快速运行应用run,快速构建应用build,快速分享应用share
docker + air可以实现热更新,配置.air.toml文件,可以使用本地dockerfile构建,也可以使用远程docker hub中的镜像构建
客户端client(docker-cli):
docker pull redis
(以redis为例,从市场拉取redis)
docker run redis
(运行redis)
docker build kezhangJDK
(构建自己的应用)
docker push kezhangJDK
(上传到市场上)
⬇
docker主机(docker host):Docker Daemon(Containers容器(应用))
⬇⬆
应用市场(registry):Images镜像(软件包)
用镜像启动的应用成为容器
传统部署➡虚拟化部署➡容器部署
容器类似轻量级的虚拟机,共享操作系统内核,拥有自己的文件系统,CPU,内存,进程空间等,且互相隔离
1. 命令
容器
运行
docker run -d(后台启动) --name(容器名)mynginx -p 80:80(端口映射) nginx(以nginx为例)
查看
docker ps -a(查看全部)
停止
docker stop mynginx
启动
docker start mynginx
重启
docker restart mynginx
状态
docker stats
日志
docker logs
进入
docker exec -it(以交互模式进入) mynginx /bin/bash(可以进行修改)
删除
docker rm -f(强制删除) mynginx
强制删除所有容器
docker rm -f $(docker ps -aq)
镜像
检索
docker search nginx
下载
docker pull nginx
列表
docker images
删除
docker rmi nginx
分享
提交
docker commit -m(提交信息)
保存
docker save -o(打包成tar包)
加载
docker load -i(指定文件位置)
登录
docker login
命名
docker tag
推送
docker push
2. 存储
目录挂载(数据)
docker run -v /app/nghtml:/usr/share/nginx/html
卷映射(配置)
docker run -v ngconf:/etc/nginx
卷默认放在/var/lib/docker/volumes/
查看卷列表
docker volume ls
查看卷的详情
docker volume inspect ngconf
3. 自定义网络
容器之间互相访问,创建自定义网络,容器名就是稳定域名docker network create mynet
创建两个容器添加参数:--network mynet
进入一个容器docker exec -it app1 bash
打印出另一个容器数据,注意端口是80curl http://app2:80
使用容器名 + 容器端口号互相访问
4. 环境变量
docker run -e
具体参考hub.docker.com
例子:redis主从集群实现读写分离,可以利用docker进行设置两个redis01(master)和redis02(slave),主机进行创建、删除、修改等写操作,从机进行查找等读操作,减轻redis负担,mysql等应用的创建等
5. docker compose
准备一个.yaml
文件,vim compose.yaml
,i,粘贴,Esc,:,wq
上线:docker compose -f compose.yaml up -d
下线:docker compose down
启动:docker compose start x1 x2 x3
停止:docker compose stop x1 x3
扩容:docker compose scale x2 = 3
yaml文件
name(名字)、services(服务)、networks(网络)、volumes(卷)、configs(配置)、secrets(密钥)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)