首次使用Docker

这个教程旨在从连Docker这个词都是首次听到的水平上,一直到大概是这种感觉为止。

目标/对象

对于没有使用过Docker的人来说,如果是CUI命令的话,我能够稍微理解一点。

简要概括

Docker是一种”容器化虚拟化技术”。大家可能听说过服务器的虚拟化这个词吧。简单来说,就是在计算机内部启动另一个计算机(虚拟机)。
传统的虚拟化是在主机操作系统(安装在机器上的操作系统)上利用称为虚拟机监管器的虚拟化软件来启动客户机操作系统。
Docker的”容器化虚拟化”不需要启动客户机操作系统。它创建了一个包含各种中间件的执行环境,称为容器,并在其中运行应用程序。
正如前面所述,不需要启动客户机操作系统,因此实现了比传统方式更轻量的操作。

え?それだけ?
ちがいます。DockerはたちあげるコンテナをDockerfileやDocker-compose.ymlといった’設計書’に記述できます。つまりこの設計書をGitHubにあげてcloneしてもらったらそのひとも同じ環境のコンテナを立ち上げられるということです。
自分はMySQLが8系だったがチームメンバーは5系で開発してたからエラーがおこったとかいう問題がおこらないのです。
しかもDockerにはDocker専用のコンテナ共有サービス「DockerHub」も用意されます。使い方はGitHubを使ったことがある人ならそれなりに使えると思います。

既然詳細和优点都太多了,就请阅读先人们的文章吧(请阅读)。现在先试着运行一下吧。

准备

让我们尝试安装Docker吧
Mac:https://docs.docker.com/docker-for-mac/install/
Win10Pro:https://docs.docker.com/docker-for-windows/install/
Win10Home以下:https://github.com/docker/toolbox/releases

如果使用Win10Home,請下載github上的DockerToolbox-18.09.3.exe。
如果使用Mac,則需要使用sudo命令。

接下来只需按照平常的安装步骤进行即可。

实践

你好世界!

先打开终端或命令提示符。
Win10Home安装后会出现在桌面上的Docker快速启动终端,
尝试输入以下命令。

$ docker run hello-world
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe
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/

こんな感じのが出れば成功です。
このログを大雑把の説明すると
「ローカルにhello-worldのimageないからプルしてくるね。ダウンロードできた。
コンテナ立ち上げるね。
Hello from Docker!
次は”$ docker run -it ubuntu bash”ってコマンド試してみて」
です。
言い忘れていました。imageというのは設計書とコンテナの間にはいるものです。文字通りコンテナのイメージです。一旦はそれでいいです。

让我们看看当前正在运行的容器。您可以使用 $ docker container ls -a 命令来确认。由于hello-world是一个输出后即停止的容器,如果没有-a选项,您将看不到所有容器的显示。

 $ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
affc00b91aec        hello-world         "/hello"            5 seconds ago       Exited (0) 5 seconds ago                       affectionate_sinoussi

hello-worldというimageからつくられたaffc00b91aecというコンテナがありますね

次にイメージ一覧も見てみましょう

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        5 months ago        1.84kB

您也可以删除不再需要的容器和镜像。

$ docker container rm affc00b91aec

或者

$ docker container rm a

のように頭文字してでもできます。

同様にイメージも削除してみます。

$ docker image rm f
Untagged: hello-world:latest
Untagged: hello-world@sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3

Ubuntu开机

接下来,让我们尝试一下之前hello-world向我们提到的命令。

$ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6abc03819f3e: Pull complete
05731e63f211: Pull complete
0bd67c50d6be: Pull complete
Digest: sha256:f08638ec7ddc90065187e7eabdfac3c96e5ff0f6b2f1762cf31a4f49b53000a5
Status: Downloaded newer image for ubuntu:latest
root@2e88c2d2aac5:/#

这看起来像是一个装有Ubuntu操作系统的容器。如果您最后在root目录中能够登录成功,那就可以确定了。您可以尝试运行ls命令来确认是否更像一个操作系统。

root@2e88c2d2aac5:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

看起来很相似。如果是通过CUI进行操作,您可以在这里完成一系列任务。

root@2e88c2d2aac5:/# touch hoge
root@2e88c2d2aac5:/# ls
bin  boot  dev  etc  hoge  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

假设你按照这样的感觉创建了某个文件。

让我们按下退出容器的命令“ctrl+pq”,先退出一次,然后再进入一次试试看。

root@2e88c2d2aac5:/# ls
bin  boot  dev  etc  hoge  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@2e88c2d2aac5:/#
(省略) MINGW64 /c
$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2e88c2d2aac5        ubuntu              "bash"              21 minutes ago      Up 21 minutes                           heuristic_hofstadter

keita@DESKTOP-MIO6JRP MINGW64 /c
$ docker container exec -it 2 bash
root@2e88c2d2aac5:/# ls
bin  boot  dev  etc  hoge  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

我看到hoge了。这意味着我能够再次登录之前编辑过的容器。除了使用exec命令登录外,还有一个叫作attach的方法,但使用它会连接到父进程,建议尽量不要使用。
当使用exec登录后想要退出时,请使用exit命令。
root@2e88c2d2aac5:/# exit
exit

我认为你已经大致了解了Docker的基本功能。

让我们以目前的方式继续,尝试一下Docker文件和Docker Compose。

广告
将在 10 秒后关闭
bannerAds