Dockerのインストールが完了すると、Dockerを使用してイメージとコンテナーを作成する最初の手順をガイドする新しいウィンドウが表示されます。
これは、最初のイメージをダウンロードしてコンテナーとして実行する方法を理解するための興味深い方法です。
このアプリに組み込まれている右側のターミナルでコマンドを実行できますが、私は自分のシェルで実行することを好みます。
macOSターミナルを開き、 cd dev
を実行します 私の家に入るdev
フォルダ、および docker
を作成します すべてのDocker実験をホストするサブディレクトリ。 cd docker
を実行します それに入るために、それから私は走ります
git clone https://github.com/docker/getting-started
このコマンドは、新しい getting-started
を作成しました リポジトリのコンテンツを含むフォルダーhttps://github.com/docker/getting-started:
このフォルダから、コマンド docker build
を実行します。 このように:
docker build -t docker101tutorial .
これにより、現在のフォルダのコンテンツから、タグ名 docker101tutorial
でイメージが構築されます。 。
これはDockerfileです
*# Install the base requirements for the app.*
*# This stage is to support development.*
FROM python:alpine AS base
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
*# Run tests to validate app*
FROM node:12-alpine AS app-base
WORKDIR /app
COPY app/package.json app/yarn.lock ./
RUN yarn install
COPY app/spec ./spec
COPY app/src ./src
RUN yarn test
*# Clear out the node_modules and create the zip*
FROM app-base AS app-zip-creator
RUN rm -rf node_modules && \
apk add zip && \
zip -r /app.zip /app
*# Dev-ready container - actual files will be mounted in*
FROM base AS dev
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
*# Do the actual build of the mkdocs site*
FROM base AS build
COPY . .
RUN mkdocs build
*# Extract the static content from the build*
*# and use a nginx image to serve the content*
FROM nginx:alpine
COPY --from=app-zip-creator /app.zip /usr/share/nginx/html/assets/app.zip
COPY --from=build /app/site /usr/share/nginx/html
ご覧のとおり、1つだけでなく、3つのベースイメージからイメージを作成します: python:alpine
、 node:12-alpine
およびnginx:alpine
。
docker build-tdocker101tutorial。
を実行すると 、最初のベースイメージをダウンロードすることから始まります:
次に、Dockerfileで定義したすべてのコマンドを実行します。
終わりに達するまで続きます:
これで、画像 docker101tutorial
ができました。 このイメージに基づいてコンテナを実行できます。
コマンドdockerrun
を実行します これらの属性を持つ:
docker run -d -p 80:80 --name docker-tutorial docker101tutorial
オプション-d
を使用しています コンテナをバックグラウンドで実行し、コンテナIDを出力します。このフラグを見逃した場合、コンテナが終了するまですぐにシェルに戻ることはありません(ただし、コンテナが長寿命である場合、たとえばNodeアプリなどのサービスを実行している場合、自動的に終了することはありません)。
-p
オプションは、コンテナーのポート80をホストマシンのポート80にマップするために使用されます。コンテナーはポート80でWebサーバーを公開し、コンピューターのポートをコンテナーによって公開されるポートにマップできます。
-名前コード> コンテナに名前を割り当て、最後に画像名(
docker101tutorial
)を取得します )コンテナの作成に使用する必要があります。
コマンドオプションについて疑問がある場合は、 docker
を実行してください。 、この場合、 docker run --help
非常に詳細な説明が表示されます:
このコマンドは非常に高速で、コンテナIDを取得します: