技術共有

Docker の概要

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

環境を準備します。

  • ヴイエムウェア17
  • Ubuntu18.04(LTS):https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1.Docker プレビュー


Docker 関連のドキュメント:

  • docker公式サイトアドレス:https://www.docker.com/
  • docker ドキュメントのアドレス: https://docs.docker.com/
  • docker イメージ ウェアハウス: https://hub.docker.com/

ハッピードッカー

1. docker とは: コンテナを簡単に管理できるオープンソースのコンテナ エンジンであり、コンテナはサンドボックス機構を使用して互いに分離されています。

2. docker はどのような問題を解決しますか: ソフトウェア環境の移行の問題を解決します。

3. コンテナと仮想マシンの違い:

  • コンテナ: アプリケーションの抽象化 (コードと依存関係を一緒にパッケージ化) であり、使用するリソースが少なく、起動が速く、軽量で柔軟です。
  • 仮想マシン: 物理ハードウェアを抽象化したものです (1 つのサーバーを複数のサーバーに変換します)。多くのリソースを消費し、大きくて強力です。

画像-20240706011000322

4.ドッカーストレージ:

  • マウント ディレクトリの例: -v /宿主机目录:容器目录
  • データ ボリューム マッピングの例:数据卷:容器目录

5. Docker ネットワーク: 安定したドメイン名としてホスト名アクセスを実現するカスタム ネットワークを作成します。 (同じネットワーク上のコンテナが相互に通信できるようにします)

#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 
-v /app/rd1:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet --name redis01 
bitnami/redis

#从节点
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=slave 
-e REDIS_MASTER_HOST=redis01 
-e REDIS_MASTER_PORT_NUMBER=6379 
-e REDIS_MASTER_PASSWORD=123456 
-e REDIS_PASSWORD=123456 
--network mynet --name redis02 
bitnami/redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2.Dockerをインストールする


この記事は Ubuntu 環境のインストールに基づいています。権限がない場合は、先頭に sudo を追加してください。

1. ファイアウォールをオフにします (その後の外部アクセスのために手動でポートを公開する必要がなく、テストに便利です)

sudo ufw disable

#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable
  • 1
  • 2
  • 3
  • 4
  • 5

2.ドッカーをインストールする

#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc

#更新软件包
sudo apt-get update

#安装一些工具
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg-agent 
    software-properties-common

#安装docker
sudo apt install docker.io 

#验证dokcer是否安装成功
docker --version

#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now

#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3. 一般的な Docker コマンド


画像-20240706032721566

1. Dockerサービスの状態管理:

  • systemctl status docker: docker の実行ステータスを表示します。
  • systemctl ドッカーを停止: ドッカーを閉じる
  • systemctl start docker: start docker
  • systemcl ドッカーを再起動します: ドッカーを再起動します
  • systemctl enable docker: 起動時に docker が自動的に起動するように設定します。

2. Docker イメージの管理:

  • 検索イメージ: docker 検索イメージ名
  • イメージのプル: docker pull イメージ名: tag タグが指定されていない場合は、最新のものがプルされます
  • 画像の表示: ドッカー画像
  • イメージの削除: docker rmi イメージ名: タグ

3. Docker コンテナ管理:

  • コンテナーを作成します: docker run -di --name=コンテナー名 イメージ名: タグ
  • コンテナを閉じます: docker stop コンテナ名
  • コンテナを開始します: docker start コンテナ名
  • コンテナーの削除: docker rm コンテナー名
  • コンテナを表示します。
    • docker ps -a 実行されていないコンテナを含むすべてのコンテナを表示します
    • docker ps で実行中のコンテナを表示します
  • コンテナーを入力します: docker exec -it コンテナー名/bin/bash

