Docker 使用说明
安装
网上安装一大片
运行
本次运行
systemctl start docker
开机自启动
systemctl enable docker
images镜像
# 查找
docker search [images_name]:[version(default=latest)]
拉取
docker pull [images_name]:[version(default=latest)]
查看本地
docker images
删除镜像
docker rmi [id]||[name]
container容器
运行容器
docker run [images_id]||[images_name]
进入容器
docekr exec -it [images_id]||[images_name] 容器指定的命令
退出容器
exit
查看容器信息
docker inspect [images_id]||[images_name]
后台运行
docker run -d [images_id]||[images_name]
指定端口运行
docker -d -p 主机端口:容器暴露端口 [images_id]||[images_name]
停止后自动删除运行
docker -d -p 主机端口:容器暴露端口 --rm [images_id]||[images_name]
指定名字运行
docker -d -p 主机端口:容器暴露端口 --name 自定义名字 [images_id]||[images_name]
重启策略
--restart on-failure:3 重启3次
--restart no 不重启
--restart always 总是重启
docker -d -p 主机端口:容器暴露端口 --restart --name 自定义名字 [images_id]||[images_name]
停止容器
docker stop [images_id]||[images_name]
删除容器
docker rm [images_id]||[images_name]
强制删除
docker rmi -f [images_id]||[images_name]
设置环境变量
docker run -e 变量名=变量值 -e 变量名=变量值 [images_id]||[images_name]
限制容器的资源
docker -m 2m 限制内存
docker -cpus 1 限制cpu个数
查看日志
docker logs [images_id]||[images_name]
监听日志
docker logs -f 跟踪||-n 行数 [images_id]||[images_name]
指定网络
docker --net [网络名称]
volumes 数据卷
- 容器内部文件系统和主机文件系统部分共享
- 可以将容器内产生的数据保存起来
查看
docker inspect [id]
找到mounts
source 主机位置
destination 容器内
管理命令
docker volumes
create 创建
inspect [volum name] 查看详情
ls 列表
prune 删除未使用的
rm 删除指定的
绑定方式
匿名绑定
不写映射到哪里,容器--rm时会跟随一起删除
docker run -d -v /usr/share/nginx/html
docker run -d -v 容器内目录
具名绑定
docker run -d -v 自定义名字:容器内目录
bind mount 会互相覆盖
docker run -d -v 主机位置:容器内目录
network
docker network ls 查看
- 容器间隔离
- 容器间网络共享
桥接
主机内有docker0的网卡,实现主机和容器连接,创建一对虚拟网卡,分别在主机和容器内host
容器没有自己的网络空间,和主机共享网络,和主机在同一个网段中none
docker拥有自己的网络,不与主机共享,不会分配IP,网卡,路由等信息自定义
docker network create --diver bridge --subnet 192.168.133.0/24 --gateway 192.168.133.1 自定义名称 关联容器 docker network connect 网络名 容器名
Dockerfile
自定义构建镜像的文件
常用命令
基础镜像
FROM
FROM golang:1.21
标签
LABEL
LABEL version=1.0
环境变量
ENV
ENV JAVA_HOME=dev JAVA_PATH=path
or
ENV JAVA_HOME dev
ENV JAVA_PATH path
执行命令
RUN
RUN go build main.go
设置工作目录
WORKDIR
WORKDIR /app 没有则创建
数据卷绑定
VOLUME
VOLUME 《dir》 《dir》
暴露端口
EXPOSE
EXPOSE 8080
执行脚本,启动容器是默认执行的脚本
CMD
ENTRPOINT
构建镜像
常见案例
nginx
FROM nginx:1.25.4
LABEL author="johu"
# 将html配置到nginx中
COPY . /usr/share/nginx/html/
# 将config配置到nginx中
COPY ./default.conf /etc/nginx/conf.d/
# 配置文件自己编写
# 将证书配置到nginx中
COPY ./cert /etc/nginx/cert
# 将所有的前端项目放在同一个目录下打包为一个nginx
golang
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o main main.go
FROM alpine
WORKDIR /app
COPY --from=builder /app/main .
COPY setting.yaml /app/setting.yaml
VOLUME /app/logs # 和日志输出相对应,可以绑定
EXPOSE 8081
CMD ["/app/main"]
仓库
- 各种云仓库
- 私有库
容器编排
针对容器生命周期的管理,对容器生命周期进行更方便的方式进行管理
- 单体式
- docker-compose
- 分布式
- swarm
docker-compose
注意和docker的版本
示例模版 https://blog.csdn.net/fbbqt/article/details/127426227
常用命令
校验
docker-compose config
会在当前文件下找文件并验证
创建
docker-compose create
会在当前目录的配置中服务全部都启动
docker-compose create [名字]
启动指定的服务
查看
docker-compose ps
启动,如果有变动也会进行更新
docker-compose up -d
停止
docker-compose down 删除容器,网络等信息
stop 停止
start 启动