macOS下載安裝node.js
阿新 • • 發佈:2020-12-27
0. 倉庫: 1. 映象: 2. 容器: --------------------------- docker vs vmware --------------------------- 一.映象相關命令: 1. Usage: docker search 名字 //搜尋映象 例如: docker search centos7 2. Usage: docker pull 映象名:tag //下載映象 例如: docker pull centos7 3. Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] //更改映象名:標籤名 例如: docker tag docker.io/nickistre/centos-lamp:latest lamp:lamp 4. Usage: docker save oldIMAGE [OPTIONS] newIMAGE //將映象匯出到本地 例如: docker save docker.io/nickistre/centos-lamp -o lamp01 5. Usage: docker load -i 映象名 //將載入本地映象檔案 例如: docker load -i lamp036. docker images //檢視所有已經下載的映象 7. docker inspect 映象ID //檢視指定映象的相關資訊 8. docker rmi 映象ID|映象名 //刪除映象名 儲存和載入: docker save ... docker load ... 二.容器相關命令: 1. Usage: docker ps -a //檢視所有容器 2. Usage: docker ps //檢視正在執行的容器 3. Usage: docker rm 容器ID|容器名 //刪除容器4. Usage: docker create -it 映象名|映象ID /bin/bash //通過指定映象名建立容器 [root@Docker images]# docker create -it 57d8c48a14b1 /bin/bash 56606f50d1d09d1050e9cb6c51af5d7751daf53c15d65b01f016a11d6a9a3b24 [root@Docker images]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 56606f50d1d0 57d8c48a14b1 "/bin/bash" 6 seconds ago Created jovial_murdock [root@Docker images]# 5. Usage: docker start|stop 容器ID|容器名 //開啟|停止容器 6. Usage: docker export old容器ID|old容器名 -o newContainer //將容器匯出到檔案 例如: docker export 05af39e8b263 -o newContainer //將容器05af39e8b263匯出為檔案newContainer 7. Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] //將容器匯入變成一個映象 例如: docker import newContainer //將本地的之前匯出的檔案newContainer變成一個映象 匯入和匯出: docker import ... docker export ... 三. 執行和管理容器 1. Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] //進入到容器,需要提前開啟容器 例如: docker exec -it 56606f50d1d0 /bin/bash 2. Usage: docker run -itd 映象ID|映象名 /bin/bash 例如: docker run -itd -p 12345:80 httpd:latest /bin/bash //通過映象httpd生成容器,並指定本地12345埠對映到容器80埠 3. Usage: docker run -d -v /data01:/data01 -v /data02:/data02 --name web httpd:centos //建立一個名為web的容器,在宿主主機建立資料卷/data01和/data02,分別掛載到容器裡面,並與宿主機的/data01,/data02關聯 4. 根據映象docker.io/centos建立一個開啟的容器web005 Usage: docker run -itd --name web005 docker.io/centos /bin/bash //容器名為web005,後臺執行web005 Usage: docker run -it --name web005 docker.io/centos /bin/bash //容器名為web005,前臺執行web005 5. 容器間共享資料 Usage: docker run -it --volumes-from web --name db01 httpd:latest //web為源容器,db01為生成容器 6. 埠對映 Usage: docker run -d -P httpd:latest //docker隨機對映一個埠範圍49000-49900的埠到容器內部開發的網路埠 Usage: docker run -d -p 49888:80 httpd:latest //docker指定埠對映 7. 容器互聯--通過容器的名稱在容器間建立一條專門的網路通訊隧道, 在源容器和接收容器之間建立一條隧道,接收容器看到源容器指定的資訊 docker run --link可以用來連結2個容器,使得源容器(被連結的容器)和接收容器(主動去連結的容器)之間可以互相通訊, 並且接收容器可以獲取源容器的一些資料,如源容器的環境變數 --link的格式: --link <name or id>:alias 其中,name和id是源容器的name和id,alias是源容器在link下的別名。 Usage: 7.1 docker run -d -P --name source_web01 httpd:latest //建立源容器 7.2 docker run -d -P --name destination_web02 --link source_web01 httpd:latest //建立容器並連結到源容器 8. 建立一個新的 Docker 網路。 docker network create -d bridge test-net #網路名稱為test-net docker run -itd --name test1 --network test-net ubuntu /bin/bash #為指定建立的容器指定網路 9.在宿主機的 /etc/docker/daemon.json 檔案中增加以下內容來設定全部容器的 DNS: { "dns" : [ "114.114.114.114", "8.8.8.8" ] } 設定後,啟動容器的 DNS 會自動配置為 114.114.114.114 和 8.8.8.8。 配置完,需要重啟 docker 才能生效。 10.在指定的容器設定 DNS,則可以使用以下命令: docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu --rm:容器退出時自動清理容器內部的檔案系統。 -h HOSTNAME 或者 --hostname=HOSTNAME: 設定容器的主機名,它會被寫到容器內的 /etc/hostname 和 /etc/hosts。 --dns=IP_ADDRESS: 新增 DNS 伺服器到容器的 /etc/resolv.conf 中,讓容器用這個伺服器來解析所有不在 /etc/hosts 中的主機名。 --dns-search=DOMAIN: 設定容器的搜尋域,當設定搜尋域為 .example.com 時,在搜尋一個名為 host 的主機時,DNS 不僅搜尋 host,還會搜尋 host.example.com。 如果在容器啟動時沒有指定 --dns 和 --dns-search,Docker 會預設用宿主主機上的 /etc/resolv.conf 來配置容器的 DNS 12. 建立一個名稱為web99,容器的主機名為vm_web1,容器的dns指向114.114.114.114;容器退出時自動清理容器內部的檔案系統 docker run -it --name web99 -h vm_web1 --dns 114.114.114.114 --rm lamp /bin/bash 四. docker映象建立方法 基於已有執行的容器建立: 基於本地模板建立 基於Dockerfile建立 1. 基於已有執行的容器建立<docker commit ...>: 把一個容器裡面執行的程式及其執行環境打包生成新的映象 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes 例如: docker commit --help //檢視命令幫助 [root@Docker ~]# docker commit -a "vmsysjack" -m "Hello,Everyone" -p 56606f50d1d0 vm1:vm2 //將容器56606f50d1d0打包成為一個映象,名稱為vm1,tag為vm2 2. 基於本地模板建立: 2.1. 從網上下載模板 2.2. cat 模板檔案 | docker import - 映象名:tag名 3. 基於Dockerfile建立: 使用dockerfile自動生成映象,dockerfile由一組指令組成的檔案 1.基礎映象資訊 dockerfile 2.維護者資訊 組成部分 3.映象操作指令 4.容器啟動時執行指令 vim dockerfile 使用命令 docker build , 從零開始來建立一個新的映象。為此,我們需要建立一個 Dockerfile 檔案, 其中包含一組指令來告訴 Docker 如何構建我們的映象。 開始構建: docker build -t hello:latest . #在dockerfile檔案目錄下構建映象檔案 -t :指定要建立的目標映象名 . :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑 ------------------------------- #第一行必須指明基於的基礎映象 FROM centos #維護該映象的使用者資訊 MAINTAINER The Centos Project #映象操作指令 RUN yum -y update RUN yum install -y openssl-server RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key #開啟22埠 EXPOSE 22 #啟動容器時執行指令 CMD ["/usr/sbin/sshd","-D"] -------------------------------- 命令解釋: from映象: 指定新映象所基於的映象,每建立一個映象就需要一條FROM指令 maintainer名字: 說明新映象的維護人資訊 run命令: 在所基於的映象上執行命令,並提交到新的映象中 cmd["要執行的程式","引數1","引數2"]: 指令啟動容器時要執行的命令或者指令碼,dockerfile只能有一條CMD命令,指定多條則只能最後一條被執行 expose埠號: 指定映象載入到docker時要開啟的埠 ENV環境變數變數值: 設定一個環境變數的值,會被後面的RUN使用 add 原始檔 /目錄目標檔案/目錄: 將原始檔複製到目標檔案,原始檔要與dockerfile位於相同目錄中,或者是一個URL copy 原始檔 /目錄目標檔案/目錄: 將本地主機上的檔案/目錄複製到目標地點,原始檔/目錄要與Dockerfile在相同的目錄中 volume["目錄"]: 在容器中建立一個掛載點 user 使用者名稱/uid: 指定執行容器時的使用者 workdir 路徑: 為後續的RUN,CMD,ENTRYPOINT指定工作目錄 例如: workdir /root/nginx 進入到真實機/root/nginx onbuild 命令: 指定所生成的映象作為一個基礎映象時所要執行的命令 ############################################################################################ 注意: add run.sh /run.sh cmd [ "/run.sh" ] ----------------------------------- cmd [ "/usr/sbin/init" ] #表示在啟動容器的時候自動載入/usr/lib/systemd/system/下的指令碼檔案 當使用cmd ["/usr/sbin/init" ]來載入配置檔案後,再次使用docker run -it ... /bin/bash時, 容器不能夠使用systemctl命令,只能夠使用docker run -d .... ----------------------------------- docker run -itd --privilged=true nginx:centos init /bin/bash (X) -------------------------- ############################################################################################