日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

docker 初体验

發(fā)布時(shí)間:2024/4/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 初体验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

docker 初體驗(yàn)

在參加RoboCup仿真組的時(shí)候遇到了一個(gè)很奇怪的問(wèn)題,實(shí)驗(yàn)平臺(tái)運(yùn)行的環(huán)境是java9+,但是智能體代碼的運(yùn)行環(huán)境是java8(高版本不可以)。本來(lái)打算起一個(gè)虛擬機(jī)來(lái)運(yùn)行兩份不同的代碼,不過(guò)室友告訴我一個(gè)更好的解決方案,使用docker——更輕量高效的解決方案。

什么是docker

摘自docker中文社區(qū):Docker是一個(gè)開(kāi)源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開(kāi)發(fā)者在筆記本上編譯測(cè)試通過(guò)的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。

為什么我們使用docker

我們已經(jīng)有了虛擬機(jī)這樣的很成熟的解決方案,那么我們?yōu)槭裁葱枰褂胐ocker 呢?
一開(kāi)始我將docker理解為一個(gè)更輕量級(jí),更優(yōu)化的虛擬機(jī),但是事實(shí)上他們是不同的機(jī)制。
看到一個(gè)很有趣的形容:

  • 物理機(jī):一個(gè)獨(dú)棟別墅,有一個(gè)房子,獨(dú)立地基,獨(dú)立花園
  • 虛擬機(jī):一棟公寓樓,一棟樓里里有很多單獨(dú)套間,所有套間的住戶共享這棟樓,同時(shí)不共享水電,也不能進(jìn)入別人的房子。
  • 容器:一棟樓,樓房里有很多套件,每個(gè)套間里有小房間,住戶只擁有一個(gè)小房間,同一套間的多個(gè)住戶共享套間的所有資源,不能進(jìn)入別人的小房間。

舉個(gè)栗子

以我遇到的情況為例:

  • 如果我使用虛擬機(jī):
    • 創(chuàng)建一個(gè)虛擬機(jī),安裝ubuntu,在虛擬機(jī)中配置JAVA10的環(huán)境,運(yùn)行實(shí)驗(yàn)平臺(tái)
    • 創(chuàng)建一個(gè)虛擬機(jī),安裝ubuntu,在虛擬機(jī)中配置JAVA8的環(huán)境,運(yùn)行開(kāi)發(fā)平臺(tái)
  • 如果我使用docker容器:
    • 安裝ubuntu的鏡像
    • 創(chuàng)建一個(gè)容器,配置JAVA10的環(huán)境,運(yùn)行實(shí)驗(yàn)平臺(tái)
    • 創(chuàng)建一個(gè)容器,配置JAVA8的環(huán)境,運(yùn)行開(kāi)發(fā)平臺(tái)

這樣說(shuō)可能還是沒(méi)有體現(xiàn) docker 的特點(diǎn)我們來(lái)畫一個(gè)簡(jiǎn)單的圖(為了更形象加上了一個(gè)CentOS靈魂畫手上線)

超簡(jiǎn)單使用入門

安裝

安裝這種小事,自己去官網(wǎng)看咯~
ps:我使用的是deepin15.7系統(tǒng),安裝可以戳–>博客

下面的操作將以u(píng)buntu為例~

搜索/查看/添加/刪除鏡像

  • 搜索鏡像:docker search ubuntu
  • 下載鏡像:docker pull ubuntu
  • 查看已經(jīng)下載的所有鏡像:docker images
  • 刪除鏡像:

啟動(dòng)新容器

  • docker run -i -t ubuntu:latest

其中參數(shù)-i指交互式,-t指臨時(shí)終端


我個(gè)人感覺(jué)與其說(shuō)是啟動(dòng)容器,不如說(shuō)是創(chuàng)建一個(gè)新的容器,因?yàn)槊看斡蒙厦娴闹噶顒?chuàng)建的容器都是不同的,在這里就不得不提一下踩的一個(gè)坑:假設(shè)我們先創(chuàng)建了一個(gè)容器并進(jìn)行改動(dòng),下次如果還想使用這個(gè)改動(dòng)過(guò)的容器不應(yīng)該使用docker run 而是docker start,這個(gè)我們后面再提~
由于我們沒(méi)有為這個(gè)容器命名,所以docker為這個(gè)容器分配了一個(gè)隨機(jī)id,也就是上面圖片中的d8a37fb0aaf8

退出當(dāng)前容器

  • 在容器的終端中輸入exit或者ctrl+D
  • (這個(gè)就不截圖了吧,,,,)

查看容器

  • docker ps :列出當(dāng)前所有正在運(yùn)行的container
  • docker ps -l:列出最近一次啟動(dòng)的container
  • docker ps -a :列出所有的container(包含歷史,即運(yùn)行過(guò)的container)
  • docker ps -q :列出最近一次運(yùn)行的container ID

根據(jù)上面的docker ps -a命令我們可以看到我已經(jīng)創(chuàng)建過(guò)兩個(gè)容器。

啟動(dòng)并進(jìn)入容器

上面我提到,如果我在一個(gè)容器里面進(jìn)行了修改并退出,那么當(dāng)我下次docker run的時(shí)候并不會(huì)進(jìn)入這個(gè)我修改過(guò)的容器而是創(chuàng)建一個(gè)新的容器,大家可以嘗試一下下面的代碼:

docker run -i www.longboshyl.cn www.fengshen157.com -t ubuntu:www.dfgjpt.com/ latest /bin/bash # 創(chuàng)建一個(gè)容器 # 下面的操作是在容器中的操作 touch /home/test.txt # 在新容器的home目錄下創(chuàng)建一個(gè)test.txt文件夾 exit # 退出當(dāng)前容器 docker run -i -t www.zhongdayule.cn/ ubuntu:latest /bin/bash # 再創(chuàng)建一個(gè)容器 # 下面的操作是在容器中的操作 cd /home # 進(jìn)入home目錄 ls # 查看home目錄下的所有內(nèi)容,(當(dāng)然是空的)

這是為什么呢~因?yàn)椴煌娜萜饔凶约邯?dú)立的改動(dòng)層,不同的容器是不互通數(shù)據(jù)滴~
所以如果我們要使用一個(gè)容器的時(shí)候要執(zhí)行的命令是docker start [容器名/容器id],當(dāng)然在執(zhí)行這條命令之后是沒(méi)有任何反應(yīng)的,還要再加上一條docker attach [容器名/容器id],也可以使用docker exec -i -t [容器id] /bin/bash,->看圖

創(chuàng)建命名的容器

上面我們進(jìn)行的所有操作都是通過(guò)容器id進(jìn)行的,但是這樣很繁瑣,如果創(chuàng)建了多個(gè)容器可能會(huì)混亂,在docker run的時(shí)候我們就可以進(jìn)行命名

docker run docker run -i -t ubuntu:latest /bin/bash

?

轉(zhuǎn)載于:https://www.cnblogs.com/qwangxiao/p/9744180.html

總結(jié)

以上是生活随笔為你收集整理的docker 初体验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。