一、Docker 客户端

docker 客户端非常簡單 ,我們可以直接輸入 docker 命令來查看到 Docker 客户端的所有命令選項。

docker

可以通過命令 docker command --help 更深入的瞭解指定的 Docker 命令使用方法。

例如我們要查看 docker stats 指令的具體使用方法:

docker stats --help

二、容器使用

獲取鏡像

如果我們本地沒有 ubuntu 鏡像,我們可以使用 docker pull 命令來載入 ubuntu 鏡像:

docker pull ubuntu


也可以使用以下命令導入本地鏡像:

docker load -i game2048.tar

啓動容器

以下命令使用 ubuntu 鏡像啓動一個容器,參數為以命令行模式進入該容器:

docker run -it ubuntu bash

參數説明:

-i: 交互式操作。
 -t: 終端。
ubuntu: ubuntu 鏡像。
bash:放在鏡像名後的是命令,這裏我們希望有個交互式 Shell,因此用的是 /bin/bash。

要退出終端,直接輸入 exit:

exit

docker 拉去hello world_#linux

啓動已停止運行的容器

查看所有的容器命令如下:

docker ps -a

查看所有正在運行的容器:

docker ps

使用 docker start 啓動一個已停止的容器:

docker start b750bbbcfd88

後台運行

在大部分的場景下,我們希望 docker 的服務是在後台運行的,我們可以過 -d 指定容器的運行模式。

docker run -itd --name ubuntu-test ubuntu /bin/bash

--name表示給容器起個名字。

注:加了 -d 參數默認不會進入容器,想要進入容器需要使用指令 docker exec(下面會介紹到)。

停止一個容器

停止容器的命令如下:

docker stop <容器 ID>

停止的容器可以通過 docker restart 重啓:

docker restart <容器 ID>

進入容器

在使用 -d 參數時,容器啓動後會進入後台。此時想要進入容器,可以通過以下指令進入:

  • docker attach
  • docker exec:推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。

attach 命令

下面演示了使用 docker attach 命令。

docker attach <容器 ID>

注意: 如果從這個容器退出,會導致容器的停止。

exec 命令

下面演示了使用 docker exec 命令。

docker exec -it <容器 ID> /bin/bash

注意: 如果從這個容器退出,不會導致容器的停止,這就是為什麼推薦大家使用 docker exec 的原因。

更多參數説明請使用 docker exec --help 命令查看。

導出和導入容器

導出容器

如果要導出本地某個容器,可以使用 docker export 命令。

docker export 1e560fca3906 > ubuntu.tar

導出容器 1e560fca3906 快照到本地文件 ubuntu.tar。

這樣將導出容器快照到本地文件。

導入容器快照

可以使用 docker import 從容器快照文件中再導入為鏡像,以下實例將快照文件 ubuntu.tar 導入到鏡像 test/ubuntu:v1:

cat docker/ubuntu.tar | docker import - test/ubuntu:v1

此外,也可以通過指定 URL 或者某個目錄來導入,例如:

docker import http://example.com/exampleimage.tgz example/imagerepo

刪除容器

刪除容器使用 docker rm 命令:

docker rm -f <容器 ID>

下面的命令可以清理掉所有處於終止狀態的容器。

docker container prune

刪除鏡像:

刪除鏡像時需要保障該鏡像上沒有正在運行的容器,否則會報錯:

docker -rmi <鏡像名稱>

三、運行一個 容器(以ningx為例)

拉取鏡像:

docker pull nginx

前面我們運行的容器並沒有一些什麼特別的用處。

[root@server1 ~]# docker run -itd --name web -p 80:80 nginx

docker 拉去hello world_#centos_02

參數説明:

-d:讓容器在後台運行。

-p:端口映射,冒號前面的80表示宿主機的端口,冒號後面的80表示容器內的端口,表示將宿主機上的80端口映射到容器內

此時可以在瀏覽器輸入虛擬機的ip地址訪問該nginx:

docker 拉去hello world_#容器_03

使用 docker ps 來查看我們正在運行的容器:

[root@server1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
888a49b407a3        nginx               "nginx -g 'daemon of…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp   web

通過 docker ps 命令可以查看到容器的端口映射,docker 還提供了另一個快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某個確定端口映射到宿主機的端口號。

[root@server1 ~]# docker port 888a49b407a3
80/tcp -> 0.0.0.0:80

查看 WEB 應用程序日誌

docker logs [ID或者名字] 可以查看容器內部的標準輸出。

[root@server1 ~]# docker logs -f 888a49b407a3

-f: 讓 docker logs 像使用 tail -f 一樣來輸出容器內部的標準輸出。

我們還可以使用 docker top 來查看容器內部運行的進程

[root@server1 ~]# docker top 888a49b407a3
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3820                3803                0                   00:58               pts/0               00:00:00            nginx: master process nginx -g daemon off;
101                 3846                3820                0                   00:58               pts/0               00:00:00            nginx: worker process

使用 docker inspect 來查看 Docker 的底層信息。它會返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息。

[root@server1 ~]# docker inspect 888a49b407a3

停止該容器:

[root@server1 ~]# docker stop 888a49b407a3
888a49b407a3
[root@server1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES