Linux に Docker および Docker Compose をインストールして、アプリケーションをポータブルなコンテナにパッケージ化します。
Docker のインストール
Alibaba Cloud Linux 4
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker をインストールします。
-
推奨:
# Moby ランタイムをインストール sudo yum install -y moby -
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker CE パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # CentOS 9 または CentOS 10 など、インストールする CentOS バージョンを選択し、$releasever を対応するバージョン番号に置き換える必要があります。 # CentOS 9 を使用する場合は、次のコマンドを実行します: sudo sed -i 's|$releasever|9|' /etc/yum.repos.d/docker-ce.repo # CentOS 10 を使用する場合は、次のコマンドを実行します: sudo sed -i 's|$releasever|10|' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 注: Alibaba Cloud Linux 4 が提供するネイティブの Moby コンポーネントに戻すには、まず docker-ce コンポーネントを削除し、CentOS リポジトリを無効にします。 sudo yum remove -y docker-ce docker-ce-cli sudo rm -rf /etc/yum.repos.d/docker-ce.repo
-
-
Docker を起動し、起動時の自動起動を有効にします。
# サービスを起動し、起動時に自動的に開始されるように設定 sudo systemctl start docker sudo systemctl enable docker # インストールを確認 docker --version # インストールされたバージョンが表示されます
-
Moby はデフォルトのコンテナランタイムであり、引き続きアップデートが提供されます。
-
旧バージョンの Docker コンポーネントは前方互換性のために引き続き使用できますが、アップデートは提供されません。
Alibaba Cloud Linux 3
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Alibaba Cloud Linux 3 用の dnf リポジトリ互換性プラグインをインストール sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Ubuntu
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# パッケージ管理ツールを更新 sudo apt-get update # Docker パッケージリポジトリを追加 sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Debian
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# パッケージ管理ツールを更新 sudo apt-get update # Docker パッケージリポジトリを追加 sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian $(lsb_release -cs) stable" # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Red Hat
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/rhel/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Fedora
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/fedora/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Anolis OS
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Alibaba Cloud Linux 2
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Alibaba Cloud Linux 2 用の yum リポジトリ互換性プラグインをインストール sudo yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
CentOS 7.x
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
CentOS 8.x
Docker をインストールする前に、競合を防ぐため、既存のすべての Docker コンポーネントをアンインストールしてください。
-
Docker Community Edition をインストールします。
Alibaba Cloud サーバーを使用していない場合は、
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えてください。# Docker パッケージリポジトリを追加 sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # Docker Community Edition、containerd.io コンテナランタイム、Docker Buildx および Compose プラグインをインストール sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
Docker を起動し、起動時の自動起動を有効にします。
# Docker を起動 sudo systemctl start docker # Docker デーモンがシステム起動時に自動的に起動するように設定 sudo systemctl enable docker
Web アプリケーションのデプロイ
-
イメージをビルドします。
# 最新の Nginx イメージをプル sudo docker pull nginx:latest # Nginx をベースイメージとして設定し、Web サーバーのルートディレクトリに「Hello World!」を表示する index.html ファイルを作成する Dockerfile を作成します。 sudo tee Dockerfile <<-'EOF' FROM nginx:latest RUN echo 'Hello World!' > /usr/share/nginx/html/index.html EOF # イメージをビルドし、hello-world という名前を付けます sudo docker build . -t hello-world:latest -
イメージから
hello-worldという名前のコンテナーを起動します。sudo docker run -d -p 80:80 --name hello-world hello-world:latest -
curl http://localhostを実行してデプロイを検証します。出力にHello World!が表示されます。
Docker Compose のインストール
Docker Compose を使用すると、単一の YAML ファイルからマルチサービスアプリケーションを定義および管理できます。
Alibaba Cloud Linux、CentOS、Red Hat、Anolis、Fedora
sudo yum -y install docker-compose-plugin
Ubuntu、Debian
sudo apt-get -y install docker-compose-plugin
アプリケーションのデプロイ
-
docker-compose.yamlファイルを作成します。# オーケストレーションファイルを作成し、MySQL および WordPress サービスを追加 sudo tee docker-compose.yaml <<-'EOF' version: '3.1' services: wordpress: image: wordpress restart: always ports: - "80:80" environment: # データベースホストアドレス WORDPRESS_DB_HOST: wordpress_db # データベースユーザー名 WORDPRESS_DB_USER: wordpress # データベースパスワード WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD} # データベース名 WORDPRESS_DB_NAME: wordpress volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always container_name: wordpress_db environment: # データベース名 MYSQL_DATABASE: wordpress # データベースユーザー名 MYSQL_USER: wordpress # データベースパスワード MYSQL_PASSWORD: ${WORDPRESS_DB_PASSWORD} # データベース root ユーザーパスワード MYSQL_RANDOM_ROOT_PASSWORD: ${WORDPRESS_DB_PASSWORD} volumes: - db:/var/lib/mysql volumes: wordpress: db: EOF -
WordPress を起動し、
<database_password>をご自身の MySQL パスワードに置き換えてください。Docker Compose V2 は、ハイフンの代わりにスペースを使用し、たとえば
docker compose versionのように記述します。# サービスコンテナを起動します。 sudo env "PATH=$PATH" "WORDPRESS_DB_PASSWORD=<database_password>" docker compose -f docker-compose.yaml up -d -
ブラウザで
http://<お使いの ECS インスタンスのパブリック IP アドレス>を開き、WordPress にアクセスします。お使いの セキュリティグループ が、ポート
80へのインバウンドトラフィックを許可していることを確認してください。
よくある質問
非 root ユーザーとして Docker を実行するには?
デフォルトでは、Docker コマンドには root 権限 (sudo 経由) が必要です。コマンドごとに sudo を使用するのを避けるには、ユーザーを docker グループに追加します。
-
ユーザーを
dockerグループに追加します。sudo usermod -aG docker $USER -
newgrp dockerを実行して変更を適用します。 これで、sudoなしでdockerコマンドを使用できます。 変更を永続化するには、ログアウトして再度ログインします。
http://mirrors.cloud.aliyuncs.com にアクセスできないのはなぜですか?
-
現象:
http://mirrors.cloud.aliyuncs.comにアクセスできません。 -
原因: ネットワークの不安定性。
-
解決策:
http://mirrors.cloud.aliyuncs.comをhttps://mirrors.aliyun.comに置き換えます。https://mirrors.aliyun.comを使用するには、パブリック IP アドレスが必要です。 詳細については、「インターネットアクセスを有効にする」をご参照ください。
dnf config-manager コマンドが失敗するのはなぜですか?
-
現象:
dnf config-managerを実行すると、非推奨の警告が表示されます:/usr/lib/python3/dist-packages/dnf/const.py:22: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives. -
原因: dnf バージョンが古い。
-
解決策:
dnfはsudo dnf update dnfを実行して更新し、その後 Docker のインストールを再試行します。
dnf install docker-ce コマンドが失敗するのはなぜですか?
-
現象:
dnf -y install docker-ceを実行すると、ダウンロードエラーで失敗します:(8-9/12): docker-ce-24.0.7-1.el8.x86_64.rpm 38% [================- ] 8.2 MB/s | 38 MB 00:07 ETA The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'dnf clean packages'. Error: Error downloading packages: containerd.io-1.6.26-3.1.el8.x86_64: Cannot download, all mirrors were already tried without success. -
原因: パッケージキャッシュが古い。
-
解決策:
sudo dnf clean packagesを実行し、dockerのインストールを再試行します。 -
現象:
dnf -y install docker-ceを実行すると、メタデータのダウンロードエラーで失敗します:CentOS- Base 0.0 B/s | 0 B 00:30 Errors during downloading metadata for repository 'base': - Curl error (6): Couldn't resolve host name for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirror.aliyuncs.com] - Curl error (28): Timeout was reached for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Connection timed out after 30000 milliseconds] - Curl error (6): Couldn't resolve host name for http://mirror.centos.org/os/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirror.cloud.aliyuncs.com] Error: Failed to download metadata for repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried -
原因:
CentOS 8リポジトリの提供終了。 -
解決策: 提供が終了した
CentOS 8リポジトリを Alibaba Cloud ミラーに置き換えます。# 期限切れのソフトウェアソースをバックアップ sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # Alibaba Cloud が提供する CentOS-Base.repo を /etc/yum.repos.d/ にダウンロード wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo # Alibaba Cloud ソース内のソフトウェアソースアドレスを ECS がアクセス可能なアドレスに置き換え sudo sed -i 's/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/CentOS-Base.repo && sudo sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/CentOS-Base.repo && sudo sed -i 's/url_tmp/mirrors.aliyun.com/g' /etc/yum.repos.d/CentOS-Base.repo # 古いキャッシュをクリアし、新しいキャッシュを生成 sudo yum clean all && sudo yum makecacheその後、
dockerのインストールを再試行してください。
関連ドキュメント
-
Docker 公式ドキュメントをご参照ください。
-
Alibaba Cloud Artifact Center では、Alibaba Cloud および OpenAnolis コミュニティから提供される、無料で安全なベースコンテナイメージを提供しています。
-
エンタープライズ P2P 高速化機能を使用して、イメージのプルを高速化します。
-
Docker コンテナ内で Cloud Assistant CLI を実行して、Alibaba Cloud リソースを管理します。