在當(dāng)今的軟件開發(fā)和部署領(lǐng)域,Docker 已經(jīng)成為了一種不可或缺的工具。它能夠幫助開發(fā)者將應(yīng)用程序及其依賴項(xiàng)打包成一個(gè)獨(dú)立的容器,實(shí)現(xiàn)快速部署和資源隔離。Ubuntu 作為一種廣泛使用的 Linux 發(fā)行版,與 Docker 有著很好的兼容性。本文將詳細(xì)介紹如何在 Ubuntu 上使用 Docker 來管理容器與鏡像。
安裝 Docker
在 Ubuntu 上安裝 Docker 可以通過多種方式,這里推薦使用官方的安裝腳本。首先,需要更新系統(tǒng)的軟件包列表,確保系統(tǒng)是最新的。打開終端,輸入以下命令:
sudo apt update sudo apt upgrade
接著,安裝一些必要的依賴包,這些包將幫助系統(tǒng)與 Docker 倉庫進(jìn)行通信。命令如下:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加 Docker 的官方 GPG 密鑰,以確保下載的軟件包是來自官方且未被篡改的。使用以下命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 軟件源到系統(tǒng)的軟件源列表中。執(zhí)行以下命令:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
再次更新軟件包列表,使新添加的軟件源生效。然后安裝 Docker 引擎:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
安裝完成后,可以通過以下命令驗(yàn)證 Docker 是否安裝成功:
sudo docker run hello-world
如果看到輸出信息表明 Docker 已經(jīng)成功運(yùn)行,那么說明安裝過程順利完成。
鏡像管理
鏡像(Image)是 Docker 的核心概念之一,它是一個(gè)只讀的模板,包含了運(yùn)行容器所需的所有文件系統(tǒng)和配置信息。在 Ubuntu 上使用 Docker 管理鏡像,首先要了解如何獲取鏡像。
拉取鏡像
可以使用 docker pull 命令從 Docker Hub 或其他鏡像倉庫拉取鏡像。例如,要拉取一個(gè)最新版本的 Nginx 鏡像,可以執(zhí)行以下命令:
sudo docker pull nginx
如果需要指定鏡像的版本,可以在鏡像名稱后面加上冒號和版本號。例如,拉取 Nginx 1.21.6 版本的鏡像:
sudo docker pull nginx:1.21.6
查看鏡像
使用 docker images 命令可以查看本地已經(jīng)下載的鏡像列表。該命令會顯示鏡像的倉庫名稱、標(biāo)簽、鏡像 ID、創(chuàng)建時(shí)間和大小等信息。示例如下:
sudo docker images
刪除鏡像
當(dāng)本地的鏡像不再需要時(shí),可以使用 docker rmi 命令刪除鏡像。需要注意的是,在刪除鏡像之前,必須確保沒有基于該鏡像運(yùn)行的容器。例如,要刪除之前拉取的 Nginx 鏡像,可以執(zhí)行以下命令:
sudo docker rmi nginx
如果要刪除指定版本的鏡像,可以使用鏡像的標(biāo)簽或 ID。例如:
sudo docker rmi nginx:1.21.6
構(gòu)建鏡像
除了從倉庫拉取鏡像,還可以根據(jù)自己的需求構(gòu)建自定義的鏡像。這需要使用 Dockerfile 來定義鏡像的構(gòu)建規(guī)則。以下是一個(gè)簡單的 Dockerfile 示例,用于構(gòu)建一個(gè)基于 Ubuntu 系統(tǒng)并安裝 Python 的鏡像:
FROM ubuntu:20.04 RUN apt update && apt install -y python3 CMD ["python3", "--version"]
將上述內(nèi)容保存為 Dockerfile,然后在包含該文件的目錄下執(zhí)行以下命令來構(gòu)建鏡像:
sudo docker build -t my-python-image .
其中,-t 參數(shù)用于指定鏡像的標(biāo)簽,. 表示使用當(dāng)前目錄作為構(gòu)建上下文。
容器管理
容器(Container)是鏡像的運(yùn)行實(shí)例。在 Ubuntu 上使用 Docker 管理容器,需要掌握容器的創(chuàng)建、啟動、停止、刪除等操作。
創(chuàng)建并啟動容器
使用 docker run 命令可以創(chuàng)建并啟動一個(gè)新的容器。例如,使用之前拉取的 Nginx 鏡像創(chuàng)建一個(gè)容器:
sudo docker run -d -p 8080:80 nginx
其中,-d 參數(shù)表示以守護(hù)進(jìn)程模式運(yùn)行容器,-p 參數(shù)用于將容器內(nèi)部的端口映射到宿主機(jī)的端口。上述命令將容器內(nèi)部的 80 端口映射到宿主機(jī)的 8080 端口。
查看容器
使用 docker ps 命令可以查看當(dāng)前正在運(yùn)行的容器列表。如果要查看所有容器,包括已停止的容器,可以使用 docker ps -a 命令。示例如下:
sudo docker ps sudo docker ps -a
停止容器
使用 docker stop 命令可以停止正在運(yùn)行的容器。需要指定容器的 ID 或名稱。例如,停止之前創(chuàng)建的 Nginx 容器:
sudo docker stop <容器 ID 或名稱>
啟動已停止的容器
使用 docker start 命令可以啟動已停止的容器。同樣需要指定容器的 ID 或名稱。示例如下:
sudo docker start <容器 ID 或名稱>
刪除容器
使用 docker rm 命令可以刪除容器。在刪除容器之前,必須確保容器已經(jīng)停止。例如,刪除之前的 Nginx 容器:
sudo docker rm <容器 ID 或名稱>
進(jìn)入容器
使用 docker exec 命令可以進(jìn)入正在運(yùn)行的容器內(nèi)部進(jìn)行操作。例如,進(jìn)入一個(gè)正在運(yùn)行的 Ubuntu 容器:
sudo docker exec -it <容器 ID 或名稱> /bin/bash
其中,-it 參數(shù)用于分配一個(gè)偽終端并保持標(biāo)準(zhǔn)輸入打開,以便可以在容器內(nèi)部進(jìn)行交互式操作。
容器與宿主機(jī)之間的數(shù)據(jù)共享
在實(shí)際應(yīng)用中,經(jīng)常需要在容器和宿主機(jī)之間共享數(shù)據(jù)。可以使用 Docker 的數(shù)據(jù)卷(Volume)來實(shí)現(xiàn)這一目的。
創(chuàng)建數(shù)據(jù)卷
使用 docker volume create 命令可以創(chuàng)建一個(gè)數(shù)據(jù)卷。例如:
sudo docker volume create my-volume
查看數(shù)據(jù)卷
使用 docker volume ls 命令可以查看所有的數(shù)據(jù)卷。示例如下:
sudo docker volume ls
掛載數(shù)據(jù)卷到容器
在創(chuàng)建容器時(shí),可以使用 -v 參數(shù)將數(shù)據(jù)卷掛載到容器內(nèi)部。例如,將之前創(chuàng)建的 my-volume 數(shù)據(jù)卷掛載到一個(gè)新的 Nginx 容器的 /usr/share/nginx/html 目錄:
sudo docker run -d -p 8080:80 -v my-volume:/usr/share/nginx/html nginx
這樣,宿主機(jī)和容器之間就可以通過數(shù)據(jù)卷進(jìn)行數(shù)據(jù)共享了。
通過以上步驟,你已經(jīng)學(xué)會了如何在 Ubuntu 上使用 Docker 管理容器與鏡像。掌握這些技能將有助于你更高效地進(jìn)行軟件開發(fā)和部署工作。