互联网科技分享技术教程Vivi不懂

目 录CONTENT

文章目录

Docker常用指令

Vivi
2024-12-28 / 0 评论 / 0 点赞 / 312 阅读 / 0 字

Docker 是一种开源容器化技术,通过容器将应用及其依赖打包在一起,保证在任何环境中都能运行。它轻量、高效,可以在开发和生产环境中快速部署应用,解决了“在我电脑上可以运行”的问题。Docker 的核心组件包括镜像(Image)、容器(Container)、仓库(Repository),用户可以基于镜像创建容器运行服务。

而 Docker Compose 是 Docker 的补充工具,用于定义和管理多容器的应用。通过一个简单的 YAML 配置文件(通常命名为 docker-compose.yml),用户可以定义多个服务、网络、存储卷等,并通过一条命令启动整个应用栈。它大幅简化了复杂应用的部署,尤其适合微服务架构场景。

总结来说,Docker 是容器运行的基础,而 Docker Compose 是容器编排的利器,让应用部署更轻松快捷。

以上为Ai生成......

安装Docker

1.软件源安装

apt install -y docker.io  docker-compose

自启动Docker

systemctl enable --now docker

2.官方源安装

curl -fsSL https://get.docker.com | bash

设置开机自启

systemctl enable docker

启动Dcoker

systemctl start docker

3.常用软件包+docker一键脚本

apt update -y

apt install -y wget vim sudo curl git

wget -qO- get.docker.com | bash

docker -v

systemctl enable docker

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

4.可用的docker镜像站

$ sudo mkdir -p /etc/docker

$ sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://dockerpull.com",
"https://dockerproxy.cn",
"https://docker.loli.voto",
"https://docker.chenby.cn",
"https://docker-cf.registry.cyou",
"https://docker.m.daocloud.io",
"https://docker.ketches.cn",
"https://docker.1panel.dev",
"https://docker.1panel.live",
"https://docker.rainbond.cc",
"https://hub.rat.dev",
"https://docker.aityp.com/",
"https://docker.catiz.eu.org/"
]
}
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Docker Compose实例

示例

version: '3.9'  # 指定 Docker Compose 文件的版本,确保兼容性。

services:  # 定义服务部分,包含所有要运行的容器。
  web:  # 定义一个名为 web 的服务。
    image: nginx:latest  # 使用官方 Nginx 镜像的最新版本。
    ports:
      - "8080:80"  # 将宿主机的 8080 端口映射到容器的 80 端口。
    volumes:
      - ./html:/usr/share/nginx/html  # 将本地 html 文件夹挂载到容器的 Nginx 网页目录。
    depends_on:
      - db  # 声明 web 服务依赖于 db 服务。

  db:  # 定义一个名为 db 的服务。
    image: mysql:5.7  # 使用官方 MySQL 镜像的 5.7 版本。
    environment:  # 设置环境变量。
      MYSQL_ROOT_PASSWORD: rootpass  # 设置 MySQL 根用户的密码。
      MYSQL_DATABASE: exampledb  # 初始化创建一个名为 exampledb 的数据库。
      MYSQL_USER: user  # 设置 MySQL 普通用户的用户名。
      MYSQL_PASSWORD: userpass  # 设置 MySQL 普通用户的密码。
    volumes:
      - db_data:/var/lib/mysql  # 将 MySQL 数据存储到命名卷 db_data 中,确保数据持久化。

volumes:  # 定义命名卷。
  db_data:  # 定义一个名为 db_data 的卷,用于存储数据库数据。

执行

  1. 保存为 docker-compose.yml 文件。

  2. 在文件所在目录执行:

    docker-compose up -d
    • -d 参数表示以后台模式运行。

  3. 访问 http://localhost:8080 即可查看 Nginx 默认页面。

  4. 停止服务:

    docker-compose down
    • 停止所有容器,并删除关联的网络和临时卷(命名卷保留)。

Docker指令

镜像管理

  • 搜索镜像

docker search <镜像名>
  • 拉取镜像

docker pull <镜像名>:<标签>
  • 查看本地镜像

docker images
  • 删除镜像

docker rmi <镜像名或ID>
  • 构建镜像

docker build -t <镜像名>:<标签> <路径>
  • 查看镜像历史

docker history <镜像名>:<标签>
  • 导出镜像

docker save -o <文件名.tar> <镜像名>:<标签>
  • 加载镜像

docker load -i <文件名.tar>
  • 推送镜像到仓库

docker push <镜像名>:<标签>
  • 打标签

docker tag <源镜像:标签> <目标镜像:标签>
  • 查看镜像详细信息

docker inspect <镜像名>:<标签>
  • 查找镜像的文件系统大小

docker image inspect <镜像名> --format '{{.Size}}'

