编辑
2025-07-31
Docker
00
请注意,本文编写于 128 天前,最后修改于 128 天前,其中某些信息可能已经过时。

目录

Docker

1. CentOS安装

系统要求

Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

卸载旧版本

旧版本的 Docker称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

a.脚本安装

使用脚本安装时,在安装之前会自动进行检查,选择适合当前系统的包进行安装docker。如果发现有缺少的依赖,会自动进行安装。

  • 执行命令
curl https://get.docker.com > /tmp/install.sh
  • 修改权限

    chmod +x /tmp/install.sh
  • 执行脚本

    /tmp/install.sh

b. yum安装

执行以下命令安装依赖包:

sudo yum install -y yum-utils

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

执行下面的命令添加 yum 软件源:

$ sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo $ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo # 官方源 # $ sudo yum-config-manager \ # --add-repo \ # https://download.docker.com/linux/centos/docker-ce.repo

如果需要测试版本的 Docker 请执行以下命令:

$ sudo yum-config-manager --enable docker-ce-test

安装docker

更新 yum 软件源缓存,并安装 docker-ce

$ sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

systemctl enable docker systemctl restart docker

Unbuntu安装

系统要求

Docker Engine-Community 支持以下的 Ubuntu 版本:

  • Xenial 16.04 (LTS)
  • Bionic 18.04 (LTS)
  • Cosmic 18.10
  • Disco 19.04
  • 其他更新的版本……

手动安装

卸载旧版本

Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

sudo apt-get remove docker docker-engine docker.io containerd runc

当前称为 Docker Engine-Community 软件包 docker-ce 。

安装 Docker Engine-Community,以下介绍两种方式。

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker 。

设置仓库

更新apt包索引

$ sudo apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库:

$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common

添加 Docker 的官方 GPG 密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

使用以下指令设置稳定版仓库

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update

安装 Docker Engine-Community

更新apt包索引

$ sudo apt-get update

安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:

$ apt-cache madison docker-ce docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.1~ce~3-0~ubuntu | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.0~ce~3-0~ubuntu | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu xenial/stable amd64 Packages ...

使用第二列中的版本字符串安装特定版本,例如 5:18.09.13-0ubuntu-xenial。

$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

2. 基本命令

a. Docker run

docker run xxx echo "Hello World"

启动容器,输出信息

image-20221021175407841

docker run -i -t xxx /bin/bash

启动容器,请求Docker提供一个容器中的Shell。这样就可以进入容器中的命令行了。其中的 -i 和 -t 参数表示我们想要一个交互会话,/bin/bash 参数表示你想获得一个 bash shell。当你推出 shell 时,容器就会停止

image-20221021175407841

docker run -h CONTAINER -i -t xxx /bin/bash

启动容器,使用 -h 参数设置主机名(hostname)。移动 /bin目录的位置之后,现在这个容器已经没用了,至少暂时是这样的

image-20221021175407841

b. docker ps

docker ps

显示运行中容器的信息

image-20221021175407841

docker ps -a

列出所有容器,包括已经停止的容器。

image-20221021181421062

c. docker inspect

docker inspect xxx

显示容器的详细信息

image-20221021180136305

容器信息太多。使用 grap 或者 --format 参数过滤感兴趣的信息。例如:

docker inspect xxx grep | IPAddress

image-20221021180136305

docker inspect --format {{.NetworkSettings.IPAddress}} frosty_moore

image-20221021180519571

d. docker diff

docker diff xxx

可以看到容器中文件改动状态。可以看到被删除的文件有 /bin,有新增的 /basket 以及它里面的文件

image-20221021180700087

image-20221021180716572

e. docker logs

docker logs xxx

显示容器的日志,能得知这个容器里曾经发生过的一切事情

image-20221021180938875

f. docker rm

docker rm xxx

删除容器

image-20221021181928292

如果想删除所有已经停止的容器,可以利用 docker ps -aq -f status=exited 的结果,结果中包含所有已停止容器的 ID。例如:

docker rm -v $(docker ps -aq -f status=exited)

image-20221021182128509

