docker

41 阅读4分钟

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 启动

swarm分布式

可视化工具 portainer