Ubuntu 安装docker docker-compose

Docker 通过提供轻量级、可移植且高效的解决方案,简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。

Docker 构建有什么作用?

Docker build 是一个命令行界面 CLI命令,允许你根据 Dockerfile 中指定的指令构建 Docker镜像。它使镜像创建过程自动化,确保了一致性和可重复性。

Docker 构建是如何工作的?

Docker 构建通过执行 Dockerfile 中的指令序列来创建镜像。这些指令包括复制文件、安装依赖项和执行命令等操作。当运行 docker build 命令时,Docker 守护进程会逐条读取并执行 Dockerfile 中的指令,每条指令都会生成一个轻量级的只读层。这些层被堆叠起来,形成最终的镜像。

为了提高效率,Docker 会缓存那些自上次构建以来未发生变化的层,这样在后续的构建中就可以直接使用这些缓存层,而无需重新构建,从而大幅缩短构建时间。

完成所有指令后,Docker 将生成一个包含应用程序及其所有依赖项的最终镜像,这个镜像随时准备被用来运行容器。

安装 Docker

安装必要的依赖包

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker APT 源

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 更新软件包索引

sudo apt-get update

安装 Docker CE (社区版)

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

验证 Docker 是否安装成功

sudo docker --version
Docker version 24.0.5, build 12345678

 启动并设置 Docker 开机自启

sudo systemctl start docker
sudo systemctl enable docker

将当前用户加入 docker 用户组
默认情况下,只有 root 用户或 docker 用户组的成员才能运行 Docker 命令。如果您希望当前用户无需使用 sudo 即可运行 Docker,可以将用户加入 docker 用户组:

sudo usermod -aG docker $USER

然后重新登录终端或重启系统以使更改生效

检查 Docker 服务是否正在运行:

sudo reboot #重启
sudo systemctl status docker

测试 Docker

docker run hello-world


Hello from Docker!
This message shows that your installation appears to be working correctly.
  • 该命令会从 Docker Hub 上拉取 hello-world 镜像,并在容器中运行。
  • 如果成功,会在终端中看到一段欢迎信息。

安装docker-compose

docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose,你可以使用 YAML 文件来配置应用程序的服务、网络和卷。它简化了复杂应用的配置和启动过程,使得管理和部署多个相互依赖的容器变得非常简单。

# 删除旧版本(如果有)
sudo rm -f /usr/local/bin/docker-compose

#离线安装
wget -c --no-check-certificate https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-Linux-x86_64
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

# 或者使用阿里云镜像源下载
sudo curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 检查下载内容是否为二进制文件
file /usr/local/bin/docker-compose
#/usr/local/bin/docker-compose: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=..., not stripped

 
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
 
# 验证安装
docker-compose --version

运行容器服务

在docker-compose.yml文件所在目录,运行容器服务

docker-compose up

docker-compose.yml根据 build.context (如果你没有显式指定 context,默认值是当前目录)查找目录下的 Dockerfile构建。在使用 docker-compose up 时,Docker Compose 默认会自动加载当前目录下的 .env 文件,用于替换或设置 docker-compose.yml 中的环境变量.

Dockerfile例子:

FROM registry.cn-hangzhou.aliyuncs.com/hyperf/hyperf:8.1-alpine-v3.18-swoole-v5.0
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"

ARG build_env=prod

ENV BUILD_ENV=${build_env:-"prod"} \
    SCAN_CACHEABLE=(false)

WORKDIR /www

COPY . /www

RUN  cd /www \
    && composer install --no-dev -o \
    && composer clearcache \
    && php bin/hyperf.php

EXPOSE 8080 8888 8889

ENTRYPOINT ["php", "/www/bin/hyperf.php", "start"]

docker-compose.yml 文件详解

docker-compose.yml 文件用于定义服务、网络和卷。这个文件使用 YAML 格式编写,并且可以通过它来描述多个容器之间的关系以及它们的配置。下面是一个详细的解释,帮助你理解如何编写和使用 docker-compose.yml 文件。

version: '3.4'
services:
    project:
        image: shanghai.aliyuncs.com/hyperf-work/skeleton:hyperf-8.1
        container_name: test-api
        restart: always
        ports:
            - "9005:8080"
        volumes:
            - ./:/www
        entrypoint:  ["php", "/www/bin/hyperf.php", "start"]
        #entrypoint:  ["sleep", "3600"]
        networks:
            - test-api
       environment:
          - APP_ENV=dev
          - SCAN_CACHEABLE=false


networks:
    test-api:
        driver: bridge
  • image: 使用的镜像地址,这里是阿里云的一个私有镜像仓库中的 Hyperf 项目镜像。
  • container_name: 容器名称,命名为 test-api。
  • build: 如果需要从 Dockerfile 构建镜像,可以指定路径。
  • depends_on: 表示依赖的服务,但请注意这不会等待直到依赖服务完全启动。
  • restart: 设置容器重启策略为 always,即无论退出状态如何,Docker 都会自动重启该容器。
  • environment: 设置环境变量。
  • ports: 端口映射,将主机的 9005 端口映射到容器的 8080 端口。可以使用9005或者8080访问
  • volumes: 卷挂载,将当前目录(.)挂载到容器内的 /www 目录。
  • command: 覆盖默认的命令
  • entrypoint: 容器启动时执行的命令,这里是启动 Hyperf 应用。
  • networks: 容器连接的网络,指定为 test-api 网络。
  • test-api: 定义了一个名为 test-api 的自定义网络,使用 bridge 网络驱动。
### Ubuntu系统中安装Docker 为了在Ubuntu上成功安装Docker,需先更新现有的软件包索引。这可以通过运行命令`sudo apt-get update`来完成[^1]。 之后,可以添加官方的GPG密钥和稳定版仓库以便获取最新的版本信息: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` 再次执行`apt-get update`以使新加入的仓库生效。此时应该能够通过APT工具链正常安装Docker CE及其CLI组件了: ```bash sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 验证安装是否正确无误的一个简单方法就是查看当前已激活的服务列表里是否有docker的身影或者直接调用其帮助文档功能确认二进制文件可用性 `docker --help`. 为了让Docker能在每次开机的时候自启, 可以启用该服务: ```bash sudo systemctl enable docker ``` ### 安装 Docker Compose 对于Docker Compose而言,则推荐从GitHub发布页面下载对应平台架构下的最新发行版压缩包[^4]: 前往[Docker Compose Releases](https://github.com/docker/compose/releases),找到适合系统的版本链接(例如针对Linux x86_64体系结构), 下载完成后重命名并赋予可执行权限即可. 具体操作如下所示: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.3/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 最后一步是为了确保路径中的`/usr/local/bin`位于环境变量PATH之中从而可以直接调用`docker-compose`命令;如果不在的话可能需要调整一下这个位置到其他目录比如`/usr/bin`, 或者把新的bin路径加到用户的shell profile里面去. 至此,DockerDocker Compose都已经完成了安装过程,在终端输入相应指令测试两者能否正常使用是非常必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值