Azure Application Insight (2) Azure Function 設定Application Insight
阿新 • • 發佈:2020-07-14
搜尋映象
docker search centos #搜尋映象,預設是到官方的映象倉庫中搜索;不帶版本號預設是latest,可以搜尋指定版本號,centos:7.2.1511
下載映象
https://hub.docker.com/ #docker官方倉庫地址
docker pull ubuntu:19.10 #去官方倉庫中下載映象,不指定tags,預設下載latest docker pull hello-world #使用docker run -it hello-world執行,檢查當前docker是否正常,單次執行 可以去指定地址下載docker映象: docker pull 伺服器域名:80/專案名稱/映象名稱:tag號 注意事項: 下載映象時,如果不指定tags號,則預設下載的是latest,當以後再次下載時,官方的最新版本已經升級,如果還不指定版本號進行下載,則下載時,會看到本地映象有latest,就會使用本地的映象,不會去官方下載最新的了,所以下載映象時最好指定版本號。
檢視本地映象
docker images #檢視本地映象
注意事項:
映象的REPOSITORY與TAG為none,表示後期匯入或者製作的映象與之前已經存在的映象的REPOSITORY和TAG衝突,從而把之前的映象覆蓋而導致的,有很少一部分是從網際網路下載下來就是這樣。
映象匯出
可以將映象從本地匯出為一個壓縮檔案,然後複製到其他伺服器進行匯入使用。 docker save --help #檢視匯出映象的幫助 docker load --help #檢視匯入映象的幫助 匯出方法1: docker save nginx:1.16.1 -o /opt/nginx.tar.gz 匯出方法2: docker save nginx:1.16.1 > /opt/nginx.tar.gz #使用輸出重定向的方法 匯入方法1: docker load -i nginx.tar.gz 匯入方法2: docker load < mysql.tar.gz #使用輸入重定向匯入映象壓縮檔案
刪除映象
docker rmi 映象ID #指定映象的ID,或者指定,如:nginx:1.16.1;通過映象啟動的容器,映象不能被刪除,除非將容器刪除
docker rmi -f 映象ID #強制刪除映象,包括有容器正在使用的映象,但不建議使用此引數,推薦是容器被刪除之後,再刪除映象
docker rmi `docker images | grep none | awk '{print $3}'` #刪除所有名稱及tag為none的映象
刪除容器
docker rm -fv 容器ID/容器名稱 #-f是強制刪除,-v是刪除容器執行時生成的資料目錄,-f可以刪除正在執行的容器 docker rm -v 容器ID/容器名稱
建立容器及埠對映
docker run -d -it -p 80:80 nginx:1.16.1 #建立並執行容器;-d是在當前宿主機後臺執行容器,-i是識別當前標準輸入,-t是分配一個tty,-p是把宿主機80對映到容器的80埠;指定映象,如果本地有映象使用本地,如果本地沒有,去官網下載
docker run -it -P -d nginx bash #建立容器並進入容器;bash指令會代替官方預設的指令
docker run -it -P -d nginx #建立並啟動容器;-P是把宿主機的隨機埠對映到容器的80
docker run -it -d --name linux-web -p 80:80 nginx:1.16.1 #建立容器時,指定容器的名稱
docker run -it -d -p 172.168.3.100:80:80 nginx:1.16.1 #指定把宿主機固定地址的80對映到容器80
docker run -it -d -p :80 nginx:1.16.1 #宿主機的隨機埠對映給容器的80
docker run -it -d -p 172.168.3.100::80 nginx:1.16.1 #宿主機的固定IP的隨機埠對映到容器的80
docker run -it -d -p 8553:53/udp nginx:1.16.1 #把udp協議對映給容器
docker run -d -it -p 80:80/tcp -p 443:443/tcp nginx #對映多個埠與協議
docker port 容器名稱/容器ID #檢視某個容器的埠對映
docker run -it mysql echo linux #建立容器,容器建立後執行容器,執行列印linux命令後退出容器
docker run -it mysql tail -f /etc/hosts #可以讓容器一直在當前宿主機終端執行
顯示正在執行的容器
docker ps #檢視本地正在執行的容器
docker ps -a #檢視本地所有容器
docker start 容器ID/容器名稱 #啟動容器
docker stop 容器ID/容器名稱 #停止容器
docker pause 容器ID/容器名稱 #暫停容器
docker unpause 容器ID/容器名稱 #取消暫停
容器狀態:
Created:容器建立後,由於啟動引數錯誤,沒有啟動成功的
Exited:已經退出的容器,可以再次啟動
Up:正在執行的容器
單次執行容器
docker ps -a -q #列出所有容器的ID
docker rm -fv $(docker ps -a -q) #刪除所有容器
docker run --rm -it -p 80:80 nginx #建立並執行容器,ctrl+c退出容器後,會自動刪除容器
給容器傳遞執行命令
容器需要有一個前臺執行的程序才能保持容器的執行(程序的PID通常為1),通過傳遞執行引數是一種方式,另外也可以在構建映象的時候指定容器啟動時執行的前臺命令。
容器裡,不能使用systemd作為PID為1的守護程序,因為容器裡沒有kernel,所以沒有使用systemd啟動服務的環境;這就要求容器裡必須有一個程序一直執行下去,這個程序會被封裝成PID為1的守護程序。
docker run -it nginx echo 123456 #建立完執行列印123456命令後,就回收容器,不在執行nginx預設啟動命令
docker run -it nginx nginx "-g daemon off;" #讓nginx程序一直在容器前臺執行
注意事項:
建立容器時,傳遞命令的優先順序高於映象中預設命令的優先順序
進入到正在執行的容器
attach
docker run -it centos bash
另一個終端執行:
docker attach 容器ID
attach需要容器有bash環境,才可以進入,並且一個終端的操作,另一個終端也可以看見,並且attach終端執行exit後,容器也將退出,不建議使用此進入容器的方法
exec
docker exec -it 容器ID bash #進入容器;-i識別標準輸入,-t表示分配一個tty,指定容器的ID,指定以bash進入
nsenter
docker inspect 容器ID #檢視指定容器的所有屬性資訊
docker inspect -f "{{.State.Pid}}" 容器ID #-f指定查詢的具體層級,從上往下一層層查詢,查詢到指定容器在當前宿主機的PID編號
nsenter -t 容器PID -m -u -i -n -p #進入容器;-t指定容器的PID,後面選項是指定各種namespace
注意事項:
centos需要安裝nsenter,yum install util-linux -y;ubuntu自帶nsenter
nsenter指令碼登入:
#!/bin/bash
docker_in() {
docker_id=$1
docker_pid=$(docker inspect -f "{{.State.Pid}}" $1)
nsenter -t $docker_pid -m -u -i -n -p
}
docker_in $1
批量啟動、停止容器
docker start $(docker ps -a -q) #批量啟動容器
docker stop $(docker ps -a -q) #批量停止容器
docker kill $(docker ps -a -q) #強制關閉所有容器
docker ps -a -q -f status=exited #取出已經關閉的容器ID
docker rm -fv $(docker ps -a -q -f status=exited) #刪除所有已經關閉的容器
指定容器DNS
docker run -it -d --dns 192.168.3.254 nginx #建立容器,指定容器的DNS伺服器地址
其它常用命令
docker version #檢視docker版本
docker run -it -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.46 #執行mysql映象時,需要輸入mysql的root密碼,使用-e指定引數
docker info #檢視docker相關資訊
docker top 容器ID #檢視單機指定容器的執行狀態
docker stats #檢視單機容器的資源利用率
docker logs 容器ID #檢視單個容器的日誌;可以新增-f,一直跟蹤檢視
建立映象
docker build -t 映象名稱:TAG號 Dockerfile檔案路徑
docker build --no-cache -t 映象名稱:TAG號 Dockerfile檔案路徑 #建立映象時,不使用快取,Dockerfile中的每一步都執行