注意 -v 参数的作用,它意味着当所有有Dokcer管理的数据卷已经没有和任何容器关联时,都会一律删除。为了避免已停止的容器数据量不断增加,可以在执行docker run 的时候加上 --rm参数,它的作用是当容器退出时,容器和相关的文件系统会被一起删除。如下:

docker run -t -t --rm debain /bin/bash

image-20221021182711684

可以看到在运行之前,存在一个已经停止的容器。在 运行并退出之后,没有新的已停止容器增加。

g. docker stop

docker stop xxx

停止容器

image-20221021182510301

3. 案例

本案例采用docker官方提供的pdf

创建一个镜像

docker run -it --name cowsay --hostname cowsay debian bash apt-get update apt-get install -y cowsay fortune

image-20221022011526048

/usr/games/fortune | /usr/games/cowsay

image-20221022011645884

docker commit cowsay xiayaling/widdo/cowsayimage

image-20221022011957574

docker run test/cowsayimage /usr/games/cowsay "Moo"

image-20221022012133765

4. Docker File

Dockerfile

FROM debian:wheezy #WORKDIR /usr/local/docker/image/cowsay LABEL author="widdo" email="only_xyl@163.com" #修改源 #备份系统默认源 RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak #清空/etc/apt/sources.list RUN echo "deb http://mirrors.aliyun.com/debian/ jessie main contrib non-free" > /etc/apt/sources.list #RUN apt-get install -y cowsay RUN apt-get update && apt-get install -y cowsay fortune COPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh

#!/bin/bash if [ $# -eq 0 ]; then /usr/games/fortune | /usr/games/cowsay else /usr/games/cowsay "$@" fi

image-20221027172907869

注意:

  • 创建docker工作目录,存放Dockerfile文件

  • Dockerfile文件名,必须大写

  • 后续镜像中用到的文件,都要放到工作目录下

  • Dockerfile中需要修改 apt 的源,否则下载不下来

  • 参考下面我的路径

image-20221027172212783

5. 推送镜像

本文采用 Docker Hub 作为 docker 的镜像仓库

想要推送镜像到docker hub。需要满足如下条件:

  • Docker Hub 上注册账号
  • 创建仓库。可以是public ,也可以是 private (只能有一个private 的)
  • 本地(linux)上登录 Docker Hub 。使用 docker login 进行登录,输入用户名密码

a. 创建镜像

参考 4

b. 添加标签

可选项。当镜像仓库不是自己 docker hub中的仓库时。可以通过添加标签的方式指定

docker tag xiayaling/widdo:cowsay-dockerfile-2.0

c. 推送镜像

docker push xiayaling/widdo:cowsay-dockerfile-2.0

6. 搭建私服

a. 下载 registry

执行命令。

docker pull registry

b. 新建密码目录

创建目录,用来存放密码

mkdir -p /docker/registry/auth

c. 下载htpasswd

因为新版的docker registry没有htpasswd命令(是指运行的registry容器中没有htpasswd命令),所以自己下载。

注意:这个不是在容器里运行,实在vm

然后,用htpasswd生成用户名和密码文件

yum install httpd-tools

image-20230217103358657

d. 生成密码

命令格式:htpasswd -Bbn 用户名 密码 > htpasswd。前一个htpasswd是命令,后一个是生成的用户名密码文件。需要在/docker/registry/auth目录下执行

htpasswd -Bbn widdo widdo_docker > htpasswd

image-20230217103530266

注意:网上很多是这样的:

docker run --entrypoint htpasswd registry:latest -Bbn widdo widdo_docker >> /docker/registry/auth/htpasswd

image-20230217103909359

这个命令是指运行 docker registry容器里的htpasswd命令。但是报错exec: "htpasswd": executable file not found in $PATH: unknown.。就是原先的registry版本里有htpasswd命令,现在的没有了。

e. 创建docker registry

运行如下命令

docker run -d -p 5000:5000 --name registry --restart=always \ -v /docker/registry/auth:/auth/ \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -e REGISTRY_STORAGE_DELETE_ENABLED=true \ registry:latest

image-20230217104220384

  • docker-compose方式

进入docker/registry/auth目录下。

