在 Debian 12 中配置好 Docker Compose

在 Debian 12 中配置好 Docker Compose
Docker Logo

1、安装 Docker

$ wget -qO- get.docker.com | bash
$ systemctl enable docker

2、(在步骤 1 中应该已经装好了) 安装 Docker Compose

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

3、开启 IPv6

编辑 /etc/docker/daemon.json 文件,加入下面的内容:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64",
  "experimental": true,
  "ip6tables": true
}

重启 Docker 服务,并创建 IPv6 网络(同时也支持 IPv4):

$ systemctl restart docker
$ docker network create --ipv6 npm-net # 或者改成其他的名称

4、在 docker-compose.yml 中使用共享网络的方法

services:
  service-name:
    image: 'xxxx'
    ports:
      - 'xxxx:xxxx' # 用于访问该服务的端口
    networks:
      - <my-shared-network> # 共享网络

networks: # 共享网络
  <my-shared-network>:
    external: true

使用同一个网络的服务可以通过 service-name 相互访问。

其他:启动、停止和更新容器

# 创建
$ docker-compose up -d

# 重启服务
$ docker-compose restart

# 关闭服务
$ docker-compose down

# 更新镜像
$ docker-compose pull
$ docker-compose up -d --remove-orphans
# 删除旧的镜像
$ docker image prune

其他:删除某个 Docker 服务

# 1、停止容器
$ docker-compose down

# 2、查看容器的ID和运行状态
$ docker ps -a

# 3、删除容器
$ docker rm <container_id>

# 4、查看镜像的ID
$ docker images

# 5、删除镜像
$ docker rmi <image_id>

其他:执行命令

使用 docker run 执行命令

# 基本语法
$ docker run [OPTIONS] IMAGE_NAME COMMAND [ARG...]
# 执行一次性命令,执行完毕后容器删除
$ docker run --rm ubuntu echo "Hello from Ubuntu"

# 进入交互式 shell
$ docker run -it ubuntu /bin/bash

使用 docker exec 在容器中执行命令

# 进入正在运行的容器的交互式 shell
$ docker exec -it <容器ID或名称> /bin/bash

# 使用 docker exec 在现有容器中执行命令而非进入 shell
$ docker exec <容器ID或名称> <命令>

其他:更改 docker 数据目录

默认情况下数据目录是 /var/lib/docker,修改或新建 /etc/docker/daemon.json

{
  "data-root": "/your/path"
}

其他:导出/加载本地镜像文件

docker save -o myimage.tar 镜像名称:标签
docker load -i myimage.tar