【Docker】开始使用Docker
目标
因为在工作场所陷入了“Docker是什么好吃的?”这种状况,所以我决定从基础开始调查并尝试使用它。
究竟docker是什麼?
Docker是一种容器虚拟化服务。嗯,不懂。
大致来说,它是一种可以在自己的计算机内部模拟运行另一台计算机的优势工具。过去,每台电脑只能运行一台服务器,如果想使用其他服务器,就需要准备另一台设备。例如,假设有一个每月只运行一次的批处理任务,在它每月只有一次运行的时候,仍需要准备一台全天候运行的服务器专门用于批处理。
当出现了Docker时,人们就不再需要为了场所、管理和成本而困扰了。通过虚拟化处理,我们无需特意准备多个主机,只需一台主机即可处理多个服务器。这些24小时运行的服务器现在可以像“只要从外部传输一个触发器,它们就会运行”一样工作了。通过设置一台服务器,我们可以在上面进行环境配置,然后通过安装并使用该服务器,开发人员可以统一最低限度的开发环境。
用docker有以下几点益处:
1. 通过共享被编码的文件,任何人任何地方都可以创建相同的环境。
2. 方便分发已创建的环境。
3. 不需要全天候运行,可以在任何时间点启动。
对术语进行解释
经常出现的与Docker相关的术语。如果不了解这些术语,就无法进行有效的对话。
Docker镜像是包含了启动容器所需的配置和命令的模板。
容器是基于Docker映像创建的虚拟环境,用于运行Web服务器、数据库服务器等。
Docker服务器是用于管理容器和Docker镜像的服务器。
Docker客户端是指用户为了使用Docker而操作的命令和工具集。
Docker Hub(注册表)
Docker镜像公开站点。通过容器访问Docker Hub并下载镜像,可以更轻松地进行软件系统构建。
安装Docker
1. 在官方网站上创建一个Docker账户并登录。
2. 从DockerHub上下载并安装。
确认是否成功安装。
$ docker --version
Docker version 19.03.5, build 633a0ea
我成功安装了。
尝试一下,你好世界!
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
好多东西都冒出来了!当用run启动时,写着要做以下的事情!
① 在本地查找是否存在名为hello-world的Docker镜像。
② 如果不存在,则在DockerHub上查找是否存在名为hello-world的Docker镜像。
③ 如果找到了该镜像,则下载它并使用它来启动容器。
嗯嗯,原来如此。果然动起来还是很开心的!
docker コマンド集
動かしてみてコマンド知らないと何もできないなと思ったから、必要最低限のものを調べて叩いてみた。
docker images
Dockerイメージの一覧が確認できる。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 12 months ago 1.84kB
列出本地Docker容器的列表。
(如果不加-a,未启动的容器将不会显示。)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
943011a41e68 hello-world "/hello" About an hour ago Exited (0) About an hour ago goofy_chebyshev
docker run #{dockerイメージ名}
ローカルに指定したイメージ名があるかどうか探しに行く。もしローカルになかったらDockerHubに探しに行く。見つかったらDockerイメージをダウンロード、それを使ってコンテナを起動する。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
只执行镜像下载操作:docker pull #{docker image name}。
$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
docker rm #{コンテナID}
コンテナを削除する。
$ docker rm 943011a41e68
943011a41e68
docker rmi #{dockerイメージID}
イメージを削除する。
$ docker rmi fce289e99eb9
Untagged: hello-world:latest
Untagged: hello-world@sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3
DockerFile:Docker 文档
自分でカスタマイズしたDockerイメージを作って使いたい時、DockerFileを作成、使用すると必要なDockerイメージを作ることができる。DockerFileの書き方はリファレンスがわかりやすかった。
http://docs.docker.jp/engine/reference/builder.html
「Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント」
Dockerネットワーク
複数のコンテナ間でやりとりしたい時、Dockerネットワークを作成する。
例えば、アプリケーションを起動してDBからデータを取ってくるとき、アプリケーションのコンテナとDBのコンテナはそれぞれ独立してしまっているから接点がない。これらをつなぐためにDockerネットワークを作成し橋渡しをすると、複数のコンテナ間でやりとりすることができる。
docker network create #{ネットワーク名}
Dockerネットワークを作成できる。
$ docker network create #{ネットワーク名}
我可以查看Docker网络的详细信息。 (Wǒ Docker de .)
$ docker network inspeck #{ネットワーク名}
总结
我随意地调查并总结了一下。虽然命令看起来很方便,但我更想深入了解DockerFile。