快速掌握Docker并开始使用的Docker入门指南

首先

这篇文章是为了帮助人们快速掌握Docker的使用而撰写的。
详细来说,

    • Dockerについてざっくりと理解して

 

    • 簡単な環境を構築し

 

    作った環境をDocker Hubで共有

我的目标是能够做到。

因此,如果想要更深入和充分理解的朋友们,可以参考以下文章。

    • 【図解】Dockerの全体像を理解する -前編-

 

    • いまさらDockerに入門したので分かりやすくまとめます

 

    Dockerを支える技術

Docker是什么

用汉语我的冰箱里有很多吃的。

    • Linuxカーネルの機能であるコンテナ型仮想化を使用したアプリケーション実行環境を構築するツール

 

    • OS内に「コンテナ」とよばれる隔離された仮想領域を確保

 

    アプリケーションとOSなどの実行環境をまとめてコンテナに閉じ込めて管理

※ 在容器中有Linux容器、Windows容器,但本文针对的是Linux容器。

Docker镜像、容器和注册表相关事项。

以下是有关Docker镜像、容器和注册表的概述。

名称説明Dockerイメージアプリケーションのインストールや各種設定など、アプリケーションが動作するのに必要な情報がすべてまとめられていたもの。DockerコンテナDockerイメージとしてまとめられたアプリケーションが実際に実行状態(プロセスとして動いている状態)となっているもの。DockerレジストリDockerイメージをバージョン管理するシステム。
クラウドサービスとしての Docker Hub や個人レジストリなどがある。

Docker镜像、容器和注册表之间的关系如下所示。

image_container_registry (2).png

使用Docker的好处

我认为有许多好处,但我个人认为有以下三个:
1. 有许多好处,但我个人认为以下三项是重要的。
2. 我认为有很多好处,但是我个人觉得以下三点很重要。
3. 尽管有很多优点,我个人认为以下三点比较重要。

可以方便地尝试中间件产品

如果你想尝试最新的Elasticsearch,只需要两个Docker命令就可以构建它。(稍后会提到)

可以用代码来管理环境构建。

在Docker中,您可以通过编写Dockerfile和docker-compose.yml等文本文件来记录环境设置步骤,并通过引用这些文件来执行Docker命令,从而构建符合设定步骤的环境。

换句话说,通过将环境设置过程编码化(即基础设施即代码),环境设置会变得更加轻松一些。

環境差異不容易發生。

如果已经安装了Docker的服务器,将一次创建的环境打包成Docker镜像并注册到Docker注册表。通过从Docker注册表获取Docker镜像并将其容器化,可以轻松地构建相同的环境。

此外,如果想对已经构建好的环境进行更改(例如升级中间件版本等),不要直接修改环境,而是重新创建一个 Docker 镜像。然后将该 Docker 镜像转化为 Docker 容器,进行运行验证,如果没有问题,再分发到各个环境。

通过采用“不可变基础架构(Immutable Infrastructure)”的方法,在不直接更改环境的情况下,重新创建Docker镜像的步骤可以防止疏忽修复环境的问题。

以中文原生方式演示

现在让我们开始真正进行环境搭建。

事前准备是指事情发生之前所进行的准备工作。

安装Docker

根据官方网站的参考,进行Docker和Docker Compose的安装。
此外,本文假设环境如下。

    • ホストOS:Ubuntu18.04.1

 

    • Docker:18.09.1

 

    Docker Compose:1.23.2

创建一个Docker Hub账户

请使用 Docker Hub 作为 Docker Registry。
请在此页面上创建一个帐户。

最简单的方法

首先,您可以使用最简单的方法来构建Elasticsearch。
只需两个命令:docker image pull和docker container run,就可以进行安装。

# Elastic社公式Dockerイメージを取得
$ docker image pull docker.elastic.co/elasticsearch/elasticsearch:7.0.1

# イメージを確認
$ docker image ls

# コンテナ化
$ docker container run -d --name sample-es01 -p 19200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.0.1

# コンテナ確認
$ docker container ls

# Elasticsearch確認
$ curl localhost:19200

docker image pull イメージ名

docker container run [オプション] 元となるイメージ名

オプション

-d コンテナをバックグラウンドで起動させる
–name コンテナ名を指定
-p ポートフォワーディング
-e 環境変数を設定

使用Dockerfile的方法

如果想要为已获取的 Docker 镜像添加安装或初始设置等操作,您可以在 Dockerfile 中记录这些操作内容,从而实现自动化操作。

demo2 (1).png

这次我将尝试在CentOS7上安装Elasticsearch。
首先,我们要创建以下的Dockerfile。

#ベースはCentOS7
FROM centos:centos7

#必要なソフトウェアをインストール
RUN yum install -y java wget

#ユーザ「elasticsearch」を追加
RUN groupadd -g 1000 elasticsearch && \
    adduser -u 1000 -g 1000 -d /usr/share/elasticsearch elasticsearch

USER elasticsearch
WORKDIR /usr/share/elasticsearch

#Elasticsearch7のダウンロード
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz \
  && tar zxvf elasticsearch-7.0.1-linux-x86_64.tar.gz

