docker相关常用指令

1.docker desktop配置镜像

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": true,
  "experimental": false,
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
  ]
}

2.Docker相关指令

  1. 拉取镜像

    sh 复制代码
    docker pull python:3.10
  2. 运行容器 ,根据镜像名docker_demo运行容器,可以通过--name container_name指定容器名称,否则会随机生成

    sh 复制代码
    docker run -d -p 7777:7777 docker_demo
  3. 查看所有容器

    sh 复制代码
    docker ps -a
  4. 查看正在运行的容器

    sh 复制代码
    docker ps
  5. 查看更详细的容器信息,包括配置、网络状态、挂载的卷等

    sh 复制代码
    docker inspect <container_id>
  6. 启动容器

    sh 复制代码
    docker start <container_id>
  7. 暂停容器

    sh 复制代码
    docker stop <container_id>
  8. 删除容器

    sh 复制代码
    docker rm <container_id>
  9. 查看容器日志

    sh 复制代码
    docker logs <container_id>
    docker logs -f <container_id> # 实时查看日志
    docker logs --tail n <container_id>  # 查看最后n行日志
    docker logs --since=30m <container_id>  # 查看最近30分钟日志
    docker logs --since="2025-12-12" <container_id>  # 查看指定日期后的日志
  10. 进入运行中的容器查看容器内部

    sh 复制代码
    docker exec -it <container_id> bash  # 进入容器
    exit  # 退出容器

3.操作Dockerfile并运行容器

  1. 编写Dockerfile文件,用于构建创建镜像的指令,下载慢开代理要么配镜像源
dockerfile 复制代码
# 优先查看本地是否有该镜像,有则使用,无则从镜像仓库拉取
FROM python:3.10
# docker内部的工作目录
WORKDIR /app  
# 下载系统所需要的包 1.update 2.install 3.clean
RUN apt-get update &&  \
    apt-get install -y xxx &&  \
    apt-get clean
# 先复制当前目录下的/app/requirements.txt到 docker内部的/app下
# 前面的./相对于 docker build命令执行时指定的构建上下文路径,后面的./由WORKDIR决定
COPY ./app/requirements.txt ./  
# 根据requirements.txt下载依赖包
RUN pip install --no-cache-dir --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 下载pytorch需要额外指定,不能放在requirements.txt一起,因为下载地址不一样
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cpu
# 将当前目录下的/app文件夹的所有内容复制到 docker内部的/app下
COPY ./app/ ./  
# 声明容器运行时监听的端口(文档性作用,实际映射需要在 docker run 时指定)
EXPOSE 7777  
# 指定根目录,否则会出现找不到自定义模块
ENV PATH=$PATH:/app
ENV PYTHONPATH=/app
# 容器运行时执行的指令,执行WORKDIR的main.py,不需要写成./main.py
CMD ["python", "main.py"]  # 构建镜像
  1. 根据当前操作目录下的Dockerfile文件构建镜像,镜像名为docker_demo
sh 复制代码
docker build -t docker_demo .
  1. 运行容器 ,根据镜像名docker_demo运行容器,可以通过--name container_name指定容器名称,否则会随机生成
sh 复制代码
docker run -d -p 7777:7777 docker_demo

4.通过docker-compose运行容器

yaml 复制代码
version: '3.0'
services:
  ai_cv:  # 服务名,自定义
    image: ai_cv17:latest  # 镜像名
    container_name: ai_cv17  # 容器名
    ports:
      - "5000:5000"  # 映射端口号
    networks:
      - my_network  # 网络
    volumes:
      - D:\Docker\vols\app:/app  # 数据挂载
  # mq
  rabbitmq:
    image: rabbitmq:4.1.3-management
    container_name: rabbitmq4.1.3
    ports:
      - "8005:5672"
    networks:
      - my_network
    volumes:
      - /data/rabbitmq:/var/lib/rabbitmq
      - /data/rabbitmq/config/rabbitmq.sh:/etc/rabbitmq/rabbitmq.sh
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=admin
      - RABBITMQ_DEFAULT_VHOST=/

networks:
  my_network:  # 网络名称
    external: true  # 声明为已创建好的网络