实际使用的目录:

  • /opt/software/docker/registry
    • /auth
    • /data
    • docker-compose.yml
version: '3.8' services: registry: image: registry container_name: docker-registry ports: - "5000:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_AUTH_HTPASSWD_PATH: ./auth/htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./data:/data - ./auth:/auth

f. 登录registry

登录搭建的私有docker仓库

docker login xxx:5000

输入用户名密码之后,这个地方会报错

image-20230217104459883

解决方案

  1. 修改/etc/docker/daemon.json,添加配置

    vim /etc/docker/daemon.json #添加如下内容 {"insecure-registries":["xxxx:5005","xxxx"]}
  2. 加载配置,重启docker服务

    systemctl daemon-reload systemctl restart docker

image-20230217105202677

重新登录docker registry

image-20230217105309798

g. 标记本地镜像

dcoker tag 镜像:[tag] 服务端IP:端口/镜像名:tag

docker tag nginx:stable-alpine 101.42.10.77:5000/nginx:local

image-20230217105806364

h. 推送镜像到仓库

执行命令 docker push

docker push 101.42.10.77:5000/nginx:local

image-20230217110023067

i. 查看效果

执行命令

curl -u "用户名:密码" -X GET http://101.42.10.77:5000/v2/_catalog

image-20230217110323992

6. Dokcer远程服务

idea 打包生成docker镜像时,用到的插件里面需要配置docker的远程服务

a. 修改配置

进入目录 /usr/lib/systemd/system/docker.service 下,添加 -H tcp://0.0.0.0:2375。相当于开放 2375端口

ExecStart=usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 改为: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

b. 重新加载配置

systemctl daemon-reload systemctl restart docker

c. 验证

执行一下命令

curl https://127.0.0.1:2375/version

image-20221028012326336

7. 插件

maven 插件,用来生成docker镜像。常用的有三个:

  • com.spotify/docker-maven-plugin,支持镜像的创建和提交
  • com.spotify/dockerfile-maven-plugin,支持镜像的创建和提交
  • io.fabric8/docker-maven-plugin,支持镜像的创建和提交,容器的启动和停止

a. com.spotify/docker-maven-plugin

配置如下:

<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <serverId>docker-hub</serverId> <registryUrl>https://hub.docker.com/</registryUrl> <imageName>widdo-image</imageName> <!-- 指定 Dockerfile 路径 ${project.basedir}:项目根路径下--> <dockerDirectory>${project.basedir}</dockerDirectory> <!--指定远程 docker api地址--> <dockerHost>${docker.host}</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> <!--将插件绑定到maven的生命周期中--> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>tag-image</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>widdo-image</image> <newName>https://hub.docker.com/widdo-image</newName> </configuration> </execution> <execution> <id>push-image</id> <phase>deploy</phase> <goals> <goal>push</goal> </goals> <configuration> <imageName>widdo-image</imageName> </configuration> </execution> </executions> </plugin>

使用

可以和maven的生命周期进行绑定。执行mvn 命令的时候,自动执行绑定的 docker 命令

mvn package 绑定 docker build mvn deploy 绑定 docker push

详细信息参考GitHub

存在问题:

  • 复制很多文件。

  • 目录嵌套。target/目录下嵌套很多层 dcoker信息 。

    也可能是没用对,不过目前还没找到原因

问题一:复制很多文件

image-20221101140335160

问题二:目录嵌套

image-20221101183517289

优点

  • github文档比较清晰
  • 不仅支持插件中直接配置镜像指令,又支持dockerfile
  • 镜像的生命周期可以和maven的生命周期绑定

缺点

  • 复制很多文件
  • 存在目录嵌套
  • github不活跃,最近一次提交是3年前

b. com.spotify/dockerfile-maven-plugin

配置如下:

<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <contextDirectory>${project.basedir}</contextDirectory> <!--注意:官方github的readme提供的配置中,没有配置dockerfile,导致镜像构建的的时候找不到 dockerfile 而报错,出现dockerfile:null--> <dockerfile>${project.basedir}</dockerfile> <repository>${docker.registry}/${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.basedir}/${project.build.finalName}.${project.packaging}</JAR_FILE> </buildArgs> </configuration> </plugin>

