1
1

More than 1 year has passed since last update.

Dockerとその最も使用されるコマンド

Last updated at Posted at 2023-01-24

Dockerは

Dockerは、開発、配信、アプリケーションの実行のためのオープンプラットフォームです。Dockerを使用すると、アプリケーションをインフラストラクチャから分離することができ、ソフトウェアを迅速に提供することができます。Dockerを使用すると、アプリケーションを管理する方法と同じ方法でインフラストラクチャを管理することができます。Dockerのシッピング、テスト、コードを迅速に展開する方法を活用することで、コードを書いて実行するまでの遅延を大幅に短縮することができます。:whale:

image.png

最初に、コンピュータにDockerをインストールする必要があります。これらのコマンドはWindowsまたはMacで動作します(私はMacから作業しますが、Windowsでも実行できます)。

ここに最も使用されるコマンド:

docker run : コンテナを起動します
docker start : 起動しているコンテナを再開します
docker stop : コンテナを停止します
docker ps : 現在実行中のコンテナの一覧を表示します
docker pull : イメージをダウンロードします
docker push : イメージをリポジトリにアップロードします
docker build : イメージをビルドします
docker logs : コンテナのログを表示します
docker rm : コンテナを削除します
docker rmi : イメージを削除します

Pasted Graphic 2.png

コンテナを作成する

docker run -d -p 80:80 docker/getting-started

すべてのコンテナを表示する

docker ps
Pasted Graphic 1.png
ここでは、作成した最初の画像を見ることができます。

コンテナの名前はエイリアスのようです。

docker inspect intelligent_murdock

は、次と同じです。

docker inspect id_container

コンテナの名前を変更する

docker rename namecontainer newname

すべてのコンテナを削除する

docker container prune

今、私たちはubuntuを実行してみましょう。

コンピュータでLinuxを実行する

docker run ubuntu

(0)すべてがうまくいったが、シャットダウン状態である、これはLinuxから来ている

Pasted Graphic 3.png

Run!
docker run -it ubuntu

Pasted Graphic 4.png

今、ここで私たちのubuntuがマウントされ、動作していることが確認できます。

要約:
$ docker run ubuntu (Ubuntuを起動しますが、シャットダウン状態にします)
$ docker ps -a (すべてのコンテナのリストを表示します)
$ docker -it ubuntu (起動し、ubuntuのシェルに入ります)
-i: 対話型
-t: コンソールを開きます
<h1>cat /etc/lsb-release (Linuxのバージョンを確認します)</h1>

Docker execは、コマンドまたはプロセスを実行することを可能にします。
実行中のすべてのプロセス

Pasted Graphic 5.png

あなたは、コンピュータとDocker上のマシン間の通信方法を作成する方法を疑問に思うかもしれません。いくつかのオプションがありますが、最初にbind mounts(最も複雑な方法ですが、本当に理解する価値があります)を見てみましょう。

今、この練習を行いましょう。

Bind mounts (mongodb)

Macとコンテナ間の通信を作成する

mongoイメージを作成する

docker run -d --name db mongo

アクセス
docker exec -it db bash

mongoを実行する

mongosh
Pasted Graphic 6.png

データベースを作成する
use mydatabase

挿入
db.users.insertOne({“name”:”victor”})

照会
db.user.find()

[ { _id: ObjectId("6375bdb5d7e119f6857c5361"), nombre: 'victor' } ]

しかし、データをコンピュータに保存するにはどうすればよいでしょうか?この現在、データはコンテナ内にありますが、コンピュータにこのデータが必要です。bind mountsを使用することができます。

まず、空のフォルダをコンピュータに作成します。このフォルダは、情報を共有および取得するために重要です。

mkdir mongodata

そして、私たちはイメージを作成することができます

victormanuellagunas@Victors-MBP-2 mongodata % docker run -d --name db -v /Users/victormanuellagunas/Documents/dockertest/mongodata:/data/db mongo

パスの名前を指定し、私の場合は/Users/victormanuellagunas/Documents/dockertest/mongodataです。
そして、mongoイメージからコンテナを作成します。

アクセス
docker exec -it db bash

Pasted Graphic 7.png

もう一度データベースを作成し、挿入します。

データベースを作成する
use mydatabase

挿入
db.users.insertOne({“name”:”victor”})

この現在、私たちはこれらのファイルを私たちのパスで見ることができます。

Pasted Graphic 8.png

Volumenを使ってデータを共有する

docker run -d --name db --mount src=ddata,dst=/data/db mongo

Pasted Graphic 9.png
Pasted Graphic 10.png
Pasted Graphic 11.png

コンテナとPC間でファイルを共有する方法

Something went wrong

