《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 重啟完成即可。
縱觀 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組合鍵,可以在退出容器的同時還保持容器運行。
# 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 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 2019

Docker 整體介紹,在運維人員和開發人員眼中,Docker 究竟是什么以及有什么作用。
浙公網安備 33010602011771號