Docker 介紹
Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的代碼一樣。
點擊購買阿里云云服務器,建議買香港可以免備案,系統鏡像選擇CentOS7或者用自己現有服務器
CentOS Docker 安裝
Docker 支持以下的 64 位 CentOS 版本:CentOS 7、CentOS 8、更高版本
使用官方安裝腳本自動安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
直到安裝結束
設置 Docker 倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
使用以下命令來設置穩定的倉庫。選擇國內的阿里雲
sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝 Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
好了,到這裏安裝工作已完畢。
啓動 Docker
sudo systemctl start docker
通過運行 hello-world 映像來驗證是否正確安裝了 Docker Engine-Community 。
sudo docker run hello-world
使用Docker
docker run 命令來在容器內運行一個應用程序,輸出Hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
各個參數解析:
-
docker: Docker 的二進制執行文件。
-
run: 與前面的 docker 組合來運行一個容器。
-
ubuntu:15.10 指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
-
/bin/echo "Hello world": 在啓動的容器裏執行的命令
以上命令完整的意思可以解釋爲:Docker 以 ubuntu15.10 鏡像創建一個新容器,然後在容器裏執行 bin/echo "Hello world",然後輸出結果。
運行交互式的容器
我們通過 docker 的兩個參數 -i -t,讓 docker 運行的容器實現"對話"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
各個參數解析:
-
-t: 在新容器內指定一個僞終端或終端。
-
-i: 允許你對容器內的標準輸入 (STDIN) 進行交互。
注意第二行 root@8739b639f1b8:/# ,此時我們已進入一個 ubuntu15.10 系統的容器
我們嘗試在容器中運行命令 cat /proc/version和ls分別查看當前系統的版本信息和當前目錄下的文件列表
使用exit退出容器
exit
啓動容器(後臺模式)
使用以下命令創建一個以進程方式運行的容器
注:加了 -d 參數默認不會進入容器,想要進入容器需要使用指令 docker exec(下面會介紹到)。
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
在輸出中,我們沒有看到期望的 "hello world",而是一串長字符
1ab5e28733593adcbbc947185e9ecf0f4da8efa1328f6e0db4c2b1a324563bb9
這個長字符串叫做容器 ID,對每個容器來說都是唯一的,我們可以通過容器 ID 來查看對應的容器發生了什麼。
首先,我們需要確認容器有在運行,可以通過 docker ps 來查看:
docker ps
輸出詳情介紹
CONTAINER ID: 容器 ID,我的是1ab5e2873359
IMAGE: 使用的鏡像。
COMMAND: 啓動容器時運行的命令。
CREATED: 容器的創建時間。
STATUS: 容器狀態。
狀態有7種:
- created(已創建)
- restarting(重啓中)
- running 或 Up(運行中)
- removing(遷移中)
- paused(暫停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。
NAMES: 自動分配的容器名稱。
在宿主主機內使用 docker logs 容器ID 命令,查看容器內的標準輸出:
docker logs 1ab5e2873359
進入容器
docker exec:推薦大家使用 docker exec 命令,因爲此退出容器終端,不會導致容器的停止。
docker exec -it 1ab5e2873359 /bin/bash
導出和導入容器
導出容器
如果要導出本地某個容器,可以使用 docker export 命令。
docker export 1ab5e2873359 > ubuntu.tar
導出容器 1ab5e2873359 快照到本地文件 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
根據容器 ID 啓動、關閉、重啓
- docker start:啓動一個或多個已經被停止的容器
- docker stop:停止一個或多個運行中的容器
- docker restart:重啓一個或多個容器
刪除容器
刪除容器使用 docker rm 命令:
docker rm -f 1ab5e2873359
卸載 Docker
刪除安裝包:
yum remove docker-ce
刪除鏡像、容器、配置文件等內容:
rm -rf /var/lib/docker