使用

可以和maven的生命周期进行绑定。执行mvn 命令的时候,自动执行绑定的 docker 命令

mvn package 绑定 docker build mvn deploy 绑定 docker push

结果如下:

image-20221101185559471

存在问题:

  • 官方github的readme提供的配置中,没有添加dockerfile,会导致build的时候,找不到dockerfile.从而 docker build 报错
  • 镜像创建的时候需要docker环境,而插件com.spotify/dockerfile-maven-plugin默认找本地的docker环境,如果本地是windows的话,不装docker环境会报错,出现上图找不到docker_engine的情况

优点:

  • 配置更加简单,只需要关心:仓库,标签,dockerfile。纯粹的面向 dockerfile

  • 不存在复制过多文件和目录嵌套问题

  • 镜像的生命周期可以和maven的生命周期绑定

缺点

  • 官方github文档存在问题
  • 需要本地docker环境
  • github 不活跃,最近一次提交是3年前

c. io.fabric8/docker-maven-plugin

配置如下:

<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.39.0</version> <!--全局配置--> <configuration> <!--配置远程docker守护进程url--> <dockerHost>${docker.host}</dockerHost> <!--认证配置,用于私有registry认证--> <authConfig> <username>${docker.username}</username> <password>${docker.password}</password> </authConfig> <!--用于在标准输出中打开详细输出的字符串属性,默认是false--> <verbose>true</verbose> <!--镜像相关配置,支持多镜像--> <images> <!-- 单个镜像配置 --> <image> <!--镜像名(含版本号)--> <name>${docker.registry}/${project.name}:${project.version}</name> <!--registry地址,用于推送,拉取镜像--> <registry>${docker.registry}</registry> <!--镜像build相关配置--> <build> <!--docker-assembly.xml 定义镜像中的文件--> <!-- <assembly> </assembly>--> <!--使用dockerFile文件,定义构建镜像的流程--> <dockerFile>${project.basedir}/Dockerfile</dockerFile> </build> </image> </images> </configuration> </plugin>

使用

不可以和maven的生命周期进行绑定。只能单独执行 docker命令

docker build docker push

结果如下:

image-20221102010326919

优点

  • 社区活跃,最近一次提交是12天前
  • 官方文档比较正规
  • 即支持镜像的build,push,又支持container的启动和停止

缺点

  • 功能比较多,配置比较复杂,学习成本高

整体来说,推荐使用 io.fabric8/docker-maven-plugin

8. 问题

1. 停止docker失败

image-20230210161333145

原因

Docker有两个服务进程 分别是/usr/lib/systemd/system/docker.service 和 /usr/lib/systemd/system/docker.socket 上面的警告意味着如果试图停止docker服务,但是docker.socket还处于激活状态

解决

  • **方案一:**停止docker socket
systemctl stop docker.socket

image-20230210162144796

根据提示可知:在停止docker.socket 之后,docker服务停止了

  • **方案二:**删除docker.socket文件
cd /lib/systemd/system/ && rm -rf docker.socket

查看docker状态

systemctl status docker.service

image-20230210162422888

重新创建docker.socket

cd /lib/systemd/system vim docker.socket #添加以下内容 [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] ListenStream=/var/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target

重启docker

systemctl daemon-reload systemctl restart docker.service

image-20230210164052439

2. Docker 启动时报错:iptables:No chain/target/match by the name

docker服务启动的时候,docker服务会向iptables注册一个链,以便让docker服务管理的containner所暴露的端口之间进行通信

通过命令iptables -L可以查看iptables

在开发环境中,如果你删除了iptables中的docker链,或者iptables的规则被丢失了(例如重启firewalld),docker就会报iptables error例如:failed programming external connectivity … iptables: No chain/target/match by that name

要解决这个问题,只要重启docker服务,之后,正确的iptables规则就会被创建出来

3. 容器日志文件过大

查询文件及子目录大小

du -h --max-depth=1

查看磁盘空间

df -h

分析哪个文件夹占用内存比较高

du -h -d 1 /

分析容器日志文件

du -hl -d 1 /var/lib/docker/containers/

