0x00
快過年了,單位也沒什麼事情,研究了下docker這個go語言的編寫的東西,並將使用過程中的注意點和常用的操作來與大家分享一下
docker這款應用其實已經發布很久了,2023年出了windows版本 從1.3後的一些改動也使得它越來越方便了
下面的命令都是基於ubuntu來操作的(自己的有道筆記直接貼上過來)
0x01
docker基礎命令
關於docker安裝:
ubuntu使用指令碼安裝docker
wget -qo- | sh
centos安裝docker
yum -y install docker
centos使用指令碼安裝docker
yum update
curl -fssl | sh
windows安裝docker
更新udo apt-get install lxc-docker
查docker資訊
sudo docker info
sudo docker logs -f +名字
容器操作基礎命令 (sudo docker run +)
-p 80(本地埠):80(容器程序占用埠)
綁到特定的網路介面
-p +主機ip :80:80
-p +主機ip ::80 繫結在隨機埠
-v $pwd(掛載的本地檔案路徑) :www/html(容器的檔案路徑)
-i -t ubuntu:15.10 /bin/bash 載入乙個帶有互動式shell的映象到容器
-d tomcat 載入乙個守護程序
-namd xx 給容器賦予名字
dokcer start+名字
docker stop+名字
docker kill +名字
docker rm +名字 (刪除容器)
docker top+名字(檢視容器內程序)
檢視docker詳細資訊
sudo docker inspect +名字
sudo docker inspect --format '}' 名字
sudo docker inspect --format '}' 名字
在容器內執行程序
sudo docker exec -i -t 「容器id」 bash(前台方式)
sudo docker exec -d tomcat touch /www/index.php(後台方式-守護程序較多)
自動重啟容器
sudo docker run --restart=always/on-failure:5
看容器埠在本地對映情況
sudo docker port id 80(容器程序自己的埠)
關於映象
docker images 檢視所有的可用的本地映象
docker search +映象名字
拉取乙個映象
docker pull +應用短標籤
commit方法建立乙個映象
$ sudo docker commit -m="a new custom image" --author="james turnbull" \ 4aab3ce3cb76 jamtur01/apache2:webserver
docker file的方法提交乙個映象
在映象目錄中建立dockerfile檔案
########################
#version
from ubuntu:15.10(呼叫的映象)
maintainer pygain "[email protected]"
run apt-get update
########################
build新的映象
進入映象目錄當中
sudo docker build -t "(映象名字):tags(短標籤)" (--no-cache)
上傳映象到docker hub
註冊賬號,後create乙個自己的public倉庫
sudo docker push 映象名字:短標籤
0x02
dockerfile檔案內引數值
cmd:
指定乙個容器啟動時候要執行的命令,不同於run是在容器層被構建的時候執行
cmd ["/bin/bash","-l"] 將-l引數給予命令 /bin/bash
dockerfile中只能指定一條cmd,再多的會覆蓋,在docker run 這個映象的過程中如果存在其他的引數,則該引數會覆蓋dockerfile當中的cmd[""]命令
entrypoint:
與cmd用法相同,但是docker run 的時候只會覆蓋相同命令
組合:entrypoint ["/usr/sbin/nginx"] cmd ["-h"]
docker run 引數會給予nginx程序 ,沒有則預設引數 -h
確實需要,你也可以在執行時通過docker run的--entrypoint標誌覆蓋entrypoint指令。
workdir:
當新的容器層啟動的時候 設定下一步工作的目錄
workdir www/html
docker run -w +工作目錄 進行覆蓋
env:
env指令用來在映象的構建過程中設定環境變數
env rvm_path /home/rvm/
workdir $target_dir
docker run -e "/home/rvm" 進行覆蓋
user:
基於該映象的容器會以說明樣的身份去啟動
user admin
user 00 (uid)
user xw:admin(admin組下的使用者)
docker run -u "xw:admin" 進行覆蓋
volume:
用來向容器增加卷(特定目錄)
卷可以在容器間共享和重用。
乙個容器可以不是必須和其他容器共享卷。
對捲的修改是立時生效的。
對捲的修改不會對更新映象產生影響。
捲會一直存在直到沒有任何容器再使用它。
卷功能讓我們可以將資料(如源**)、資料庫或者其他內容新增到映象中而不是將這些內容提交到映象中,並且允許我們在多個容器間共享這些內容
volume ["/opt/project","/data"] 建立兩個在容器當中的掛載點
add:
將構建上下文中的檔案或者目錄,外界的url都複製到映象的目標目錄當中
add /root/wordpress.zip
add latest.tar.gz /var/www/wordpress/ (源歸檔型別檔案將被分解儲存)
******這種對檔案的新增或減少的操作自然也會使得之前的構建快取變得無效*****
copy
copy conf.d/ /etc/apache2/
不對原始檔進行提取或解壓
只進行複製操作
本地檔案
都放到和dockerfile 同乙個目錄下。不能複製該目錄之外的任何檔案,因為構建環境將會上傳到docker守護程序,而複製是在docker守護程序中進行的。任何位於構建環境之外的東西都是不可用的。copy指令的目的位置則必須是容器內部的乙個絕對路徑。
onbuild :
當該映象被用作其他映象的基礎映象的時候,該映象的觸發器會被執行
可以看做from +基礎映象名字 執行後馬上執行
當我們用這函式建立模板之後 所有以這個為基礎映象的build過程都會在from之後馬上執行onbuild 後邊的**
只會在子映象當中觸發 不會在子孫映象當中觸發
0x03
docker常用命令集合
sudo yum install docker 啟動docker,並註冊開機服務 sudo service docker start sudo chkconfig docker ondocker images 列出本地主機上的映象 docker images a 列出本地所有的映象 含中間映像層 q...
Docker常用命令集合
1 查詢命名空間下的pod 其中ns為namespace kubectl get pods n ns grep rest 也可以不指定命名空間進行搜尋 2 進入pod容器 其中wdk rest為podname kubectl n ns exec it wdk rest bash 3 檢視pod描述資...
mysql命令集合
測試環境 mysql 5.0.45 注 可以在mysql中通過mysql select version 來檢視資料庫版本 整理 leo 一 連線mysql。格式 mysql h主機位址 u使用者名稱 p使用者密碼 1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵...