Docker

详细文档:https://docs.docker.com

‌启动/停止Docker服务‌

启动:systemctl start docker

停止:systemctl stop docker

查看状态:systemctl status docker

设置开机自启:systemctl enable docker

‌查看版本与信息‌

版本信息:docker version

系统信息(包括容器和镜像统计):docker info

‌帮助文档‌

查看所有命令帮助:docker --help

查看特定命令帮助(如run):docker run --help

‌镜像管理‌

‌查看本地镜像‌:docker images [OPTIONS](例如:docker images -a显示所有镜像,包括未使用的)。

‌拉取镜像‌:docker pull [仓库名]:[标签](默认拉取latest版本)。

‌删除镜像‌:docker rmi -f [镜像ID/名称]

删除所有未使用的镜像:docker rmi -f $(docker images -aq)

‌构建镜像‌:docker build -t [标签] [路径](例如:docker build -t myapp:1.0 .)。

保存为tar包镜像‌:docker save -o [文件名] [镜像名]

从tar包加载镜像‌:docker load -i [文件名]

‌容器操作‌

‌创建并后台运行容器‌:docker run -d --name [容器名] -p [宿主机端口]:[容器端口] [镜像名]

docker run -d --name web -p 80:80 nginx

‌查看正在运行的容器:docker ps

所有容器(含停止的):docker ps -a

启动已停止的容器:docker start [容器ID/名称]

停止运行的容器:docker stop [容器ID/名称]

重启容器:docker restart [容器ID/名称]

强制删除正在运行的容器:docker rm -f [容器ID/名称]

删除所有停止的容器:docker rm $(docker ps -a -q)

‌进入容器内部‌:docker exec -it [容器ID/名称] /bin/bash

docker exec -it web /bin/bash

网络配置

列出所有网络:docker network ls或 docker network ls --format "{{.Name}}"(显示网络名称)。

创建自定义网络: docker network create --driver bridge [网络名]

docker network create mynet

将容器加入自定义网络: docker run --name [容器名] --network=[网络名] [镜像名]

docker run --name web --network=mynet nginx

docker-compose

运行 docker-compose up

运行并挂起 docker-compose up -d

停止 docker-compose down

删除:先删除container(images运行时的的状态) 可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看

docker ps -a
docker rm 117843ade696

docker images
docker rmi 117843ade696

更新镜像:docker-compose up -d

Yaml 配置

version: '3'
services:
  服务名称:
    image: */*:latest
    restart: no
    container_name: 名字
    
    volumes:
      - ./yaml同级文件夹/:/data/
      
    ports:
      - "5799:80"
      
    # environment: # 环境
    #   - WEBSOCKET_ENABLED=true
    
    # privileged: true # root权限
    
    # no 容器退出时,不自动重启容器。这是默认值
    # on-failure[:max-retries] 当容器以非零状态码(正常退出时状态码为0)退出时,重新启动。max-retries为最大重试次数(可选),限制Docker守护程序尝试的重新启动重试次数。如不指定最大重试次数,默认为不断重试。
    # always 无论退出状态如何,始终重新启动容器
    # unless-stopped 无论退出状态如何,重新启动容器。如果容器在Docker守护程序停止之前已经处于停止状态,那么守护程序启动时,容器不会重新启动
    # restart: unless-stopped 

简单的Web应用和数据库服务组合

version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./website:/usr/share/nginx/html
    networks:
      - app-network
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: appdb
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-network
volumes:
  db-data:
networks:
  app-network:
    driver: bridge

restart 

  • no 容器退出时,不自动重启容器。这是默认值
  • on-failure[:max-retries] 当容器以非零状态码(正常退出时状态码为0)退出时,重新启动。max-retries为最大重试次数(可选),限制Docker守护程序尝试的重新启动重试次数。如不指定最大重试次数,默认为不断重试。 on-failure:3,在容器非正常退出时重启容器,最多重启3次
  • always 无论退出状态如何,始终重新启动容器
  • unless-stopped 无论退出状态如何,重新启动容器。如果容器在Docker守护程序停止之前已经处于停止状态,那么守护程序启动时,容器不会重新启动

Dockerfile

FROM   basse镜像

MAINTAINER    镜像作者

COPY    复制当前目录文件到镜像
COPY    src dest
COPY    ["src","dest"]

ADD   一样,复制并自动解压(tar,zip,tgz,xz)

EXPOSE    监听端口

WORKDIR  设置工作目录

VOLUME    存储

RUN   在容器中运行的命令

CMD 容器启动时的命令

最后更新于 2025年6月26日