今、Docker Hubで作業しましょう。
Docker Hubは、IT業界で最も大きなコンテナイメージのリポジトリで、プラットフォームの最大数の公式イメージを保存しています。

コマンド:


$ docker image ls (ローカルにあるイメージを確認します)
$ docker pull ubuntu:20.04 (特定のバージョンのubuntuイメージをダウンロードします)
$ docker image rm -f {id_image}

mkdir imagenes
cd imagenes
touch Dockerfile
code .

Dockerfileを生成します

すべてのDockerfileは何かに基づいています

FROM ubuntu:latest

ビルド時に実行されます

RUN touch /usr/src/hola-platzi.txt

Dockerfileを実行します


-t de tail (name:version) (buildアクセスパス)
docker build -t ubuntu:platzi .

Dockerは、現在のディレクトリをビルドのコンセプトとして、ubuntu:platziという名前のイメージを構築します。この現在のディレクトリにはDockerfileがあるので、Dockerはそのファイルを使用します。
1.イメージを確認する
docker image ls

image.png

イメージは、レイヤーの組み合わせについて論理的に話す方法です。それはすべてのトップに到達する木のようなものです。 gitのイメージ/バージョンのように機能します。
1.作成したイメージから新しいコンテナを実行する
docker run -it ubuntu:platzi
1.私たちのイメージをDocker Hubに公開する


login from ubuntu: https://stackoverflow.com/questions/50151833/cannot-login-to-docker-account
docker image ls
docker tag ubuntu:platzi duarteru/ubuntu:platzi
docker push duarteru/ubuntu:platzi

イメージにタグを再度追加すると何が起こるか?

イメージは別のものが作られず、タグだけが作られ、それは単にレイヤーを指す名前です。

nodeを使用してプロジェクトからイメージを作成する方法

$ git clone https://github.com/platzi/docker
$ docker build -t platziapp . (local imageを作成)
$ docker image ls (local imagesをリスト)
$ docker run --rm -p 3000:3000 -v pathlocal/index.js:pathcontenedor/index.js platziapp (コンテナを実行し、index.jsファイルをマウントして、Dockerfileで宣言されているnodemonによって動的に更新されるようにします)

Dockerネットワーク

docker network ls

Pasted Graphic 12.png
docker network create --attachable platzinet

データベースのコンテナを作成する
docker run -d --name db mongo

その後、私たちのネットワークに接続します
docker network connect platzinet db
私たちが見ている場合

Pasted Graphic 13.png

「私たちは私たちのコンテナを見ることができます。
Docker run -d —name app -p 3000:3000 —env MONGO_URL=mongodb://db:27017/test platziapp」

1 Dockerネットワークを確認する
docker network ls
2 コンテナを接続するためのネットワークを作成する

  • 他のコンテナが必要に応じて接続できるようにattachableを設定する
    docker network create --attachable platzinet

1 ネットワークの詳細を確認する
docker network inspect platzinet
2 Mongoコンテナを作成する
docker run -d --name db mongo
3 新しいコンテナをネットワークに接続する
docker network connect platzinet db
4 ネットワークに接続されたアプリケーションを実行する

docker run -d --name app -p 3000:3000 --env MONGO_URL=mongodb://db:27017/test platziapp

5 Dockerは、コンテナの名前を使用して、ネットワーク内でそれを識別することができます。
アプリをネットワークに接続する
docker network connect platzinet app

Docker Compose

#サービスを構築する
$ docker-compose down
#サービスを立ち上げる
$ docker-compose up
#サービスをデタッチモードで立ち上げる
$ docker-compose up -d
#サービスを停止する
$ docker-compose down

Docker Compose overrideは、Docker Composeが含むすべてを公開します。それはDockerの親のようです。実際には、docker composeを使用すると、dockerで生成したすべての画像を一緒に組み合わせ、手動で設定する必要があるすべての設定を避けることができます。すべてを一つのコマンドで生成することができます。docker composeの支援によって

Dockerの情報をすべて削除する方法
ネットワーク
イメージ
ボリューム
コンテナ
キャッシュ

すべてを削除する

sudo docker rm -vf $(sudo docker ps -a -q)
sudo docker rmi -f $(sudo docker images -a -q)
sudo docker system prune -f
sudo docker volume prune -f

これは、Dockerを学習したときに使用した私のメモの一部です。日本語に翻訳するためにGoogle Translateを活用し、日本語にも少しの知識を持っていたので助けました。日本語の点で修正してもらえると非常に感謝します。Dockerを学ぶ際に役立ったと思ったら、私をフォローしてください。それは私があなたと共有するすべての私のメモを続けるためのモチベーションになります。ありがとうございます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1