4. Docker データ量:

  • データ量:dockerで管理されるフォルダーです。

  • データ ボリュームの使用: データ ボリュームをコンテナ内のパスにバインドして、コンテナとホスト間のファイルの双方向自動転送を実現できます。

    ファイルをホストのデータ ボリュームに配置します。docker はファイルをコンテナーに自動的に同期します。

    コンテナー内のファイルが変更された場合、docker はそれらのファイルをホストのデータ ボリュームに自動的に同期します。

  • データボリューム操作コマンド:

    データ ボリュームのリスト: docker volume ls

    データ ボリュームを作成します: docker volume create data volume name

    データ ボリュームの詳細の表示 (実際のパス): docker volume Inspection データ ボリューム名

    データ ボリュームの削除: docker volume rm データ ボリューム名

  • コンテナーを作成し、データ ボリュームをバインドします。

    docker run -di --name=コンテナ名 -v データボリューム名: コンテナイメージ内のパス名: タグ

    docker run -di --name=コンテナ名 -v ホスト内のパス: コンテナイメージ内のパス名: タグ

    注: -v パラメータのすべてのパスは絶対パスである必要があります。

5. ミラーバックアップ:

  • イメージのエクスポート: docker save -o ファイル名 イメージ名
  • イメージをロードします: dockerload -i xxx.tar

4. Dockerファイル


ドキュメント: https://docs.docker.com/reference/dockerfile/

Dockerfile ロール: カスタム イメージを作成します。

Dockerfile は基本イメージに基づいて一連の Docker 命令を記述し、これらの命令を層ごとに構築して、最終的にターゲット イメージを構築します。

共通の指示効果
からイメージベース環境の指定
走るカスタムコマンドを実行する
CMDFコンテナ起動コマンドまたはパラメータ
ラベルカスタムラベル
さらす公開ポートを指定する
環境環境変数
追加画像にファイルを追加する
コピーファイルをイメージにコピーする
エントリーポイントコンテナ固定起動コマンド
音量データ量
ユーザーユーザーとユーザーグループを指定する
ワークディレクトリデフォルトの作業ディレクトリを指定する
ARGBビルドパラメータを指定する

例:

#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar   #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]  #运行命令

# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. サービスオーケストレーション


サービス オーケストレーションまたはコンテナ オーケストレーション: 特定のビジネス ルールに従ってコンテナをバッチで管理します。

Docker Compose は、複数の Docker コンテナーを定義して実行するためのオーケストレーション ツールです。

1 つのコマンドで複数のコンテナを起動できます。これは主に、コンテナを管理および調整する方法の問題を解決します。

Docker Compose を使用するには、次の 3 つの手順があります。

  1. Dockerfile を使用して実行環境を定義します (すでにミラーがある場合は、この手順を省略できます)
  2. 使用docker-compose.ymlアプリケーションを構成するサービスを定義する
  3. 走るdocker-compose up -dアプリケーションを開始する

docker-compose をインストールします。

# 下载docker compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置权限
chmod +x /usr/local/bin/docker-compose

# 查看版本 
docker-compose -version
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

docker-compose をアンインストールする場合は、次のコマンドを実行できます。

# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
  • 1
  • 2

docker-compose の一般的なコマンド:

# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!

#创建容器并后台启动
docker-compose up -d

#直接启动容器
docker-compose start

#其它命令:
docker-compose help # 查看帮助
docker-compose stop  # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

例:

1. docker-compose ディレクトリを作成する

mkdir ~/docker-compose
cd ~/docker-compose
  • 1
  • 2

2. 書くdocker-compose.yaml書類

version: "3.0"
services:
  redis:
    container_name: redis 
    image: redis:5.0
    ports:
      - 6379:6379
  nginx:
    container_name: nginx
    image: nginx:1.14.2
    ports:
      - 80:80
    volumes:
      - /root/volumes/nginx/html:/usr/share/nginx/html
  tomcat:
    container_name: tomcat
    image: tomcat:8.5.88
    ports:
      - 8080:8080
    volumes:
      - /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3.スタート

# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose

# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5