为繁忙人士设计的Docker和Docker compose

首先

docker周りの説明はぐちゃぐちゃしていて分かりにくいので、最低限の概念とインストール、動作確認だけまとめました。

解释术语

用語が色々多いので先にまとめておきます。

Docker引擎
用于使用Docker的常驻程序。

图像像是一个容器的设计图。从图像中可以创建一个容器。

标签
图像的版本

コンテナ
アプリケーションの実行環境

Docker仓库

Docker网络
容器之间的通信方式

Nginx(エンジンエックス)
ウェブサーバー用ソフトウェア

守护进程(daemon)是在后台运行的进程。

Docker Machine是一种通过命令操作虚拟机的工具。

docker-ce 是 Docker 的社区版,是一个免费版本的 Docker。


容器化技术Docker的概念

在介绍具体命令和代码之前,首先总结一下Docker的概念。

Docker 是什么?

在传统的虚拟化中,使用虚拟化软件(称为超级监控程序)来启动虚拟机(称为客户操作系统),并在其中进行中间件的构建和程序的执行。

Docker通过docker引擎创建运行环境,其中包含称为容器的中间件,实现容器虚拟化。然后可以在容器内运行应用程序。

在容器虚拟化中,通过与他人共享容器,可以轻松地准备相同的执行环境。简言之,与传统方法不同,可以方便地复制相同的环境,这非常方便。

Docker中的数据管理

当处理容器内的动态数据时,如果容器关闭,数据将会丢失。为了解决这个问题,我们可以在主机上管理数据,并挂载到容器上。

Docker 网络

ウェブアプリケーションを作成する場合、ウェブサーバーとAPIサーバーとDBサーバーを立てるような例も少なくないと思います。当然これらのサーバーは通信しなければならないので、コンテナでこれらのサーバーを立てている場合はコンテナ間で通信する必要があります。その仕組みがDockerネットワークです。Docker networkではデフォルトで存在する3つのネットワークと独自ネットワークが存在します。

桥接网络是指能够通过指定IP地址与同一网络中的容器进行通信的网络。由于没有定义DNS,所以无法通过容器名称进行通信。它是在创建容器时默认连接的网络。

Host network
説明が難しいのですが、、Host networkに接続したコンテナでnginxを実行した場合、ホストマシンのIP80番ポートに接続すれば良いことになります。これに関しては手で動かして覚えた方が早いと思います

没有网络接口意味着没有网络连接。

Docker Compose是一种工具,用于预先定义和运行多个容器的Docker应用程序。

独自ネットワーク
独自のネットワークを作成し、コンテナ名で通信が可能になります。Docker Daemonの組み込みDNSのおかげで名前解決してくれているようです。

Docker Compose 原生的中文翻译是 “Docker 组合”。

これまで見てきたように、コンテナの起動は多くの設定が必要であり、1つ1つ実行していたら冗長です。それらを自動化するのがDocker Composeです。

ウェブアプリケーションの実行環境をDockerで構築する場合、複数のサーバーの定義をdocker-compose.ymlに記述しておくことで、複数コンテナをまとめて起動できます。

Docker 机器

可以使用命令来管理搭载Docker Engine的虚拟机的工具。

安装

dockerとdocker-composeのインストールを行っていきます。環境はUbuntu20.04LTSで行うので、macユーザーの方は適宜読み替えてください。また、GUIではなくCUIのインストールです。既にインストール済みの方は次の章まで飛ばしてください。

まずはdockerのインストールから行っていきます。単純にパッケージマネージャでインストールすることも可能ですが、最新版ではないのでこちらのサイト[4]を参考にやっていきたいと思います。

更新软件包列表

sudo apt update
sudo apt upgrade

安装用于通过HTTPS使用包的包

sudo apt 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 focal stable"

更新套餐数据

sudo apt update

确认您正在从Docker仓库安装软件。

apt-cache policy docker-ce

安装。

sudo apt install docker-ce

确认守护程序启动并且进程能够在启动时启动。

sudo systemctl status docker

在某些情况下,为了在不使用sudo的情况下执行docker命令进行配置。系统会要求输入密码,因此请进行输入。

sudo usermod -aG docker ${USER}
su - ${USER}
id -nG

确认Docker的版本。截至2021年11月15日的最新版本是20.20.10 [5],我确认已安装了最新版本。

docker -v

次にdocker-composeのインストール。このサイト[7]を参考に進めていく。まずはこちらのサイト[8]で最新バージョンを確認する。そのバージョンを指定してcurlコマンドでインストール。ローカルにインストールして実行権限の付与。MACの人とかはインストールするものが違うので公式ページで適切なものをインストールしてください。

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.1.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

确认版本并检查最新版本如果可以的话就可以了。截至2021年11月15日,最新版本是2.1.1。docker-compose的功能似乎作为docker的CLI插件进行了整合,从2.0版本开始,指的是那个插件。在命令上,似乎已经改为了docker compose。可能也包括对M1MAC的支持。

docker compose -v

docker和docker compose的安装已经完成。

确认动作

首先,我们将在Docker单独执行Hello, world。我们将参考这个网站[9]。让我们尝试运行hello-world容器。

docker run hello-world

运行命令是使用镜像来执行容器的命令。由于没有本地存在的镜像,它会自动从Docker Hub获取镜像。如果没有指定标签来执行命令,则会自动选择latest标签。

下一步我们将对图像进行确认。

docker images

你应该能够看到”Hello World”的图像。

我們將確認是否有正在運行的容器。

docker ps -a

a将显示包括停止的容器在内的所有内容。由于hello-world容器在输出消息后会停止,所以它已经不再运行了。

我们在这里结束了Docker的hello,world。接下来,我们将进行Docker Compose的启动确认。我们将参考[10]网站的内容进行操作。

创建并切换到工作目录。

mkdir hello-world && cd $_

根据[10]的作者KENIOS先生创建的docker-compose.yml文件进行安装和执行。

curl -O https://keinos.github.io/hello-docker-compose/docker-compose.yml
docker compose up

只要没有错误并成功退出即可。内容只是使用了之前的 hello-world 图像,但由于启动确认是目的,所以这已经足够了。

以上是Docker和Docker Compose的操作确认的结束。

最后

你应该已经理解了有关docker的概念,已经成功安装和确认了docker和docker-compose的运行。现在只需搜索你想要的环境,并在查找命令的同时进行构建。请继续努力。接下来,我将尝试构建laravel的docker环境。

文献参考

[1]:【图解】理解 Docker 的整体概览-前篇-
[2]:【图解】理解 Docker 的整体概览-中篇-
[3]:【图解】理解 Docker 的整体概览-后篇-
[4]:在 Ubuntu 20.04 上安装和使用 Docker 的方法
[5]:Docker 版本信息
[6]:Docker Compose 发布说明
[7]:Compose V2
[8]:docker-compose 的 GitHub 发布版本
[9]:Docker 入门 ~Hello World~
[10]:最简单的 docker-compose.yml 的 hello-world

广告
将在 10 秒后关闭
bannerAds