容器管理

  • 创建并运行容器

docker run [选项] <镜像名>
  • 查看运行中的容器

docker ps
  • 查看所有容器

docker ps -a
  • 启动容器

docker start <容器ID或名称>
  • 停止容器

docker stop <容器ID或名称>
  • 删除容器

docker rm <容器ID或名称>
  • 重启容器

docker restart <容器ID或名称>
  • 查看容器日志

docker logs <容器ID或名称>
  • 查看容器的资源使用情况

docker stats <容器ID或名称>
  • 进入容器

docker exec -it <容器ID或名称> /bin/bash
  • 附加到正在运行的容器

docker attach <容器ID或名称>
  • 查看容器配置

docker inspect <容器ID或名称>
  • 导出容器文件系统

docker export <容器ID或名称> > <文件名.tar>
  • 获取容器的 IP 地址

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <容器ID或名称>

数据卷管理

  • 创建数据卷

docker volume create <数据卷名称>
  • 查看数据卷

docker volume ls
  • 查看数据卷详情

docker volume inspect <数据卷名称>
  • 删除数据卷

docker volume rm <数据卷名称>
  • 清理未使用的数据卷

docker volume prune
  • 将数据卷挂载到容器

docker run -v <数据卷名称>:<容器路径> <镜像名>

网络管理

  • 创建网络

docker network create <网络名>
  • 查看网络

docker network ls
  • 查看网络详情

docker network inspect <网络名>
  • 删除网络

docker network rm <网络名>
  • 连接容器到网络

docker network connect <网络名> <容器名>
  • 断开容器与网络

docker network disconnect <网络名> <容器名>
  • 查看容器的网络连接

docker inspect <容器名> | grep Network
  • 查看容器的网络信息

docker exec <容器ID或名称> ifconfig

高级操作

  • 导出镜像

docker save -o <文件名.tar> <镜像名>:<标签>
  • 加载镜像

docker load -i <文件名.tar>
  • 执行脚本

docker exec -it <容器ID或名称> /bin/bash -c '<脚本命令>'
  • 创建并启动容器

docker run -d --name <容器名> <镜像名>
  • 停止并删除容器

docker rm -f <容器ID或名称>
  • 实时查看容器资源使用

docker stats <容器ID或名称>
  • 查看容器运行时状态

docker inspect <容器ID或名称>
  • 查看日志实时更新

docker logs -f <容器ID或名称>
  • 查找 Dockerfile 文件

docker history <镜像名>:<标签>


  • 清理 Docker 系统

docker system prune
  • 清理未使用的镜像

docker image prune
  • 清理未使用的容器

docker container prune
  • 清理未使用的网络

docker network prune
  • 查看 Docker 存储使用情况

docker system df
  • 测试容器的性能

docker stats <容器ID或名称>
  • 查看所有活动的网络

docker network inspect bridge
  • 查看当前的 Docker 环境变量

docker info
  • 列出所有可用的 Docker 命令

docker --help
  • 查看 Docker 版本

docker version
  • 查看 Docker 配置信息

docker info

Docker Compose的案例

mkdir -p /root/docker/项目

cd /root/docker/项目

nano docker-compose.yml

Halo+Mysql

~/halo/docker-compose.yaml

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=o#DwN&JSa56
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

  halodb:
    image: mysql:8.1.0
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
      - MYSQL_DATABASE=halo

networks:
  halo_network:
docker-compose up -d
docker-compose logs -f

LobeChat

~/lobechat/docker-compose.yaml

version: '3.8'

services:
  lobe-chat:
    image: lobehub/lobe-chat
    container_name: lobe-chat
    restart: always
    ports:
      - '3210:3210'
    environment:
      OPENAI_API_KEY: sk-xxxx
      OPENAI_PROXY_URL: https://api-proxy.com/v1
      ACCESS_CODE: lobe66
$ docker-compose up -d

3X-UI

  1. 安装Docker:

    bash <(curl -sSL https://get.docker.com)
  2. 克隆仓库:

    git clone https://github.com/MHSanaei/3x-ui.git
    cd 3x-ui
  3. 运行服务:

    docker compose up -d

    docker run -itd \
       -e XRAY_VMESS_AEAD_FORCED=false \
       -v $PWD/db/:/etc/x-ui/ \
       -v $PWD/cert/:/root/cert/ \
       --network=host \
       --restart=unless-stopped \
       --name 3x-ui \
       ghcr.io/mhsanaei/3x-ui:latest

运行

 cd 3x-ui
 docker compose down
 docker compose pull 3x-ui
 docker compose up -d

删除

 docker stop 3x-ui
 docker rm 3x-ui
 cd --
 rm -r 3x-ui

...

0

评论区