Docker鏡像容器安裝與使用


軟件介紹:
https://baike.baidu.com/item/Docker/13344470?fr=aladdin
使用場(chǎng)景:
線上正式環(huán)境是內(nèi)網(wǎng),且無(wú)法連接外網(wǎng)時(shí),linux安裝python缺少依賴,導(dǎo)致腳本無(wú)法正常運(yùn)行。
需要將各種軟件服務(wù)區(qū)分開,可以將軟件單獨(dú)放在不同的容器里進(jìn)行運(yùn)行,具體可以運(yùn)行哪些軟件,自行了解。
他人分享的docker鏡像,部署到自己的云服務(wù)器上運(yùn)行。
因?yàn)樽罱玫搅诉@個(gè),感覺是比較實(shí)用的,網(wǎng)上搜了很多問(wèn)題才弄好的,寫個(gè)東西,總結(jié)一下,只是自己摸索的操作過(guò)程。
一、安裝
docker先裝在windows上運(yùn)行,做好鏡像后再部署到linux上運(yùn)行就行。
docker官網(wǎng)下載地址:https://www.docker.com/products/docker-desktop/
1.????需要注意的是要先打開windows的兩個(gè)功能,進(jìn)入方法:
控制面板——程序——啟用或關(guān)閉windows功能
1.1????開啟Hyper-V

1.2????開啟適用于Linux的Windows子系統(tǒng)

2.????直接運(yùn)行從官網(wǎng)下載的安裝進(jìn)行運(yùn)行
提示:docker默認(rèn)安裝在C盤,請(qǐng)不要隨意移動(dòng)docker軟件目錄的位置,可能導(dǎo)致報(bào)錯(cuò),無(wú)法正常使用。
安裝完成后,彈出提示缺失WSL 2,可以自行點(diǎn)擊圖上鏈接進(jìn)行安裝,或者點(diǎn)擊下面鏈接直接下載。
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

3.????安裝完成后啟動(dòng)軟件,修改一下配置,將鏡像安裝移到其他盤進(jìn)行,不然C盤很容易爆炸。





這樣操作完后,安裝就完成了,是不是很簡(jiǎn)單。

二、拉取鏡像,并配置容器
第二節(jié)需要做的操作就有點(diǎn)多了,不過(guò)也不難(請(qǐng)先看下面1.5的提示,配置鏡像源)
1.????拉取鏡像hello-world
1.1????Win+R運(yùn)行cmd,輸入docker

1.2????輸入docker pull hello-world,拉取一個(gè)名叫hello-world的鏡像

1.3????拉取鏡像成功后,docker軟件上回看到名叫hello-world的鏡像,真是萬(wàn)物從hello world起了。

1.4????真正要用的不是hello-world這個(gè)鏡像,只是用來(lái)驗(yàn)證軟件是否正常安裝,將hello-world換成centos(或者ubuntu),再試一下這個(gè)命令。


1.5????提示:如果拉取鏡像,下載失敗,或者無(wú)法正常下載,請(qǐng)配置一下docker鏡像源

阿里云的鏡像源需要登錄阿里云官網(wǎng)(https://account.aliyun.com/login/login.htm),登錄之后就可以看到下圖。

2.????運(yùn)行容器
2.1? ? 找到鏡像頁(yè)面,點(diǎn)擊運(yùn)行鏡像則自動(dòng)會(huì)生成一個(gè)對(duì)應(yīng)鏡像的容器


2.2? ? 選擇centos的鏡像容器進(jìn)行運(yùn)行


運(yùn)行容器也可以使用命令進(jìn)行,下面命令會(huì)運(yùn)行一個(gè)新的centos鏡像的容器
3.? ? 打包鏡像
一般在容器的linux中安裝自己需要的服務(wù)或軟件后,就可以將容器打包成鏡像,此時(shí)需要在windows命令行操作
my_container是容器名,替換成你想打包的容器
my_image是鏡像名,可自己定義

將容器打包成鏡像后,鏡像會(huì)存放在運(yùn)行docker commit時(shí)的目錄,如上圖,打包的鏡像存放在C:\Users\admin目錄下。

三、部署
? ? 在服務(wù)器上安裝docker服務(wù)
沒(méi)有網(wǎng)絡(luò)環(huán)境情況下,還是通過(guò)上傳rmp包瀨進(jìn)行安裝
docker下載地址:https://download.docker.com/linux/static/stable/
選擇自己需要的版本,ce版本是社區(qū)版本(免費(fèi)),ee版本是商業(yè)版本(付費(fèi))。
下載完后才能后上傳到服務(wù)器上進(jìn)行解壓
1.1? ??解壓完成后,二進(jìn)制文件移動(dòng)到可執(zhí)行文件上的目錄路徑
1.2? ??進(jìn)入/etc/systemd/system/
1.3? ??新建一個(gè)名為docker.service的文件,這里直接使用vi命令創(chuàng)建,然后將藍(lán)色字體粘貼到文件中保存
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
??
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
??
[Install]
WantedBy=multi-user.target
1.4? ??給docker.service文件添加權(quán)限
1.5? ??重新加載配置文件(每次有修改docker.service文件時(shí)都要重新加載下)
1.6? ? 測(cè)試docker服務(wù)是否正常安裝

2.? ? ?將之前自己打包的鏡像文件上傳到服務(wù)器上,然后使用docker運(yùn)行鏡像生成容器。
找到上傳到服務(wù)器鏡像文件,使用docker命令運(yùn)行鏡像
modelrun_py是鏡像名
awesome_hofstadter是容器名,可自定義
成功運(yùn)行后,可以使用docker ps 查看容器運(yùn)行狀況

2.1? ? 如果需要使用容器內(nèi)程序與宿主機(jī)進(jìn)行服務(wù)交互,需要設(shè)置端口映射,為了能夠方便容器與宿主機(jī)進(jìn)行文件操作,可以進(jìn)行目錄掛載,可使用如下命令進(jìn)行啟動(dòng)鏡像
使用鏡像 nginx:latest,以后臺(tái)模式啟動(dòng)一個(gè)容器,將容器的 80 端口映射到主機(jī)的 80 端口,主機(jī)的目錄 /data 映射到容器的 /data
2.2? ? 進(jìn)入容器以及退出容器且不關(guān)閉容器,保持后臺(tái)運(yùn)行
進(jìn)入容器,此命令需要連接到正在運(yùn)行中的容器,如果容器未正在運(yùn)行,可運(yùn)行后再試
2faeb0e93f2f是容器id,根據(jù)自己本地環(huán)境修改

退出容器且不關(guān)閉容器,保持容器后臺(tái)運(yùn)行
按下鍵盤ctrl +?P + Q
2.3? ? 也可以使用docker?exec命令,
-it后面接容器id
使用exit進(jìn)行退出


如果對(duì)你有所幫助,會(huì)讓我感覺到快樂(lè),使用遇到問(wèn)題,可以留下評(píng)論,也可私信。