#Elasticsearchの初期設定
RUN echo -e $"\n\
network.host: 0.0.0.0\n\
discovery.type: single-node\n\
" >> /usr/share/elasticsearch/elasticsearch-7.0.1/config/elasticsearch.yml

#コンテナ起動時にElasticsearchをフォアグラウンドで起動
CMD ["/usr/share/elasticsearch/elasticsearch-7.0.1/bin/elasticsearch"]
EXPOSE 9200

完成 Dockerfile 后,使用 docker image build 命令构建 Docker 镜像。

# docker iamge build -t イメージ名 Dockerfileの格納ディレクトリ
$ docker image build -t elasticsearch-7.0.1 .

构建完Docker镜像后,我们可以使用与之前相同的方法,使用docker container run命令将其转化为Docker容器。

$ docker container run -d --name sample-es02 -p 29200:9200 sample-es02

通过这个方法,已经成功安装了Elasticsearch。

如果想要升级使用的Elasticsearch版本或者修改Elasticsearch的配置,只需修改Dockerfile并重新创建容器即可。

3)共享Docker镜像

将创建的Docker镜像通过注册到Docker仓库,实现与其他环境的共享。

demo3 (1).png

给Docker镜像打标签

首先,在Docker Hub上注册自己的存储库,需要对要注册的Docker镜像进行操作。

Docker Hub账户/镜像名称[:标签名]

需要以特定的形式進行標籤化。

# 実演2)で作成したイメージ「sample-es02」に対してタグ付け
$ docker image tag sample-es02 shinyashikis/my-elasticsearch7:0.0.1
# イメージ確認
$ docker image ls

注册Docker镜像

标记完成后,登录Docker Hub,使用docker image push命令将Docker镜像注册。

# Docker Hubにログイン
$ docker login -u shinyashikis -p xxxxxxxxxxxxxx
# タグ付けしたイメージをDokcer Hubに登録
$ docker image push shinyashikis/my-elasticsearch7:0.0.1

通过使用 docker image pull 命令或在 Dockerfile 的 FROM 语句中指定,您可以获取注册的图像。

$ docker image pull shinyashikis/my-elasticsearch7:0.0.1
FROM shinyashikis/my-elasticsearch7:0.0.1

使用Docker Compose的方法

我们之前一直以创建一个容器为例,那么如果涉及到多个容器呢?
在多个容器的情况下,我们需要考虑容器之间的通信和容器的启动顺序等。
在这种情况下,使用多容器管理工具Docker Compose将更加容易管理。

demo4.png

这次我将尝试构建一个简单的应用程序,用于通过浏览器访问spring-boot容器,并显示Elasticsearch的信息。

demo4-01.png

那么,首先我们将按照以下的目录结构来配置所需的资料。

$ tree
.
├── docker-compose.yml                #コンテナの構成を管理するファイル
└── my-spring-boot                                   
    ├── Dockerfile                    #spring-boot用Dockerfile
    └── sample-es-0.0.1-SNAPSHOT.jar  #spring-bootアプリ
#ベースはJDK8イメージ
FROM openjdk:8-jdk-alpine

#アプリをjava-app.jarとしてデプロイ
COPY ./sample-es-0.0.1-SNAPSHOT.jar java-app.jar

#アプリ実行
CMD ["java","-jar","/java-app.jar"]
version: "3"
services:
  my-spring-boot:
    build: my-spring-boot/       #spring-boot用Dockerfileの格納先を指定
    image: sample-sb04           #イメージ名
    container_name: sample-sb04  #コンテナ名
    ports:
      - 48080:8080
    links:
      - my-elasticsearch         #Elasticserchコンテナへ通信する際のエイリアス
  my-elasticsearch:
    image: shinyashikis/my-elasticsearch7:0.0.1    #実演3)で作成したイメージを指定
    container_name: sample-es04                   #コンテナ名
    ports:
      - 49200:9200

配置了所需的资源,例如docker-compose.yml文件后,只需运行docker-compose up命令就可以进行构建和启动容器。

$ ls
docker-compose.yml my-spring-boot

#ビルド実行
$ docker-compose up -d

#コンテナ確認
$ docker-compose ps

#ブラウザで確認
http://localhost:48080/myEsInfo

如果浏览器中显示类似于Elasticsearch的信息,那就可以了.

Elasticsearchの情報
nodeName: 1497813f0e6f
clusterName: Cluster [elasticsearch]

最后

虽然时间紧迫,但我们已经成功构建了一个简单的环境,并且可以在其他服务器上进行共享。
实际上,在某些情况下并不容易像这个例子一样简单,需要考虑数据持久化和在容器启动时执行复杂的处理,例如执行 shell 脚本。

如果是这种情况,我建议您参考前面提到的网站、官方网站或书籍等。

此外,使用在示範中的材料將被儲存於以下位置。

    • 実演 2)Dockerfileを使用したやりかた

https://github.com/shinyashikis/docker-sample02

実演 4)Docker Composeを使用したやりかた

https://github.com/shinyashikis/docker-sample04

参考书籍

    • Docker実践入門――Linuxコンテナ技術の基礎から応用まで

 

    Docker/Kubernetes 実践コンテナ開発入門
广告
将在 10 秒后关闭
bannerAds