运行docker compose文件,如果名称不是docker-compose.yml可以通过-f参数指定文件名

sh 复制代码
docker-compose up -d

5.本地镜像导入导出

sh 复制代码
docker load -i file.tar
sh 复制代码
docker save image_name:tag -o file.tar  # 建议image_name:tag而不是image_id,否则导入时没有镜像名

6.容器挂载

假如我有一个打包好的镜像,那么我直接通过镜像运行docker run -d -p 8005 -v D:\Docker\vols\app:/app ai_cv指令,那么会自动创建D:\Docker\vols\app目录,但是这个目录是空的,也就是和容器内的app目录不同步,所以需要前三步。

sh 复制代码
docker create ai_cv  # 通过镜像名创建临时容器
docker cp container_id:/app D:\Docker\vols  # 将临时容器的app目录复制到宿主机的vols文件夹内
docker rm container_id  # 删除临时容器

# 运行并挂载新容器,此时宿主机的app目录和容器的app目录是同步的,即使修改里面的文件也是同步的。
docker run -d -p 8005 -v D:\Docker\vols\app:/app ai_cv  

7.运行rabbitmq容器

mq相关指令

sh 复制代码
rabbitmqctl status  # 查看mq运行状态
rabbitmqctl start_app  # 启动应用
rabbitmqctl stop_app  # 关闭应用
rabbitmqctl list_queues  # 查看所有队列(和队列未处理的消息数量)
rabbitmqctl list_exchanges  # 查看所有交换机
  1. 拉取镜像
sh 复制代码
docker pull rabbitmq:4.1.3-management
  1. 运行容器
sh 复制代码
docker run -d 
    --name rabbitmq4.1.3 
    -p 5672:5672 
    -p 15672:15672 
    -v D:\RabbitMQServer\data:/var/lib/rabbitmq 
    -e RABBITMQ_DEFAULT_VHOST=/ 
    -e RABBITMQ_DEFAULT_USER=admin 
    -e RABBITMQ_DEFAULT_PASS=admin 
    rabbitmq:4.1.3-management

8.mq与其他容器间的通信

  1. 创建网络
sh 复制代码
docker network create my_network
  1. 运行mq并指定网络
sh 复制代码
docker run -d 
    --name rabbitmq4.1.3 # 指定mq容器名
    --network my_network # 指定网络
    -p 5672:5672 
    -p 15672:15672 
    -v D:\RabbitMQServer\data:/var/lib/rabbitmq 
    -e RABBITMQ_DEFAULT_VHOST=/ 
    -e RABBITMQ_DEFAULT_USER=admin 
    -e RABBITMQ_DEFAULT_PASS=admin 
    rabbitmq:4.1.3-management
  1. 修改mq的host连接为容器名,而不是mq的地址(代码配置中修改)
sh 复制代码
host: rabbitmq4.1.3
  1. 需要连接mq的容器同样指定网络
sh 复制代码
docker run -d -p 5000:5000 --network my_network ai_cv
相关推荐
小蜗的房子15 分钟前
Oracle 19C RAC Public IP单网卡改为bond模式操作指南
运维·网络·数据库·sql·tcp/ip·oracle·oracle rac
sun00770036 分钟前
androd和qnx判断实网卡还是虚网卡
运维·服务器·网络
口嗨农民工1 小时前
live555 sample基本解读
运维·服务器
海盗12341 小时前
VMware 中 CentOS 7 无法使用 yum 安装 wget 的完整解决方案
linux·运维·centos
kida_yuan2 小时前
【Linux】在树莓派上搭建自建 Git 服务(基于 GitLab)- 实战笔记与运维清单
运维·gitlab·树莓派
lph0092 小时前
mqtt broker (mosquitto)创建服务器、订阅与发布
运维·服务器
by————组态2 小时前
睿控(Ricon)组态
运维·前端·物联网·信息可视化·组态·组态软件
戈壁老孙2 小时前
使用Nginx实现动态后端服务切换:一套配置管理多环境
运维·nginx
weixin_462446232 小时前
ubuntu真机安装tljh jupyterhub支持跨域iframe
linux·运维·ubuntu