久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    docker常用命令和docker-compose.yml常用參數詳解

     ala咪s 2019-09-03

    Docker基礎命令 

    docker exec –it 鏡像 /bin/bash 進入容器 
    docker logs 容器id 查看容器運行日志 
    docker version ## 顯示 Docker 版本和信息 
    docker info ##輸出docker應用的信息 
    docker inspect # 檢查 task 或 container 
    docker swarm命令 
    docker swarm leave –force # 從管理端關閉 swarm 的一個節點 
    docker swarm init 
    docker swarm join –-token :2377 
    docker pull 鏡像

    執行 Docker 鏡像 
    docker run hello-world 
    docker build -t friendlyhello . # 使用當前目錄下的 Dockerfile 創建鏡像 
    docker run -p 4000:80 friendlyhello # 運行鏡像 “friendlyname” mapping port 4000 to 80 
    docker run -d -p 4000:80 friendlyhello # 后臺運行鏡像,detached 模式 
    docker login # 用 Docker 憑證在當前 CLI 會話中登錄 
    docker tag username/repository:tag # 給要上傳到 registry 的鏡像打標記 
    docker push username/repository:tag # 將已經打標記的鏡像上傳到 registry 
    docker run username/repository:tag # 從 registry 運行鏡像

    docker清理命令 
    docker image prune 命令可以清理未使用的鏡像。通過 -a 標志可以刪除沒有被已有容器使用的所有鏡像,默認情況下,系統會提示是否繼續。要繞過提示,請使用 -f 或 –force 標志。 
    $ docker image prune -a –filter “until=24h”

    下面的命令只會刪除沒有 keep 標簽的卷: 
    $ docker volume prune –filter “label!=keep”

    下面的命令只會刪除 24 小時前創建的網絡: 
    $ docker network prune –filter “until=24h”

    docker system prune 命令是修剪鏡像、容器和網絡的快捷方式

    Docker的image命令 
    docker image ls 
    docker image ls -a # 列出所有鏡像 
    docker image rm # 刪除指定鏡像 
    docker image rm $(docker image ls -a -q) # 刪除所有鏡像

    Docker的container命令 
    列出 Docker 容器(運行中,所有的,quit 模式下所有的) 
    docker container ls 
    docker container ls –all 
    docker container ls -a # 列出所有的容器,包括不運行的 
    docker container ls -a –q 
    docker container stop # 友好的關閉指定容器 
    docker container kill # 強制關閉指定容器 
    docker container rm # 刪除指定容器 
    docker container rm $(docker container ls -a -q) # 刪除所有容器 
    docker container –help 
    docker的service命令 
    docker service ls # 列出運行的、關聯到應用的 service 
    docker service ps # 列出關聯到應用的任務 task 
    docker的stack命令 
    docker stack ls # 列出 stacks 或應用 
    docker stack deploy -c # 運行指定的 Compose 文件 
    docker stack rm # 關閉應用 
    docker-machine命令 
    docker-machine create –driver virtualbox myvm1 # 創建虛擬機(Mac, Win7, Linux) 
    docker-machine create -d hyperv –hyperv-virtual-switch “myswitch” myvm1 # Win10 
    docker-machine env myvm1 # 查看節點基本信息 
    docker-machine ssh myvm1 “docker node ls” # 列出 swarm 中的節點 
    docker-machine ssh myvm1 “docker node inspect ” # 檢查節點 
    docker-machine ssh myvm1 “docker swarm join-token -q worker” # 查看加入 swarm 的 token 
    docker-machine ssh myvm1 # 打開虛擬機的 SSH 會話,”exit” 退出 
    docker node ls # 在 swarm manager 登錄后,列出 swarm 中的節點 
    docker-machine ssh myvm2 “docker swarm leave” # 使 worker 退出 swarm 
    docker-machine ssh myvm1 “docker swarm leave -f” # 使 master 退出 swarm,關閉 swarm 
    docker-machine ls # 列出虛擬機,星號 表明當前會話在與哪臺虛擬機交流 
    docker-machine start myvm1 # 重啟停止運行的虛擬機 
    docker-machine env myvm1 # 查看 myvm1 的環境變量和命令eval $(docker-machine env myvm1) # Mac 命令,連接 shell 到 myvm1 
    & “C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe” env myvm1 | Invoke-Expression # Windows 命令,連接 shell 到 myvm1

    DockerCompose參數詳解 
    build 
    build 可以指定包含構建上下文的路徑: 
    1. version: ‘2’ 
    2. services: 
    3. webapp: 
    4. build: ./dir 
    或者,作為一個對象,該對象具有上下文路徑和指定的Dockerfile文件以及args參數值: 
    1. version: ‘2’ 
    2. services: 
    3. webapp: 
    4. build: 
    5. context: ./dir 
    6. dockerfile: Dockerfile-alternate 
    7. args: 
    8. buildno: 1 
    webapp服務將會通過./dir目錄下的Dockerfile-alternate文件構建容器鏡像。 
    如果你同時指定image和build,則compose會通過build指定的目錄構建容器鏡像,而構建的鏡像名為image中指定的鏡像名和標簽。 
    1. build: ./dir 
    2. image: webapp:tag 
    這將由./dir構建的名為webapp和標記為tag的鏡像。 
    context 
    包含Dockerfile文件的目錄路徑,或者是git倉庫的URL。 
    當提供的值是相對路徑時,它被解釋為相對于當前compose文件的位置。 該目錄也是發送到Docker守護程序構建鏡像的上下文。 
    dockerfile 
    備用Docker文件。Compose將使用備用文件來構建。 還必須指定構建路徑。 
    args 
    添加構建鏡像的參數,環境變量只能在構建過程中訪問。 
    首先,在Dockerfile中指定要使用的參數: 
    1. ARG buildno 
    2. ARG password 
    3. 
    4. RUN echo “Build number: buildno5.RUNscript?requiring?password.shbuildno”5.RUNscript?requiring?password.sh“password” 
    然后在args鍵下指定參數。 你可以傳遞映射或列表: 
    1. build: 
    2. context: . 
    3. args: 
    4. buildno: 1 
    5. password: secret 
    6. 
    7. build: 
    8. context: . 
    9. args: 
    10. - buildno=1 
    11. - password=secret 
    ** 注意:YAML布爾值(true,false,yes,no,on,off)必須用引號括起來,以便解析器將它們解釋為字符串。 
    image 
    指定啟動容器的鏡像,可以是鏡像倉庫/標簽或者鏡像id(或者id的前一部分) 
    1. image: redis 
    2. image: ubuntu:14.04 
    3. image: tutum/influxdb 
    4. image: example-registry.com:4000/postgresql 
    5. image: a4bc65fd 
    如果鏡像不存在,Compose將嘗試從官方鏡像倉庫將其pull下來,如果你還指定了build,在這種情況下,它將使用指定的build選項構建它,并使用image指定的名字和標記對其進行標記。 
    container_name 
    指定一個自定義容器名稱,而不是生成的默認名稱。 
    container_name: my-web-container 
    由于Docker容器名稱必須是唯一的,因此如果指定了自定義名稱,則無法將服務擴展到多個容器。 
    volumes 
    卷掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER) 或加上訪問模式 (HOST:CONTAINER:ro),掛載數據卷的默認權限是讀寫(rw),可以通過ro指定為只讀。 
    你可以在主機上掛載相對路徑,該路徑將相對于當前正在使用的Compose配置文件的目錄進行擴展。 相對路徑應始終以 . 或者 .. 開始。 
    1. volumes: 
    2. # 只需指定一個路徑,讓引擎創建一個卷 
    3. - /var/lib/mysql 
    4. 
    5. # 指定絕對路徑映射 
    6. - /opt/data:/var/lib/mysql 
    7. 
    8. # 相對于當前compose文件的相對路徑 
    9. - ./cache:/tmp/cache 
    10. 
    11. # 用戶家目錄相對路徑 
    12. - ~/configs:/etc/configs/:ro 
    13. 
    14. # 命名卷 
    15. - datavolume:/var/lib/mysql 
    · 15 
    但是,如果要跨多個服務并重用掛載卷,請在頂級volumes關鍵字中命名掛在卷,但是并不強制,如下的示例亦有重用掛載卷的功能,但是不提倡。 
    1. version: “3” 
    2. 
    3. services: 
    4. web1: 
    5. build: ./web/ 
    6. volumes: 
    7. - ../code:/opt/web/code 
    8. web2: 
    9. build: ./web/ 
    10. volumes: 
    11. - ../code:/opt/web/code 
    12. 
    ** 注意:通過頂級volumes定義一個掛載卷,并從每個服務的卷列表中引用它, 這會替換早期版本的Compose文件格式中volumes_from。 
    1. version: “3” 
    2. 
    3. services: 
    4. db: 
    5. image: db 
    6. volumes: 
    7. - data-volume:/var/lib/db 
    8. backup: 
    9. image: backup-service 
    10. volumes: 
    11. - data-volume:/var/lib/backup/data 
    12. 
    13. volumes: 
    14. data-volume: 
    command 
    覆蓋容器啟動后默認執行的命令。 
    command: bundle exec thin -p 3000 
    該命令也可以是一個類似于dockerfile的列表: 
    command: [“bundle”, “exec”, “thin”, “-p”, “3000”] 
    links 
    鏈接到另一個服務中的容器。 請指定服務名稱和鏈接別名(SERVICE:ALIAS),或者僅指定服務名稱。 
    1. web: 
    2. links: 
    3. - db 
    4. - db:database 
    5. - redis 
    在當前的web服務的容器中可以通過鏈接的db服務的別名database訪問db容器中的數據庫應用,如果沒有指定別名,則可直接使用服務名訪問。 
    鏈接不需要啟用服務進行通信 - 默認情況下,任何服務都可以以該服務的名稱到達任何其他服務。 (實際是通過設置/etc/hosts的域名解析,從而實現容器間的通信。故可以像在應用中使用localhost一樣使用服務的別名鏈接其他容器的服務,前提是多個服務容器在一個網絡中可路由聯通) 
    links也可以起到和depends_on相似的功能,即定義服務之間的依賴關系,從而確定服務啟動的順序。 
    external_links 
    鏈接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。參數格式跟 links 類似。 
    1. external_links: 
    2. - redis_1 
    3. - project_db_1:mysql 
    4. - project_db_1:postgresql 
    expose 
    暴露端口,但不映射到宿主機,只被連接的服務訪問。 
    僅可以指定內部端口為參數 
    1. expose: 
    2. - “3000” 
    3. - “8000” 
    ports 
    暴露端口信息。 
    常用的簡單格式:使用宿主:容器 (HOST:CONTAINER)格式或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。 
    ** 注意:當使用 HOST:CONTAINER 格式來映射端口時,如果你使用的容器端口小于 60 你可能會得到錯誤得結果,因為 YAML 將會解析 xx:yy 這種數字格式為 60 進制。所以建議采用字符串格式。 
    簡單的短格式: 
    1. ports: 
    2. - “3000” 
    3. - “3000-3005” 
    4. - “8000:8000” 
    5. - “9090-9091:8080-8081” 
    6. - “49100:22” 
    7. - “127.0.0.1:8001:8001” 
    8. - “127.0.0.1:5000-5010:5000-5010” 
    9. - “6060:6060/udp” 
    在v3.2中ports的長格式的語法允許配置不能用短格式表示的附加字段。 
    長格式: 
    1. ports: 
    2. - target: 80 
    3. published: 8080 
    4. protocol: tcp 
    5. mode: host 
    target:容器內的端口 
    published:物理主機的端口 
    protocol:端口協議(tcp或udp) 
    mode:host 和ingress 兩總模式,host用于在每個節點上發布主機端口,ingress 用于被負載平衡的swarm模式端口。 
    restart 
    no是默認的重啟策略,在任何情況下都不會重啟容器。 指定為always時,容器總是重新啟動。 如果退出代碼指示出現故障錯誤,則on-failure將重新啟動容器。 
    1. restart: “no” 
    2. restart: always 
    3. restart: on-failure 
    4. restart: unless-stopped 
    environment 
    添加環境變量。 你可以使用數組或字典兩種形式。 任何布爾值; true,false,yes,no需要用引號括起來,以確保它們不被YML解析器轉換為True或False。 
    只給定名稱的變量會自動獲取它在 Compose 主機上的值,可以用來防止泄露不必要的數據。 
    1. environment: 
    2. RACK_ENV: development 
    3. SHOW: ‘true’ 
    4. SESSION_SECRET: 
    5. 
    6. environment: 
    7. - RACK_ENV=development 
    8. - SHOW=true 
    9. - SESSION_SECRET 
    ** 注意:如果你的服務指定了build選項,那么在構建過程中通過environment定義的環境變量將不會起作用。 將使用build的args子選項來定義構建時的環境變量。 
    pid 
    將PID模式設置為主機PID模式。 這就打開了容器與主機操作系統之間的共享PID地址空間。 使用此標志啟動的容器將能夠訪問和操作裸機的命名空間中的其他容器,反之亦然。即打開該選項的容器可以相互通過進程 ID 來訪問和操作。 
    pid: “host” 
    dns 
    配置 DNS 服務器。可以是一個值,也可以是一個列表。 
    1. dns: 8.8.8.8 
    2. dns: 
    3. - 8.8.8.8 
    4. - 9.9.9.9

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 婷婷久久综合九色综合88| 男女无遮挡XX00动态图120秒| 亚洲综合无码AV在线观看| 99RE6在线观看国产精品| 国产精品乱码久久久久久软件| 亚洲色婷婷综合开心网| 国产亚洲精品AA片在线爽| 国产精品久久久久久无码五月| 日韩深夜免费在线观看| 午夜免费国产体验区免费的| 免费av深夜在线观看| 嫩草院一区二区乱码| 午夜福利高清在线观看| 国产精品久久久久影院| 久久精品国产99国产精品严洲| 自偷自拍亚洲综合精品| 国产精品视频午夜福利| 国产在线无码视频一区二区三区 | 欧美丰满熟妇xxxx性| 国产午夜亚洲精品国产成人| 无码日韩精品一区二区人妻| 中文字幕少妇人妻精品| 亚洲欧洲中文日韩久久AV乱码| 国产成AV人片久青草影院| 色窝窝无码一区二区三区| 真实国产老熟女无套中出| 国产99视频精品免费专区| 强奷漂亮少妇高潮伦理| 高清偷拍一区二区三区| 人人妻人人藻人人爽欧美一区| 国产香蕉尹人综合在线观看| 国产成人综合色就色综合| 精品无码一区二区三区在线 | 午夜久久久久久禁播电影| 韩国午夜理论在线观看| 二区中文字幕在线观看| 国产成人亚洲精品无码青APP| 日本高清在线天码一区播放| 国产精品区一区第一页| 国产精品自在线拍国产电影| 精品国产AV最大网站|