Docker?Desktop?安裝的詳細(xì)步驟
一、前言
作為開發(fā)人員,在日常開發(fā)中,我們需要在本地去啟動一些服務(wù),如:redis、MySQL等,就需要去下載這些在本地去啟動,操作較為繁瑣。此時,我們可以使用Docker Desktop,來搭建我們需要的服務(wù),直接在容器中去啟動即可。
二、下載 Docker Desktop
docker官網(wǎng):https://www.docker.com/
三、安裝 Docker Desktop
1、下載并安裝
我在windows上下載的是 Docker Desktop,下載地址,點進去根據(jù)自己的需要去下載,我是下載的Windows版本的。把下載下來的.exe文件雙擊打開,如下圖所示,直接點擊OK即可。
安裝完后,會有個對應(yīng)的小圖標(biāo)。
2、配置 Docker Desktop 環(huán)境
因為docker desktop 是可以部署在windows 上來運行docker的應(yīng)用服務(wù)的,其基于windows 的 Hyper-V服務(wù)和WSL2內(nèi)核的Windows上創(chuàng)建一個子系統(tǒng)(linux),從而實現(xiàn)其在windows上運行docker。所以電腦上需要開啟Hyper-V服務(wù),和安裝WSL2。
開啟Hyper-V 服務(wù):控制面板—程序—程序和功能—啟動或關(guān)閉Windows功能 中 勾選【Hyper-V】和【容器】選項。
配置完畢后,重啟電腦
3、安裝 wsl2
我們可以從微軟官網(wǎng)下載最新版本的wsl2,然后正常打開。
下面這個鏈接,訪問下載,安裝更新:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下載完成后直接雙擊安裝即可
4、打開 Docker Desktop 的問題
問題一:wsl 2 installation
打開 docker desktop, 如果出現(xiàn)報錯如下,報錯意思是:是因為我們還需要進行wsl的下載和配置
這里我們用兩步來解決這個問題:
1、我們先去系統(tǒng)里查看一下有沒有啟用Windows的Linux子系統(tǒng),步驟如下:
控制面板->程序->程序和功能
如果沒有的話,我們勾選上,重新啟動電腦,打開Docker Desktop 。
2、如果還是沒有解決的話。原因就剩一個了就是:
我們使用的wsl2版本很舊,因此需要手動更新。我們可以根據(jù)提示從微軟官網(wǎng)下載最新版本的wsl2,然后正常打開。
下面這個鏈接,訪問下載,安裝更新:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下載完成后直接雙擊安裝即可
重新啟動,運行,發(fā)現(xiàn)問題已經(jīng)解決。
問題二:wsl kernel 版本低
如果已經(jīng)按照過wsl , 打開 docker desktop, 如果出現(xiàn)報錯如下,報錯意思是:wsl kernel 版本低,需要進行更新。
解決方法:以管理員的身份打開控制臺(cmd),并執(zhí)行命令 wsl --update 進行更新
如上圖中提示,wsl 更新成功后,需要對wsl重啟后才會更新生效??梢詧?zhí)行 wsl --shutdown 進行關(guān)閉wsl (我執(zhí)行命令后又重啟了一下電腦。)
重啟后,再次打開 docker desktop即可
如果電腦windows 10 的企業(yè)版的話,以上的安裝部署就完畢了, 但我在安裝windows 10 家庭版的時候,報錯。網(wǎng)上查的意思是說 docker 必須安裝在win10 企業(yè)版本,如果想安裝在家庭版本上,需要如下操作: 打開注冊表編輯器,在“ 計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ” 下找到 EditionID ,數(shù)值數(shù)據(jù)改為Professional即可。
四、Docker Desktop 配置鏡像源
配置鏡像源:打開Docker ,找到 設(shè)置–docker engine 中,添加如下圖所示的鏡像源地址。
選擇DockerEngine,在其中輸入(這里使用的是163的源,如果想要使用其他源可以自行設(shè)置,github上有個項目:docker_mirror可以自動檢測在你的網(wǎng)絡(luò)環(huán)境下那個源是最快的)
{ "registry-mirrors" : [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://cr.console.aliyun.com", "https://mirror.ccs.tencentyun.com" ], "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true } }
一直轉(zhuǎn)轉(zhuǎn)轉(zhuǎn),等一會就可以了,不轉(zhuǎn)了就可以了
五、Disk image location路徑的修改
操作如下(示例):完成安裝后,打開軟件,點擊右上角的設(shè)置,將圖2中的紅框標(biāo)注部分的選中給取消,然后按照圖3進行路徑的修改,再返回圖2界面,把紅框部分選中,并應(yīng)用即可。
六、驗證是否安裝成功
代碼如下(示例):在左下角的搜索框中,輸出PowerShell,打開PowerShell。輸入dockerimages命令,出現(xiàn)下圖所示即表示安裝成功。
七、使用 Docker Desktop
1)containers介紹如下
點擊上圖中的容器名稱,例如「mysql_cn」,會進入到如下圖所示的容器頁面。展示了此容器的一些信息和操作按鈕,點擊「Logs」的tap頁,會顯示此容器的運行日志。容器日志直接展示在頁面上,就方便查看了(一般也可以在后臺通過docker命令來查看日志信息。不過命令查看有點麻煩,看起來也不太方便)
terminal 是容器的終端(即已經(jīng)在容器里面了), 可以在終端上執(zhí)行一些mysql的命令,進入到mysql 執(zhí)行sql語句。
一般如果不通過這個終端的話,需要在控制臺上先通過docker 命令進入到容器內(nèi)部,然后再在容器內(nèi)部使用mysql命令
所以terminal 的好處就是省略了 docker命令進容器的步驟。還是比較方便的。
2)images 介紹如下
一個鏡像可以啟動多個容器,可以設(shè)置不同的容器名稱,比如為可以啟動兩個mysql容器這樣就有兩個mysql容器在運行,兩者運行互不干擾。
通過鏡像啟動一個容器:
如下圖,通過鏡像啟動一個容器時,只配置了容器名和環(huán)境變量信息,沒有配置端口映射。但是容器也是可以啟動的。(個人理解:端口映射的目的是為了其他電腦訪問本機的mysql_2 容器時,是通過 本機ip +映射端口來訪問的。映射端口 是映射到了 mysql_2容器的端口。這樣就可以訪問容器中的mysql 了。 但如果容器本身不需要被訪問的話,容器自己運行,我通過控制臺使用docker 命令來進入到容器內(nèi)容,使用mysql的命令進入到mysql 中來操作mysql ,也是可以的。)
不過,正常的使用情況是需要配置端口映射的。下圖中,端口配置中,有兩個端口需要配置端口映射,一個是3306,一個是33060端口。查看一下資料,兩個端口是分別使用不同的協(xié)議來進行通信的。通常我們使用的都是3306, 所以只配置3306端口的映射即可(在輸入框中輸入一個端口號,前提是未被占用的端口號; 或者直接輸入個0 ,會隨機分配一個端口號)。
3)Search 介紹如下
Search 的搜索框可以直接在這里搜索并且pull 下需要的鏡像。
還有一些其他的功能,目前也使用不到,這里先不做記錄和講解了。后續(xù)用到了再記錄吧;
八、在 cmd 窗體 使用 命令操作 Docker
使用快捷鍵: win+R 調(diào)查 cmd 窗體
1、對Docker操作
安裝完成Docker后,默認(rèn)每次開機的時候都會自動啟動,但我們也可以手動啟動,關(guān)閉或者重啟Docker
# 啟動docker sudo service docker start # 重啟docker sudo service docker restart # 停止docker sudo service docker stop
2、查看本機所有的鏡像
docker images # 或者 docker image ls
標(biāo)簽 | 含義 |
---|---|
REPOSITORY | 鏡像所在的倉庫名稱 |
TAG | 鏡像標(biāo)簽 |
IMAGEID | 鏡像ID |
CREATED | 鏡像的創(chuàng)建日期(不是獲取該鏡像的日期) |
SIZE | 鏡像大小 |
3、拉去鏡像(docker pull)
除了使用官方的鏡像外,我們還可以在倉庫中申請一個自己的賬號,保存自己制作的進行,或者拉去使用他人的鏡像。
# 官方鏡像 docker image pull 鏡像名稱 # 或簡寫為 docker pull 鏡像名稱 # 比如 docker pull ubuntu docker pull ubuntu:16.04 # 個人鏡像 docker pull 倉庫名稱/鏡像名稱 docker pull xunmi/django # 第三方倉庫拉去 docker pull 第三方倉庫地址/倉庫名稱/鏡像名稱 docker pull hub.c.163.com/library/mysql:latest (默認(rèn)倉庫名為library,所有從官方獲取鏡像相當(dāng)于`sudo docker image pull library/鏡像名稱`)
4、刪除鏡像(docker rmi)
docker image rm 鏡像名或鏡像ID 或 docker rmi 鏡像名或鏡像ID docker image rm hello-world docker rmi 9e64176cd8a2
刪除鏡像的前提是沒有使用這個鏡像的容器,如果有需要先刪除容器(報錯:Error response from daemon: conflict: unable to delete 鏡像ID (must be forced) - image is being used by stopped container 容器ID則代表有容器使用了此鏡像。)可以嘗試先執(zhí)行docker rm 容器ID刪除容器,如果還報錯,可以看我下方刪除容器的具體方法。 幾條刪除命令的區(qū)別
- docker rm: 刪除一個或多個 容器
- docker rmi: 刪除一個或多個 鏡像
- docker prune: 用來刪除不再使用的 docker 對象
5、加載鏡像(docker run)
上面我們說過,鏡像只是一個只讀類型的文件,而我們的環(huán)境不可能只是一個這樣的文件,所以我們需要把這個鏡像加載成我們的環(huán)境,也就是讓他變成容器。
docker run [可選參數(shù)] 鏡像名 [向啟動容器中傳入的命令]
常用可選參數(shù) | 作用 |
---|---|
-i | 表示以《交互模式》運行容器。 |
-d | 會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器)。 |
-t | 表示容器啟動后會進入其命令行。加入這兩個參數(shù)后,容器創(chuàng)建就能登錄進去。即分配一個偽終端。 |
–name | 為創(chuàng)建的容器命名。(默認(rèn)會隨機給名字,不支持中文字符!!!) |
-v | 表示目錄映射關(guān)系,即宿主機目錄:容器中目錄。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。 |
-p | 表示端口映射,即宿主機端口:容器中端口。 比如:-p 8080:80 就是將容器中的80端口,映射到主機中的8080端口 |
–network=host | 表示將主機的網(wǎng)絡(luò)環(huán)境映射到容器中,使容器的網(wǎng)絡(luò)與主機相同。每個 Docker 容器都有自己的網(wǎng)絡(luò)連接空間連接到虛擬 LAN。使用此命令則會讓容器和主機共享一個網(wǎng)絡(luò)空間。 |
可以啟動一個系統(tǒng) docker run -i -d -t --name=kali-test kalilinux/kali-rolling
(這里我使用linux的一個發(fā)行版kali作為介紹) 或可以簡寫為docker run -idt --name=kali-test kalilinux/kali-rolling
PS: 如果加載一個我們沒有的鏡像,docker會自動從官方倉庫中進行拉去。
或者我們可以啟動一個網(wǎng)站docker run -dp 8080:80 --name docker-test docker/getting-started
如果你沒有下載docker/getting-started的進行,這里會自動幫你下載成功啟動后,可以在瀏覽器中輸入http://localhost:8080/即可看到如下頁面
6、使用交互式容器
上面我們成功將鏡像變成了容器,但上述的命令中我們都加入了-d,讓容器在后臺運行了。下面我們就來講如何和正在運行的容器進行交互。
6.1、查看容器(docker ps)
查看容器主要會用到ps命令
# 查看當(dāng)前所有正在運行的容器 docker ps # 查看當(dāng)前所有的容器 docker ps -a # 使用過濾器(除了name外,常用的還可以指定id:id= 、所有停止的容器:status=exited,正在運行的容器:status=running 等) docker ps -f name=指定的名字 # 顯示2個上次創(chuàng)建的容器(2可以改變) docker ps -n 2 # 顯示最新創(chuàng)建的容器(包括所有狀態(tài)) docker ps -l # 僅顯示ip docker ps -q # 顯示容器大小 docker ps -s
標(biāo)簽 | 含義 |
---|---|
CONTAINER ID | 鏡像ID |
IMAGE | 創(chuàng)建容器的鏡像名稱 |
COMMAND | 默認(rèn)啟動命令(啟動時會自動執(zhí)行) |
CREATED | 創(chuàng)建容器的日期 |
STATUS | 當(dāng)前的狀態(tài)(啟動了多久,多久之前退出等) |
PORTS | 映射的端口 |
NAMES | 容器的名稱 |
SIZE | 容器大小(使用-s命令參數(shù)時才能看到) |
6.2、啟動和關(guān)閉容器
# 停止容器 docker container stop 容器名或容器id # 或可簡寫為 docker stop 容器名或容器id # 強制關(guān)閉容器 docker container kill 容器名或容器id # 或可簡寫為 docker kill 容器名或容器id # 啟動容器 docker container start 容器名或容器id # 或可簡寫為 docker start 容器名或容器id
- 如果我們成功啟動或者關(guān)閉一個容器的話,會返回容器名或者容器id
- stop和kill的區(qū)別: stop是比較優(yōu)雅的關(guān)掉一個容器,類似我們正常退出一個軟件,而kill是當(dāng)一個進程出現(xiàn)意外無法正常關(guān)閉的時候,我們強行進行關(guān)閉,有點像我們使用任務(wù)管理器進行結(jié)束進程操作。
6.3、操作后臺容器
之前我們下過一個kali并且放在了后臺運行,如果沒有下載可以執(zhí)行下列命令(
docker run -i -d -t --name=kali-test kalilinux/kali-rolling
),下面我們就用下面的命令開啟kali(如果你下的是其他系統(tǒng),比如ubuntu也可以舉一反三一下)首先我們確保我們要進入的容器是開啟狀態(tài)的,使用docker ps -a
查看其中的STATUS屬性是否是Up開頭,如果不是先照著上面啟動容器的方法開啟容器我們開啟容器后,如果需要在容器內(nèi)執(zhí)行命令,可以將后臺切換到前臺,也可能使用docker命令將我們需要執(zhí)行的命令傳入。
操作方法有很多種,這里我們介紹一些比較常用的方法
# 如果我只需要執(zhí)行簡單的一兩條命令可以使用docker exec # 執(zhí)行單條命令 (-i: 啟動并且保留交互式命令行; -t:作用是分配一個虛擬的終端; docker run ) docker exec -it 容器名或容器id 執(zhí)行的命令 # 比如 docker exec -it kali-test whoami # 用這種方法,我們還可以啟動命令行,根據(jù)Linux的特性,系統(tǒng)程序會在/bin中,linux中常用的Shell有多個,其中大部分用的Linux默認(rèn)的為bash # 所以我們啟動命令可以自行如下命令(除了/bin/bash外,linux一般還會帶/bin/sh、/bin/rbash、/bin/dash等,具體區(qū)別可以自行百度) docker exec -it 容器名或容器id /bin/bash # 比如 docker exec -it kali-test /bin/bash # 除了exec外還有attach可以使用,但它有個弊端,多終端啟動attach后,都會會同步顯示。如果有一個窗口阻塞了,那么其他窗口也無法再進行操作。 docker attach 容器名或容器id # 比如 docker attach kali-test
exec可選參數(shù) | 作用 |
---|---|
-d | 會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器)。 |
-e | 設(shè)置環(huán)境變量 |
-i | 表示以《交互模式》運行容器。 |
-t | 表示容器啟動后會進入其命令行。加入這兩個參數(shù)后,容器創(chuàng)建就能登錄進去。即分配一個偽終端。 |
-u | 設(shè)置用戶名和UID。 |
-w | 設(shè)置容器內(nèi)的工作目錄。 |
除了上述方法外,在進入容器后,我們還可以嘗試安裝SSH或者nsenter嘗試登陸,不過這兩種方法都先進入容器安裝后才能使用
# nsenter安裝步驟 wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz tar -xzvf util-linux-2.24.tar.gz cd util-linux-2.24/ ./configure --without-ncurses make nsenter sudo cp nsenter /usr/local/bin
6.4、刪除容器(docker rm)
如我我們需要刪除一個容器,首先需要確保這個容器已經(jīng)停止了,因為正在運行的容器是無法直接刪除。 我們可以運行一下
docker ps -a
,如果發(fā)現(xiàn)沒有停止,可以使用docker stop停止(STATUS下已Exited開頭則是停止的)
# 使用rm刪除容器 docker rm 容器名或容器id # 列如 docker rm docker-test
如果報錯Error response from daemon: You cannot remove a running container
容器ID. Stop the container before attempting removal or force remove
則代表這個容器已經(jīng)啟動,需要執(zhí)行 docker stop 容器id,停止此容器。
6.5、容器制作成鏡像
我們?yōu)槭裁匆讶萜髦谱鞒社R像?
- 鏡像可以看作為是一種備份,如果我們后期環(huán)境出現(xiàn)了問題,可以還原到早期鏡像。
- 鏡像便于傳播,可以讓自己的其他設(shè)備或他人的重復(fù)利用變得更加簡單容易。
# 將容器制作成鏡像 docker commit 容器名 鏡像名 # 鏡像打包備份(打包備份的文件會自動存放在當(dāng)前命令行的路徑下,如果想讓保存的文件可以打開,可以加.tar后綴) docker save -o 保存的文件名 鏡像名 # 鏡像解壓 docker load -i 文件路徑/備份文件
我們將打包備份的鏡像可以通過網(wǎng)絡(luò)發(fā)送到其他設(shè)備上,使用docker鏡像解壓即可直接使用你的環(huán)境。
到此這篇關(guān)于Docker Desktop 安裝的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Docker Desktop 安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Intellij IDEA快速實現(xiàn)Docker鏡像部署的方法步驟
本文主要介紹了Intellij IDEA快速實現(xiàn)Docker鏡像部署的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09給docker創(chuàng)建的elasticsearch容器添加密碼簡單步驟
在使用Elasticsearch(ES)Docker容器時,有時需要設(shè)置密碼來保護數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關(guān)于給docker創(chuàng)建的elasticsearch容器添加密碼的簡單步驟,需要的朋友可以參考下2024-02-02docker mysql鏡像因為配置文件出現(xiàn)錯誤一直提示重啟的解決
這篇文章主要介紹了docker mysql鏡像因為配置文件出現(xiàn)錯誤一直提示重啟的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Ollma本地部署Qwen2.5 14B的詳細(xì)過程(不使用docker)
本文介紹了如何在不使用Docker的情況下部署Ollama模型和Open-webui實現(xiàn)可視化界面,Ollama模型通過命令行操作,包括啟動、創(chuàng)建、運行等,Open-webui則需要安裝Anaconda環(huán)境,安裝并啟動服務(wù)后,通過瀏覽器訪問即可使用,感興趣的朋友跟隨小編一起看看吧2024-11-11使用docker-compose實現(xiàn)不停機部署/灰度發(fā)布的四種方法
灰度發(fā)布是一種軟件部署策略,它允許將新版本的部分功能或服務(wù)逐步推送給用戶,而不是一次性對所有用戶進行大規(guī)模更新,本文主要給大家介紹了使用docker-compose實現(xiàn)不停機部署/灰度發(fā)布的四種方法,需要的朋友可以參考下2024-11-11