Dockerは
Dockerは、開発、配信、アプリケーションの実行のためのオープンプラットフォームです。Dockerを使用すると、アプリケーションをインフラストラクチャから分離することができ、ソフトウェアを迅速に提供することができます。Dockerを使用すると、アプリケーションを管理する方法と同じ方法でインフラストラクチャを管理することができます。Dockerのシッピング、テスト、コードを迅速に展開する方法を活用することで、コードを書いて実行するまでの遅延を大幅に短縮することができます。
最初に、コンピュータに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 : イメージを削除します
コンテナを作成する
docker run -d -p 80:80 docker/getting-started
すべてのコンテナを表示する
docker ps
ここでは、作成した最初の画像を見ることができます。
コンテナの名前はエイリアスのようです。
docker inspect intelligent_murdock
は、次と同じです。
docker inspect id_container
コンテナの名前を変更する
docker rename namecontainer newname
すべてのコンテナを削除する
docker container prune
今、私たちはubuntuを実行してみましょう。
コンピュータでLinuxを実行する
docker run ubuntu
(0)すべてがうまくいったが、シャットダウン状態である、これはLinuxから来ている
Run!
docker run -it ubuntu
今、ここで私たちのubuntuがマウントされ、動作していることが確認できます。
要約:
$ docker run ubuntu
(Ubuntuを起動しますが、シャットダウン状態にします)
$ docker ps -a
(すべてのコンテナのリストを表示します)
$ docker -it ubuntu
(起動し、ubuntuのシェルに入ります)
-i:
対話型
-t:
コンソールを開きます
<h1>cat /etc/lsb-release (Linuxのバージョンを確認します)</h1>
Docker execは、コマンドまたはプロセスを実行することを可能にします。
実行中のすべてのプロセス
あなたは、コンピュータとDocker上のマシン間の通信方法を作成する方法を疑問に思うかもしれません。いくつかのオプションがありますが、最初にbind mounts(最も複雑な方法ですが、本当に理解する価値があります)を見てみましょう。
今、この練習を行いましょう。
Bind mounts (mongodb)
Macとコンテナ間の通信を作成する
mongoイメージを作成する
docker run -d --name db mongo
アクセス
docker exec -it db bash
mongoを実行する
データベースを作成する
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
もう一度データベースを作成し、挿入します。
データベースを作成する
use mydatabase
挿入
db.users.insertOne({“name”:”victor”})
この現在、私たちはこれらのファイルを私たちのパスで見ることができます。
Volumenを使ってデータを共有する
docker run -d --name db --mount src=ddata,dst=/data/db mongo
コンテナとPC間でファイルを共有する方法
今、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
イメージは、レイヤーの組み合わせについて論理的に話す方法です。それはすべてのトップに到達する木のようなものです。 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
docker network create --attachable platzinet
データベースのコンテナを作成する
docker run -d --name db mongo
その後、私たちのネットワークに接続します
docker network connect platzinet db
私たちが見ている場合
「私たちは私たちのコンテナを見ることができます。
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を学ぶ際に役立ったと思ったら、私をフォローしてください。それは私があなたと共有するすべての私のメモを続けるためのモチベーションになります。ありがとうございます。