Docker常用筆記

虛擬機(VM)與容器對比(docker)

  • 1.容器秒級啓動,虛擬機分鐘級

  • 2.容器磁盤一般使用爲MB,虛擬機一般爲GB

  • 3.容器性能接近原生,虛擬機弱於原生

  • 4.系統支持量:單機支持上千個容器,單機一般支持幾十個虛擬機

  • docker整體是一個CS架構

    • 客戶端發起命令到引擎,引擎解析命令再從docker hub(鏡像倉庫)上面拉取鏡像
  • 拉取鏡像比較慢,就可以配置鏡像加速器

    • 可以通過阿里雲的容器鏡像服務裏面的鏡像加速器進行配置
      https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

docker常用命令

  • 1.查看docker運行狀態
    systemctl status docker

  • 2.停止docker
    systemctl stop docker

  • 3.重啓docker
    systemctl restart docker

  • 4.列出鏡像
    docker images

  • 5.拉取centos鏡像
    docker pull centos

  • 6.查看docker鏡像
    docker search 鏡像名字

  • 7.刪除鏡像
    docker rm 鏡像名稱/鏡像id(刪除多個就直接空格後面加上就可以了)

  • 8.創建一個交互式容器(創建之後就直接進去了容器,退出容器後容器就直接退出了)
    docker run -i -t --name=c1 centos /bin/bash
    或者docker run -it --name c1 centos /bin/bash

    • -i:交互式容器
    • -t:tty終端(分配一個終端,操作容器)
    • -name:指定容器的名稱(唯一,不能重複 )
  • 9.創建一個守護式容器(後臺運行且創建後不直接進入容器,且進入容器退出容器後容器不停止c3爲容器名)
    docker run -itd --name c3 centos /bin/bash

    • 進入守護式容器
      docker exec -it c3 /bin/bash
  • 10.查看正在運行的容器

    • 1.查看正在運行的容器
      docker ps
    • 2.查看歷史容器,所有容器
      docker ps -a
    • 3.查看最後一次運行的容器
      docker ps -l
  • 11.停止容器

    • 1.停止容器
      docker stop 容器名
    • 2.運行容器
      docker start 容器名
  • 12.查看容器的詳細信息
    docker inspect 容器名(會列出一大串的json文件,包含這個容器的詳細信息)

  • 13.刪除容器(不能刪除正在運行的容器)
    docker rm 容器名

    • 刪除所有容器
      docker rm `docker ps -a -q`
  • 14.查看容器日誌
    docker logs 容器名稱/id

  • 15.文件拷貝

    • 1.從宿主機拷貝到容器目錄
      docker cp 文件名 容器名:/root(容器目錄)
    • 2.從容器拷貝到宿主機
      docker cp 容器名:/容器裏面到文件路徑+文件名 宿主機到目錄
  • 16.容器的目錄掛載(在啓動容器的時候進行目錄掛載)
    docker run -itd --name 容器名 -v 宿主機目錄:容器內目錄 centos /bin/bash

  • 17.查看命令的用法
    docker commit --help

docker鏡像製作的兩種方式

  • 1.使用docker commit命令

  • 2.使用docker build和Dockerfile文件

  • 18.使用docker commit製作鏡像
    docker commit 原鏡像名 新鏡像名

  • 19.端口映射並執行容器內的腳本
    docker run -itd --name=t1(容器名) -p 8888(宿主機的端口):8080(容器內的端口) 容器鏡像名 /bin/bash
    docker exec 容器名 /usr/local/startup.sh

  • 20.鏡像打包-導入鏡像

    • 1.鏡像打包
      docker save -o /root/tomcat.tar(保存的目錄與鏡像打包後的名字) mytomcat(本地鏡像名字)
    • 2.導入鏡像
      docker load -i /root/tomcat.tar(鏡像打包後的名字)
  • 21.容器打包

    • 1.容器打包
      docker export -o /root/t1.tar t1(容器名)
    • 2.導入容器
      docker import t1.tar(打包的容器文件) mytomcat:latest(容器名字與tag)

    Dockerfile

    • 使用DSL語法
      1.構建命令(在rw_test目錄下構建鏡像)
      docker build -t 鏡像名字 --rm=true
    • -t表示選擇指定生成鏡像的用戶名,倉庫名和tag
    • –rm=true 表示指定在生成鏡像過程中刪除中間產生的臨時容器

    docker倉庫

    • 1.先註冊docker hub的賬號(https://hub.docker.com)
    • 2.在裏面創建一個新的倉庫(Create Repository)
    • 3.設置鏡像標籤
    - local-image:tagname(本地鏡像)
    -  new-repo:tagname(倉庫id:tag名稱)
    - 4.本地登錄docker hub
      - docker login
    - 5.推送鏡像
    ```docker push new-repo:tagname```
    
    

docker網絡管理

  • 默認網絡

    • 查看docker網絡
      docker network ls
    • Docker中默認的三種網絡分別爲bridge,host和none,其中名爲bridge的網絡就是默認的bridge驅動網絡,也是容器創建時默認的網絡管理方式,配置後可以與宿主機通信從而實現與互聯網通信功能,而host和none屬於無網絡,容器添加這兩個網絡時不能與外界網絡通信。
    • 以上三種網絡bridge,host和none都是在非集羣下Docker提供的默認網絡,而在Docker Swarm集羣環境下,除了這三種默認網絡外,Docker還提供了docker_gwbridge和ingress兩種默認網絡
    • 查看容器使用的網絡情況:
      docker network inspect bridge
  • 創建一個使用自定義的isolated_nw網絡(需要預先創建)的容器

    • 1.創建名爲isolated_nw的網絡
      docker network create --driver bridge isolated_nw
    • 2.創建一個c3的容器並且網絡爲自定義網絡
      docker run --network=isolated_nw -itd --name=c3 busybox
  • 爲容器2新增一個自定義的isolated_nw網絡連接
    docker network connect isolated_nw c2

  • 如果兩個容器的網絡不一致就不能夠通信

Docker swarm集羣

  • 創建docker swarm
    • 1.在manager1機器上創建docker swarm集羣
      docker swarm init --advertise-addr 192.168.200.162
      (–advertise-addr將該IP地址的機器設置爲集羣管理節點;如果是單節點,無需該參數)
    • 2.查看管理節點集羣信息
      docker node ls
    • 3.向docker swarm中添加工作節點:在兩個工作節點中分別執行如下命令,ip地址是manager節點的
      docker swarm join --token xxx 192.168.200.138:2377 (worker1)
      docker swarm join --token xxx 192.168.200.138:2377 (worker2)
    • (–token xxx:向指定集羣中加入工作節點的認證信息,xxx認證信息是在創建docker swarm時產生的)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章