image-20241002203546186

解决

方案一

全局配置。修改docker配置文件。

  1. 通过vim /etc/docker/dameon.json,添加以下配置。
{ "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"5"} }
  • max-size表示一个容器日志文件大小上限是500M
  • max-file表示容器最多有5个日志。id.json、id+1.json 等。以上配置 500M*5 = 2.5G
  1. 重启docker服务
systemctl daemon-reload systemctl restart docker

**注意:**已经存在的容器不会生效,需要重新创建。

方案二

docker-compose容器限制

version: '3' services: service-name: image: image-xxx restart: always logging: # driver: "none" # 关闭日志 driver: "json-file" options: max-size: "100m" max-file: "3"

docker配置jvm参数

  1. dockerfile中添加环境参数
### 基础镜像,使用alpine操作系统,openjkd使用 FROM 101.43.194.240:5000/jdk:openjdk14 # 作者 LABEL authro="widdo" email="only_xyl@163.com" ARG VERSION ARG SERVICE_NAME ARG SERVICE_PORT ARG JAVA_OPTS ENV VERSION ${VERSION} ENV SERVICE_NAME ${SERVICE_NAME} ENV SERVICE_PORT ${SERVICE_PORT} # 系统编码 ENV LANG=C.UTF-8 LC_ALL=en_US.UTF-8 # 运行参数 ENV JAVA_OPTS ${JAVA_OPTS} RUN echo "JAVA_OPTS=${JAVA_OPTS}" # 声明一个挂载点,容器内此路径会对应宿主机的某个文件夹 VOLUME /tmp #RUN echo "JAR Path: $(pwd)/target/${SERVICE_NAME}-${VERSION}.jar" # 检查JAR文件是否存在 # 应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar ADD ./target/${SERVICE_NAME}-${VERSION}.jar /app.jar # 声明运行时端口 EXPOSE ${SERVICE_PORT} # 启动容器时的进程 ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
  1. docker-compose中配置
#gateway服务 gateway: image: ${REGISTRY_URI}/${GATEWAY_SERVICE_NAME}:${VERSION} container_name: ${GATEWAY_SERVICE_NAME} build: context: ../context dockerfile: develop/Dockerfile args: - VERSION=${VERSION} - SERVICE_NAME=${GATEWAY_SERVICE_NAME} - SERVICE_PORT=${GATEWAY_SERVICE_PORT} - JAVA_OPTS=-Xmx256m -Xms256m ports: - ${GATEWAY_SERVICE_PORT}:${GATEWAY_SERVICE_PORT} #指定网络,所有服务处于同一网络 #networks: # - my_network command: - --spring.profiles.active=env - --spring.config.location=../../nacos/gateway.yaml

**注意:**参数JAVA_OPTS

验证

容器中验证jvm配置是否生效

  1. 进入容器
docker exec -it xxx bash
  1. 执行命令
jcmd 1 VM.flags

image-20241002213330364

-XX:InitialHeapSize:初始堆大小。同-Xms -XX:MaxHeapSize: 最大堆大小。 同-Xmx -XX:MinHeapDeltaBytes: 表示当JVM决定是否要做或者尝试扩容的时候最小扩/缩多少,JDK1.8以下默认为192K,JDK1.8默认512K -XX:newSize:表示新生代初始内存的大小 -XX:MaxNewSize:JVM堆区域新生代内存的最大可分配大小 -XX:OldSize:老生代的大小 -XX:+UseParallelGC:指 定在New Generation 使用 parallel collector垃圾收集器 -XX:CICompilerCount:最大并行编译数 -XX:+UseCompressedClassPointers:开启类指针压缩 -XX:+UseCompressedOops:开启普通对象指针压缩

Docker-compose

安装

下载文件

下载docker-compose的可执行文件

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

image-20250313225351189

赋予权限

赋予可执行权限给下载的二进制文件

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

image-20250313225454159

全局访问

创建一个符号链接,将docker-compose命令链接到/usr/bin目录,以便可以全局访问

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

image-20250313225711350

验证安装

运行命令docker-compose vsersion查看信息

docker-compose version

image-20250313225816265

本文作者:widdo

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!