1. 程式人生 > 實用技巧 >Azure Application Insight (2) Azure Function 設定Application Insight

Azure Application Insight (2) Azure Function 設定Application Insight

搜尋映象

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中的每一步都執行