mkdir /home/app #在home目錄新增app目錄
mkdir -p /home/app/test #在/home/app目錄新增test目錄,如果app目錄不存在,則創建
(要注意絕對路徑和相對路徑的區別,絕對路徑,根路徑從/開始)
cd / #進入根目錄
cd /service #進入 '/ service' 目錄
cd .. #返回上一級目錄
cd ../.. #返回上兩級目錄
cd - #返回上次所在的目錄
rm readme.txt #刪除readme.txt文件,刪除前會需要確認
rm -f readme.txt #刪除readme.txt文件,無需確認,強制刪除
rm -rf /home/app/* #遞歸刪除目錄下所有文件,無需確認,強制刪除(刪除文件夾要加參數 -r)
touch /home/readme.txt #在home目錄新增readme.txt文件
vi /home/readme.txt #普通文本編輯
vim /home/readme.txt #格式化編輯,適合編輯代碼等文件
mv readme.txt /service #將readme.txt文件移動到/service
cp readme.txt /service #將readme.txt文件復制到/service
cp -r /home/app /service #將app目錄復制到service
cat readme.txt #查看文件內容
head -n 2 readme.txt #查看文件前兩行
tail -n 2 readme.txt #查看文件後兩行
find / -name readme #從根目錄查找名字包含為readme的文件
find /service -name readme #從某目錄查找名字包含為readme的文件
grep 關鍵字 /service/readme.txt #檢索readme.txt中存在關鍵字的行文本
-A :所有的進程均顯示出來
-a :不與terminal有關的所有進程
-u :有效用戶的相關進程
-x :一般與a參數一起使用,可列出較完整的信息
-l :較長,較詳細地將PID的信息列出
ps aux #查看所有用戶有效進程的詳細信息
ps aux | grep docker #查看與docker有關進程的詳細信息
kill -9 pid (-9表示強制關閉,一般先通過ps aux 找到進程pid)
linux下的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,按m 表示按內存佔用排序,按c 表示按cpu佔用排序(按 Ctrl+c 退出)
top
netstat -tln
df -h
free -m #以兆為單位顯示,-h的話就是以G為單位
Ⅱ 如何查看 Docker 新版本中容器的名字空間
熟悉 Linux 技術的人都知道,容器只是利用名字空間進行隔離的進程而已,Docker 在容器實現上也是利用了 Linux 自身的技術。
有時候,我們需要在宿主機上對容器內進行一些操作,當然,這種繞過 Docker 的操作方式並不推薦。
如果你使用的是比較新的 Docker 版本,會尷尬的發現,直接使用系統命令,會無法訪問到容器名字空間。
這里,首先介紹下「 ip netns」 系列命令。這些命令負責操作系統中的網路名字空間。
首先,我們使用 「add」 命令創建一個臨時的網路名字空間。
ip netns add test
然後,使用 show 命令來查看系統中的網路名字空間,會看到剛創建的 test 名字空間。
ip netns show test
另外,一個很有用的命令是 exec,會在對應名字空間內執行命令。例如
ip netns exec test ifconfig
使用 del 命令刪除剛創建的 test 名字空間。
ip netns del test
接下來運行一個 Docker 容器,例如
docker run -it ubuntu
再次執行 ip netns show命令。很遺憾,這里什麼輸出都沒有。
原因在於,Docker 啟動容器後仍然會以進程號創建新的名字空間,但在較新的版本裡面,默認刪除了系統中的名字空間信息文件。
網路名字空間文件位於 /var/run/netns 下面,比如我們之前創建的 test 名字空間,則在這個目錄下有一個 test 文件。諸如 netns 類似的系統命令依靠這些文件才能獲得名字空間的信息。
在容器啟動後,查看這個目錄,會發現什麼都沒有。
OK,那讓我們手動重建它。
首先,使用下面的命令查看容器進程信息,比如這里的1234。
docker inspect --format='{{. State.Pid}} ' container_id 1234
接下來,在 /proc 目錄(保存進程的所有相關信息)下,把對應的網路名字空間文件鏈接到 /var/run/netns 下面
ln -s /proc/1234/ns/net /var/run/netns/
然後,就可以通過正常的系統命令來查看或訪問容器的名字空間了。例如
ip netns show 1234 ip netns exec 1234 ifconfig eth0 172.16.0.10/16...
Ⅲ 阿里雲ECS伺服器安裝docker詳細步驟
環境:ECS伺服器,務必使用CentOS 7 以上版本,64位系統推薦是CentOS 7.8
安裝步驟:
一:安裝docker所需的環境
1.安裝依賴:yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置yum源 使用國內的:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.查看docker版本:yum list docker-ce --showplicates | sort -r
二:安裝docker
注意:不使用1.13.1版本,該版本在jenkins使用docker命令時會說找不到配置文件
1.安裝docker:yum -y install docker-ce-20.10.10-3.el7
2.查看docker版本:docker -v
3.啟動docker:systemctl start docker
4.查看docker 啟動狀態:systemctl status docker
5.檢查安裝結果:docker info
運行Docker守護進程:systemctl start docker
停止Docker守護進程:systemctl stop docker
重啟Docker守護進程:systemctl restart docker
6.查看容器:docker ps
7.停止容器:docker stop 容器id
三:修改鏡像倉庫:
vim /etc/docker/daemon.json
添加如下內容:
{
"debug":true,"experimental":true,"registry-mirrors":["https://pb5bklzr.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.e.cn"]
}
8.查看信息:docker info
僅供個人學習使用,如有不足請指出。
願景:願天下所有程序員能早日財富自由,永不搬磚!
Ⅳ 怎麼查看docker是否安裝成功
Docker 提供了一個可以運行你的應用程序的封套(envelope),或者說容器。它原本是 dotCloud 啟動的一個業余項目,並在前些時候開源了。它吸引了大量的關注和討論,導致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 語言編寫的,它就相當於是加在 LXC(LinuX Containers,linux 容器)上的管道,允許開發者在更高層次的概念上工作。
Docker 擴展了 Linux 容器(Linux Containers),或著說 LXC,通過一個高層次的 API 為進程單獨提供了一個輕量級的虛擬環境。Docker 利用了 LXC, cgroups 和 Linux 自己的內核。和傳統的虛擬機不同的是,一個 Docker 容器並不包含一個單獨的操作系統,而是基於已有的基礎設施中操作系統提供的功能來運行的。這里有一個 Stackoverflow 的答案,裡面非常詳細清晰地描述了所有 Docker 不同於純粹的 LXC 的功能特性
Docker 會像一個可移植的容器引擎那樣工作。它把應用程序及所有程序的依賴環境打包到一個虛擬容器中,這個虛擬容器可以運行在任何一種 Linux 伺服器上。這大大地提高了程序運行的靈活性和可移植性,無論需不需要許可、是在公共雲還是私密雲、是不是裸機環境等等。
Docker 由下面這些組成:
1. Docker 伺服器守護程序(server daemon),用於管理所有的容器。
2. Docker 命令行客戶端,用於控制伺服器守護程序。
3. Docker 鏡像:查找和瀏覽 docker 容器鏡像。
Ⅳ centos7怎麼安裝docker
安裝docker
1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
$ uname -r
2、使用 root 許可權登錄 Centos。確保 yum 包更新到最新。
$ sudo yum update
3、卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、設置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
$ yum list docker-ce --showplicates | sort -r
7、安裝docker
$ sudo yum install docker-ce #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、啟動並加入開機啟動 《Linux就該這么學》
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
$ docker version
Ⅵ 超值一篇分享,Docker:從入門到實戰過程全記錄
作者 | 天元浪子
來源 | CSDN博客
想要真正理解Docker,就不得不從虛擬化技術的發展歷程說起。普遍認為虛擬化技術經歷了物理機時代、虛擬機時代,目前已經進入到了容器化時代。可以說,Docker是虛擬化技術不斷發展的必然結果。
那麼,什麼是容器呢?容器和虛擬機有什麼不同?Docker和容器又是什麼關系呢?搞明白這幾個問題,Docker的概念就清晰了。
1.1 虛擬機和容器
藉助於VMWare等軟體,可以在一台計算機上創建多個虛擬機,每個虛擬機都擁有獨立的操作系統,可以各自獨立的運行程序。這種分身術雖然隔離度高(操作系統級),使用方便(類似物理機),但佔用存儲資源多(GB級)、啟動速度慢(分鍾級)的缺點也是顯而易見的。
相較於虛擬機,容器(Container)是一種輕量型的虛擬化技術,它虛擬的是最簡運行環境(類似於沙盒)而非操作系統,啟動速度快(秒級)、佔用存儲資源少(KB級或MB級),容器間隔離度為進程級。在一台計算機上可以運行上千個容器,這是容器技術對虛擬機的碾壓式優勢。
1.2 容器、鏡像和Docker
Docker是一個開源的應用容器引擎,可以創建容器以及基於容器運行的程序。Docker可以讓開發者打包他們的應用和依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化。
聽起來很簡單,但是在Docker和容器之間,還隱藏著一個鏡像的概念,令初學者頗感困惑。本質上,Docker鏡像是一個特殊的文件系統,它提供容器運行時所需的程序、庫、資源、配置等文件。Docker鏡像類似於一個py文件,它需要Docker的運行時(類似於python解釋器)運行。鏡像被運行時,即創建了一個鏡像的實例,一個實例就是一個容器。
1.3 Docker 和 k8s
作為容器引擎,Docker為容器化的應用程序提供了開放的標准,使得開發者可以用管理應用程序的方式來管理基礎架構,實現快速交付、測試和部署代碼。隨著容器的大量使用,又產生了如何協調、調度和管理容器的問題,Docker的容器編排應運而生。
k8s是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理,是一個開源的,用於管理雲平台中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,k8s提供了應用部署、規劃、更新、維護的一種機制。
Docker和k8sr都是以containerd(容器化標准)作為運行時,因此使用Docker創建的鏡像完全可以在k8s中無障礙的使用。
2.1 在ubuntu中安裝
在linux系統中安裝Docker非常簡單,官方為我們提供了一鍵安裝腳本。這個方法也適用於Debian或CentOS等發行版。
安裝過程如果出現超時,不要灰心,多試幾次,總會成功的。安裝完成後,Docker只能被root用戶使用,可以使用下面的命令取消許可權限制:
然後,重啟docker服務:
最後,關閉當前的命令行,重新打開新的命令行就可以了。
順便提一下,如果在CentOS下安裝,可能會出現一堆類似於下面的錯誤:
這是由於docker和Podman沖突造成的,需要先卸載Podman:
2.2 在Win10中安裝
Docker的運行,依賴linux的環境,官方提供了Docker Desktop for Windows,但是它需要安裝Hyper-V,Hyper-V是微軟開發的虛擬機,類似於 VMWare 或 VirtualBox,僅適用於 Windows 10。這個虛擬機一旦啟用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本將無法使用!如果你必須在電腦上使用其他虛擬機(例如開發 Android 應用必須使用的模擬器),請不要使用 Hyper-V!
我的電腦是win10家庭版,不能直接安裝hyper-v,需要將下面的命令保存到cmd文件中:
然後在cmd文件上點擊右鍵,選擇使用管理員運行。執行完畢後會重啟,在重啟的過程中進行安裝。
2.3 Hello world
docker服務啟動的情況下,運行下面的命令:
此命令的含義是:
第一次運行時,因為本地沒有ubuntu:20.04鏡像,docker會自動從鏡像伺服器下載。下載過程可能需要多試幾次,只要成功一次,以後執行就不再需要下載了。
docker官方還提供了一個hello-world鏡像,可以直接運行:
此命令省略了鏡像版本和運行參數,docker使用latest作為版本,即最新版本。
從hello world的例子中,也可以體驗到,docker實例的運行是非常快的。
docker官方的鏡像庫比較慢,在進行鏡像操作之前,需要將鏡像源設置為國內的站點。
新建文件/etc/docker/daemon.json,輸入如下內容:
然後重啟docker的服務:
3.1 列出本地所有鏡像
執行命令 docker images 可以查看
當前我本地只有剛才安裝的兩個鏡像。
3.2 從鏡像庫中查找鏡像
執行命令 docker search 鏡像名稱可以從docker鏡像庫中查找鏡像。
最好選擇官方(OFFICIAL)的鏡像,這樣的鏡像最穩定一些。
3.3 下載新的鏡像
執行命令docker pull 鏡像名稱:版本號即可下載新的鏡像。
鏡像下載後,就可以使用鏡像來創建容器了。
4.1 啟動容器
執行命令docker run即可啟動容器,也就是創建某個鏡像的實例。docker run命令非常復雜,可以先執行一個docker run --help來查看幫助:
比如我們要執行python的shell,需要添加-it參數,即:docker run -it python:3.8
4.2 將宿主機的文件掛載到容器
docker容器與宿主機是隔離的,要想讓容器內的程序能訪問宿主機上的文件,需要通過-v參數將宿主機的文件掛載到容器中。
比如我們在宿主機上有一個hello.py,可以列印hello,想要在python容器中執行,就需要進行掛載。-v後還需要接兩個參數,分別是宿主機的目錄和容器內的目錄,兩者使用:分隔,路徑必須都是絕對路徑。
我的hello.py保存在主目錄的/docker_test目錄中,將這個目錄掛載到容器的/docker_test目錄,然後在容器內執行python /docker_test/hello.py:
4.3 容器的埠映射
我們修改一下hello.py,創建一個socket服務端,並監聽5000埠,當有客戶端連接時,列印客戶端的地址,先客戶端發送hello,然後關閉連接:
在容器內執行:
接下來,嘗試用telnet命令連接,結果卻是失敗的。原因是,127.0.0.1是宿主機的ip地址,5000是容器的埠,這與我們的習慣稍微有些不同。事實上,docker的容器是非常輕量的,它並沒有自己的網路,要想訪問容器的埠,需要進行埠映射,將容器的某埠映射到宿主機的埠,客戶端連接時,只要與宿主機的埠進行連接就可以了。
需要注意的是,上面的代碼創建的伺服器,無論如何也不可能被客戶端連接,因為代碼中綁定了127.0.0.1的ip,在容器中運行時,需要綁定所有ip,即0.0.0.0。
然後,再使用-p參數,-p還需要三個參數,即宿主機的ip地址、宿主機的埠、容器的埠,三者之間使用:分隔。一般的,可以將宿主機的ip地址省略,只寫宿主機的埠:容器的埠即可。
這樣,就將容器的5000埠映射到了宿主機的5001埠,使用:
即可與容器中的伺服器進行連接。
4.4 容器管理
上面的服務運行之後,可以使用docker ps命令,查看運行中的容器:
顯示的內容有下面幾列:
要想結束容器,可以使用docker kill 容器ID命令。
一般而言,當我們的程序開發完成後,會連同程序文件與運行環境一起製作成一個新的鏡像。
要製作鏡像,需要編寫Dockerfile。DockeFile由多個命令組成,常用的命令有:
注意,Docker鏡像中有一個層的概念,每執行一個RUN命令,就會創建一個層,層過多會導致鏡像文件體積增大。盡量在RUN命令中使用&&連接多條shell命令,減少RUN命令的個數,可以有效減小鏡像文件的體積。
5.1 自製顯示文本文件內容鏡像
編寫cat.py,接收一個文件名,由python讀取文件並顯示文件的內容:
這個例子比較簡單,縮寫Dockerfile如下:
這個Dockerfile的含義是:
需要說明的是,ENTRYPOINT有兩種寫法:
這里採用第二種寫法,是因為我們要在外部給容器傳遞參數。執行命令編譯Docker鏡像:
這個命令中,-t的含義是目標,即生成的鏡像名為hello,版本號為1.0,別忘了最後那個.,這叫到上下文路徑,是指 docker 在構建鏡像,有時候想要使用到本機的文件(比如復制),docker build 命令得知這個路徑後,會將路徑下的所有內容打包。
這樣,我們的第一個鏡像就製作完成了,使用下面的命令執行它:
即可看到~/docker_test/cat/files/test.txt的內容。
5.2 自製web伺服器鏡像
我們使用tornado開發一個網站,而python的官方鏡像是沒有tornado庫的,這就需要在製作鏡像時進行安裝。
測試的ws.py如下:
編寫Dockerfile文件如下:
在此我們驗證一下CMD與ENTRYPOINT的區別。在Dockerfile所在有目錄下執行如下命令:
執行完成後,再使用docker images使用就可以看到生成的鏡像了,然後使用下面的命令運行:
在瀏覽器中輸入宿主機的ip和8000埠,就可以看到頁面了。
在這個例子中,我使用的運行命令是CMD,如果在docker run中指定的其他的命令,此命令就不會被執行,如:
此時,容器中被執行的是python命令,而不是我們的服務。在更多情況下,我們希望在docker run命令中為我們的服務傳參,而不是覆蓋執行命令,那麼,我們應該使用ENTRYPOINT而不是CMD:
上面這種寫法,是不支持傳遞參數的,ENTRYPOINT和CMD還支持另一種寫法:
使用這種寫法,docker run命令中的參數才可以傳遞給hello.py:
這個命令中,--port=9000被作為參數傳遞到hello.py中,因此容器內的埠就成了9000。
在生產環境中運行時,不會使用-it選項,而是使用-d選項,讓容器在後台運行:
這種方式下,即使當前的控制台被關閉,該容器也不會停止。
5.3 自製apscheler服務鏡像
接下來,製作一個使用apscheler編寫的服務鏡像,代碼如下:
Dockerfile也是信手拈來:
生成鏡像:
應該可以運行了,文件復制需要兩個目錄,在運行時,可以使用兩次-v來掛載不同的目錄:
前面用到的官方python鏡像大小足足882MB,在這個基礎上,再安裝用到的第三方庫,添加項目需要的圖片等資源,大小很容易就超過1個G,這么大的鏡像,網路傳給客戶非常的不方便,因此,減小鏡像的體積是非常必要的工作。
docker hub上有個一python:3.8-alpine鏡像,大小隻有44.5MB。之所以小,是因為alpine是一個採用了busybox架構的操作系統,一般用於嵌入式應用。我嘗試使用這個鏡像,發現安裝一般的庫還好,但如果想安裝numpy等就會困難重重,甚至網上都找不到解決方案。
還是很回到基本的路線上來,主流的操作系統鏡像,ubuntu的大小為72.9MB,centos的大小為209MB——這也算是我更喜歡使用ubuntu的一個重要原因吧!使用ubuntu作為基礎鏡像,安裝python後的大小為139MB,再安裝pip後的大小一下子上升到了407MB,要是再安裝點其他東西,很容易就趕上或超過python官方鏡像的大小了。
看來,尋常路線是很難壓縮鏡像文件體積了。幸好,還有一條曲線救國的路可走,這就是多階段構建法。
多階段構建的思想其實很簡單,先構建一個大而全的鏡像,然後只把鏡像中有用的部分拿出來,放在一個新的鏡像里。在我們的場景下,pip只在構建鏡像的過程中需要,而對運行我們的程序卻一點用處也沒有。我們只需要安裝pip,再用pip安裝第三方庫,然後將第三方庫從這個鏡像中復制到一個只有python,沒有pip的鏡像中,這樣,pip佔用的268MB空間就可以被節省出來了。
1、在ubuntu鏡像的基礎上安裝python:
然後運行:
這樣,就生成了python:3.8-ubuntu鏡像。
2、在python:3.8-ubuntu的基礎上安裝pip:
然後運行:
這樣,就生成了python:3.8-ubuntu-pip鏡像。
3、多階段構建目標鏡像:
這個dockerfile需要解釋一下了,因為它有兩個FROM命令。
第一個是以python:3.8-ubuntu-pip鏡像為基礎,安裝numpy,當然,在實際應用中,把所有用到的第三方庫出寫在這里。
第二個FROM是以FROM python:3.8-ubuntu鏡像為基礎,將第三方庫統統復制過來,COPY命令後的–from=0的意思是從第0階段進行復制。實際應用中再從上下文中復製程序代碼,添加需要的ENTRYPOINT等。
最後,再運行:
這然,用於我們項目的鏡像就做好了。比使用官方python鏡像構建的版本,小了大約750MB。
到此,我們的鏡像已經製作好了,可是,鏡像文件在哪,如何在生產環境下運行呢?
剛才使用docker images命令時,已經看到了生成的鏡像:
我們可以使用docker save命令將鏡像保存到指定的文件中,保存的文件是一個.tar格式的壓縮文件:
將hello.tar復制到生產環境的機器上,然後執行導入命令:
就可以使用了。
Ⅶ 如何查看 docker 鏡像使用的linux 系統版本
安裝Docker藉助apt-get命令,安裝Docker是件輕而易舉的事。$ sudo apt-get install docker.io 為了允許非根用戶也可以運行Docker,將你自己添加到docker群組。下面這個命令會允許當前用戶運行Docker,無需根用戶許可權。
Ⅷ Linux下docker基礎環境搭建
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 報錯:curl: (6) Could not resolve host: get.docker.com; 未知的錯誤
# 解決:cat /etc/resolv.conf 里加了個 nameserver 8.8.8.8
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
驗證安裝:docker-compose --version
# compose 那個亞馬遜的老是下載不了,可換對應地址:
sudo curl -L https://get.cloud.io/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
查看docker版本: docker --version
啟動docker: systemctl start docker 或者 service docker start
停止docker: systemctl stop docker
查看docker鏡像文件: docker images
查看docker內容器: docker ps -a
修改 /etc/dockers 文件下的配置文件 daemon.json (配置作用參考附錄)
操作完成後需要重啟docker: systemctl restart docker
服務端安裝git:yum install git
拉取一下文件和命令:git clone http://172.16.1.35/demo/demo-dockers.git
查看本地和遠端版本:git branch -a
切換本地分支為dev:git checkout -b dev origin/dev
啟動docker:service docker start
後 執行文件中的shell:./init.sh all (包含:mysql,mongo,redis,solr,activemq,tomcat)
刪除多下載的鏡像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
進入某個容器:docker exec -it [CONTAINER ID] /bin/bash
查看某個容器進程:docker top [NAMES]
查看 demo-dockers 目錄下 java-runtime 文件位置下有對應幾個項目配置文件 application-alpha.yml
修改配置文件後,需要重新啟動對應java項目,執行啟動腳本 ./init-java-runtime.sh + [項目名或者all]
獲取鏡像文件的地址:http://172.18.5.112:5001/repository/demo/ 查找對應需要的鏡像包
更換鏡像文件: vi java-runtime.yml 內,image後的對應項目後跟的包名中
重啟對應項目: ./init-java-runtime.sh [項目名]
查看對應項目啟動log: docker logs -f --tail 500 [生成的容器名稱]
(容器重啟:docker restart [容器id或名稱])
{
"authorization-plugins": [],//訪問授權插件
"data-root": "",//docker數據持久化存儲的根目錄
"dns": [],//DNS伺服器
"dns-opts": [],//DNS配置選項,如埠等
"dns-search": [],//DNS搜索域名
"exec-opts": [],//執行選項
"exec-root": "",//執行狀態的文件的根目錄
"experimental": false,//是否開啟試驗性特性
"storage-driver": "",//存儲驅動器
"storage-opts": [],//存儲選項
"labels": [],//鍵值對式標記docker元數據
"live-restore": true,//dockerd掛掉是否保活容器(避免了docker服務異常而造成容器退出)
"log-driver": "",//容器日誌的驅動器
"log-opts": {},//容器日誌的選項
"mtu": 0,//設置容器網路MTU(最大傳輸單元)
"pidfile": "",//daemon PID文件的位置
"cluster-store": "",//集群存儲系統的URL
"cluster-store-opts": {},//配置集群存儲
"cluster-advertise": "",//對外的地址名稱
"max-concurrent-downloads": 3,//設置每個pull進程的最大並發
"max-concurrent-uploads": 5,//設置每個push進程的最大並發
"default-shm-size": "64M",//設置默認共享內存的大小
"shutdown-timeout": 15,//設置關閉的超時時限(who?)
"debug": true,//開啟調試模式
"hosts": [],//監聽地址(?)
"log-level": "",//日誌級別
"tls": true,//開啟傳輸層安全協議TLS
"tlsverify": true,//開啟輸層安全協議並驗證遠程地址
"tlscacert": "",//CA簽名文件路徑
"tlscert": "",//TLS證書文件路徑
"tlskey": "",//TLS密鑰文件路徑
"swarm-default-advertise-addr": "",//swarm對外地址
"api-cors-header": "",//設置CORS(跨域資源共享-Cross-origin resource sharing)頭
"selinux-enabled": false,//開啟selinux(用戶、進程、應用、文件的強制訪問控制)
"userns-remap": "",//給用戶命名空間設置 用戶/組
"group": "",//docker所在組
"cgroup-parent": "",//設置所有容器的cgroup的父類(?)
"default-ulimits": {},//設置所有容器的ulimit
"init": false,//容器執行初始化,來轉發信號或控制(reap)進程
"init-path": "/usr/libexec/docker-init",//docker-init文件的路徑
"ipv6": false,//開啟IPV6網路
"iptables": false,//開啟防火牆規則
"ip-forward": false,//開啟net.ipv4.ip_forward
"ip-masq": false,//開啟ip掩蔽(IP封包通過路由器或防火牆時重寫源IP地址或目的IP地址的技術)
"userland-proxy": false,//用戶空間代理
"userland-proxy-path": "/usr/libexec/docker-proxy",//用戶空間代理路徑
"ip": "0.0.0.0",//默認IP
"bridge": "",//將容器依附(attach)到橋接網路上的橋標識
"bip": "",//指定橋接ip
"fixed-cidr": "",//(ipv4)子網劃分,即限制ip地址分配范圍,用以控制容器所屬網段實現容器間(同一主機或不同主機間)的網路訪問
"fixed-cidr-v6": "",//(ipv6)子網劃分
"default-gateway": "",//默認網關
"default-gateway-v6": "",//默認ipv6網關
"icc": false,//容器間通信
"raw-logs": false,//原始日誌(無顏色、全時間戳)
"allow-nondistributable-artifacts": [],//不對外分發的產品提交的registry倉庫
"registry-mirrors": [],//registry倉庫鏡像
"seccomp-profile": "",//seccomp配置文件
"insecure-registries": [],//非https的registry地址
"no-new-privileges": false,//禁止新優先順序(??)
"default-runtime": "runc",//OCI聯盟(The Open Container Initiative)默認運行時環境
"oom-score-adjust": -500,//內存溢出被殺死的優先順序(-1000~1000)
"node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],//對外公布的資源節點
"runtimes": {//運行時
"cc-runtime": {
"path": "/usr/bin/cc-runtime"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"–debug"]
}
}
}
服務端安裝git:yum install git
拉取一下文件和命令:git clone http://172.16.1.35/gchat/gaga-dockers.git
指定分支克隆git clone -b dev-1 http://172.16.1.35/gchat/gaga-dockers.git
查看本地和遠端版本:git branch -a
切換本地分支為dev:git checkout -b dev origin/dev
啟動docker:service docker start
後 執行文件中的shell:./init.sh all (順序:mysql,mongo,redis,solr,activemq,tomcat)
刪除多下載的鏡像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
進入某個容器:docker exec -it [CONTAINER ID] /bin/bash
查看某個容器進程:docker top [NAMES]
# 查看是否安裝了tomcat: rpm -qa | grep tomcat
# 查找文件:find / -name tomcat
# 切換Tomcat目錄:cd /usr/local/tomcat/bin
# 關閉Tomcat:./shutdown.sh
# 查看docker中的java版本:docker exec container_name java -version
git拉代碼:git clone [email protected]:gchat/gaga-server.git
查看遠端分支:git branch -r
創建本地dev分支 並切換到dev分支:git checkout -b dev origin/dev
查看本地分支:git branch
切換回眸分支:git checkout master
查看所有JDK在系統中位置:/usr/libexec/java_home -V
參考地址: https://www.runoob.com/docker/docker-command-manual.html
查找docker 安裝包:yum list installed | grep docker
停掉docker:systemctl stop docker
刪除對應文件:yum remove docker.x86_64 docker-client.x86_64 docker-common.x86_64 -y
查看下docker rpm源:rpm -qa | grep docker
刪除對應路徑:rm -rf /var/lib/docker
注釋:
本次也是由於業務需要,需要重新搭建新的測試伺服器,這也是搭建中的一個插曲,後續會使用 Jenkins 進行相關的持續集成,大家一起學習分享!~
Ⅸ Linux系統Docker命令怎麼用
下面是安裝 Docker 客戶端並在上面運行容器的簡單步驟。
1. 下載 Boot2Docker
在我們開始安裝之前,我們需要 Boot2Docker 的可執行文件。可以從 它的 Github 下載最新版本的 Boot2Docker。在這篇指南中,我們從網站中下載版本 v1.6.1。我們從那網頁中用我們喜歡的瀏覽器或者下載管理器下載了名為 docker-install.exe 的文件。
2. 安裝 Boot2Docker
現在我們運行安裝文件,它會安裝 Window Docker 客戶端、用於 Windows 的 Git(MSYS-git)、VirtualBox、Boot2Docker Linux ISO 以及 Boot2Docker 管理工具,這些對於開箱即用地運行全功能的 Docker 引擎都至關重要。
3. 運行 Boot2Docker
安裝完成必要的組件之後,我們從桌面上的「Boot2Docker Start」快捷方式啟動 Boot2Docker。它會要求你輸入以後用於驗證的 SSH 密鑰。然後會啟動一個配置好的用於管理在虛擬機中運行的 Docker 的 unix shell。
為了檢查是否正確配置,運行下面的 docker version 命令。
docker version
4. 運行 Docker
由於 Boot2Docker Start 自動啟動了一個已經正確設置好環境變數的 shell,我們可以馬上開始使用 Docker。請注意,如果我們要將 Boot2Docker 作為一個遠程 Docker 守護進程,那麼不要在 docker 命令之前加 sudo。
現在,讓我們來試試 hello-world 例子鏡像,它會下載 hello-world 鏡像,運行並輸出 "Hello from Docker" 信息。
$ docker run hello-world
5. 使用命令提示符(CMD) 運行 Docker
現在,如果你想開始用命令提示符使用 Docker,你可以打開命令提示符(CMD.exe)。由於 Boot2Docker 要求 ssh.exe 在 PATH 中,我們需要在命令提示符中輸入以下命令使得 %PATH% 環境變數中包括 Git 安裝目錄下的 bin 文件夾。
set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"
運行上面的命令之後,我們可以在命令提示符中運行 boot2docker start 啟動 Boot2Docker 虛擬機。
boot2docker start
注意: 如果你看到 machine does no exist 的錯誤信息,就運行 boot2docker init 命令。
然後復制上圖中控制台標出命令到 cmd.exe 中為控制台窗口設置環境變數,然後我們就可以像平常一樣運行 docker 容器了。
6. 使用 PowerShell 運行 Docker
為了能在 PowerShell 中運行 Docker,我們需要啟動一個 PowerShell 窗口並添加 ssh.exe 到 PATH 變數。
$Env:Path="${Env:Path};c:\Program Files (x86)\Git\bin"
運行完上面的命令,我們還需要運行
boot2docker start
這會列印用於設置環境變數連接到虛擬機內部運行的 Docker 的 PowerShell 命令。我們只需要在 PowerShell 中運行這些命令就可以和平常一樣運行 docker 容器。
7. 用 PUTTY 登錄
Boot2Docker 會在%USERPROFILE%.ssh 目錄生成和使用用於登錄的公共和私有密鑰,我們也需要使用這個文件夾中的私有密鑰。私有密鑰需要轉換為 PuTTY 的格式。我們可以通過 puttygen.exe 實現。
我們需要打開 puttygen.exe 並從 %USERPROFILE%.ssh\id_boot2docker 中導入("File"->"Load" 菜單)私鑰,然後點擊 "Save Private Key"。然後用保存的文件通過 PuTTY 用 [email protected]:2022 登錄。
8. Boot2Docker 選項
Boot2Docker 管理工具提供了一些命令,如下所示。
Ⅹ 如何查看 docker 鏡像使用的linux 系統版本
一、docker鏡像
要理解docker鏡像和docker容器之間的區別,確實不容易。
假設linux內核是第0層,那麼無論怎麼運行docker,它都是運行於內核層之上的。這個docker鏡像,是一個只讀的鏡像,位於第1層,它不能被修改或不能保存狀態。