《Docker Deep Dive》Note - 縱觀 Docker

《Docker Deep Dive》Note

因爲GFW的隔離,國內拉取鏡像會報TLS handshake timeout的錯誤;須要配置 registry-mirrors 爲國內源解決這個問題。
能夠配置爲阿里的加速源:https://cr.console.aliyun.com/undefined/instances/mirrors,阿里的加速器能夠提高獲取Docker官方鏡像的速度。
登陸開發者帳號後,將本身的加速器地址複製到 Docker Settings > Daemon > Registry mirrors 中,並點擊 Apply 按鈕,等待 Docker 重啓完成便可。node

縱觀 Docker

1. 運維視角

1.1 鏡像
  • docker pull
  • docker image ls
# 拉取一個鏡像
$ docker pull ubuntu:lastest

latest: Pulling from library/ubuntu
7ddbc47eeb70: Pull complete                                                                                             
c1bbdc448b72: Pull complete                                                                                            
8c3b70e39044: Pull complete                                                                                            
45d437916d57: Pull complete                                                                                             
Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Status: Downloaded newer image for ubuntu:latest

# 查看拉取的鏡像
$ docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              775349758637        9 days ago          64.2MB
1.2 容器
  • docker container run
  • docker container ls
  • 快捷鍵 Ctrl+P+Q
# 啓動容器
# -it 參數會將 Shell 切換到容器終端
$ docker container run -it ubuntu:latest /bin/bash

root@90eb9f237521:/#

Ctrl + P + Q組合鍵,能夠在退出容器的同時還保持容器運行。web

# windows下能夠經過 tasklist 命令查看進程
$ tasklist /FI "imagename eq docker*"

映像名稱                                        PID            會話名                       會話#                 內存使用
========================= ======== ================ =========== ============
Docker for Windows.exe                   13972         Console                     5                      102,560 K
Docker.Watchguard.exe                    3772           Services                     0                      2,252 K
Docker.Watchguard.exe                    4032           Services                     0                      2,228 K

# 查看系統內所有處於運行狀態的容器
$ docker container ls

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
90eb9f237521        ubuntu:latest       "/bin/bash"         21 minutes ago      Up 21 minutes                           focused_shaw
1.3 鏈接到運行中的容器
  • docker container exec
  • docker container stop
  • docker container rm
  • docker container ls -a
# 將 shell 鏈接到一個運行中的容器終端
# docker container exec <options> <cotainer-name or container-id> <command/app>
$ docker container exec -it 90eb9f237521 bash

root@90eb9f237521:/# 

# 中止一個容器
$ docker container stop 90eb9f237521

90eb9f237521

# 殺死一個容器
$ docker container rm 90eb9f237521

90eb9f237521

# 再次執行 docker container ls 能夠查看容器是否已經被刪除
# -a 參數能夠列出全部(包括中止狀態)容器
$ docker container ls -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# 能夠看到容器 90eb9f237521 已經被刪除了

2 開發視角

容器即應用。docker

  • docker image build
# 構建一個鏡像
$ docker image build -t test:lastest .

...
Successfully built afe9c1f8a70f
Successfully tagged test:lastest

# 查看已經構建的鏡像
$ docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                lastest             afe9c1f8a70f        44 seconds ago      71.5MB

# 應用容器化
$ docker container run -d --name web1 --publish 8080:8080 test:lastest

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
946d5306bb5e        test:lastest        "node ./app.js"     13 seconds ago      Up 12 seconds       0.0.0.0:8080->8080/tcp   web1

# 此時打開瀏覽器 localhost:8080 便可看到運行的應用

The end.
Last updated by Jehorn 11/10 2019shell

相關文章
相關標籤/搜索