1. 程式人生 > 資訊 >水滴公司上市首日破發,當前跌近 10%

水滴公司上市首日破發,當前跌近 10%

映象命令

docker images

  • docker images: 檢視本地的所有映象
  • 後面可以跟的常用引數有 :
    • -a : 列出所有的映象

    • -q : 只顯示映象 id

      在這裡插入圖片描述

      • REPOSITORY : 映象的倉庫源
      • TAG : 映象的標籤
      • TMAGE ID : 映象的 id
      • CREATED : 映象的建立時間
      • SIZE : 映象的大小

docker search

  • docker search : 搜尋映象
  • docker search mysql --filter=STARS=3000: 搜尋 MySQL 映象 stars 超過 3000 的映象

docker pull

  • docker pull 映象名稱:[tag版本]
    : 下載映象, 預設下載最新版

docker rmi

  • docker rmi -f 映象id : 刪除指定映象, 如果要刪除多個映象, 則每個映象 id 之間用空格隔開
  • docker rmi -f $(docker images -aq) : 刪除所有的映象

容器命令

  • 有了映象後才可以建立容器

新建容器並啟動

  • docker run [可選引數] 映象id

  • 引數:

    • –name=“容器名稱”
    • -d : 以後臺方式執行
    • -it : 進入到容器內部, 常用的是: docker run -it centos /bin/bash
    • -p : 指定容器埠
      • -p ip:主機埠:容器埠
      • -p 主機埠:容器埠
      • -p 容器埠
      • 容器埠
    • -P : 隨機指定埠
    • -e : 環境配置, 如配置 MySQL 密碼

退出容器

  • exit : 退出並關閉容器

  • command + p + q : 退出但是不關閉容器

檢視正在執行中的容器

  • docker ps
  • docker ps -a : 檢視正在執行的容器和曾經執行過的容器
  • docker ps -n=3: 顯示最近新建的 3 個容器
  • docker ps -q : 只顯示容器的編號

刪除容器

  • docker rm 容器id : 刪除指定的容器, 不能刪除正在執行的容器, 如果想要刪除正在執行的, 可以使用 rm -f
  • docker rm -f $(docker ps -aq) : 刪除所有的容器
  • docker ps -a -q|xargs docker rm
    : 刪除所有的容器

啟動容器

  • docker start 容器id

重啟容器

  • docker restart 容器id

停止正在執行的容器

  • docker stop 容器id

強制停止正在執行的容器

  • docker kill 容器id

其他常用命令

常看日誌

  • docker logs -tf 容器id : 檢視指定容器的日誌

  • docker logs -tf --tail 10 容器id : 檢視指定容器的最近 10 條的日誌

檢視容器的程序資訊

  • docker top 容器id

檢視映象的元資料

  • docker inspect 映象id

進入當前正在執行的容器

  • docker exec -it 容器id /bin/bash : 進入容器後新開啟一個終端, 可以在裡面進行一些操作 (常用)
  • docker attach 容器id : 進入當前正在執行的終端

從容器內拷貝檔案到主機上

  • docker cp 容器id:容器內路徑 目的主機路徑

檢視 CPU 狀態

  • docker stats

增加 tag

  • docker tag 映象id 映象名稱:版本號

commit 映象

  • docker commit -m='提交的描述資訊' -a='作者' 容器id 目標映象名:[版本]

資料卷

檢視所有的資料卷

  • docker volume ls
  • 可以使用 docker inspect 容器id 來檢視是否掛載成功, 在顯示的資訊中檢視 Mounts 部分的內容

指定路徑掛載

  • docker run -it -v 主機目錄:容器內目錄 映象名稱 /bin/bash

匿名掛載

  • docker run -it -v 容器內目錄 映象名稱

具名掛載

  • 大多數情況下都使用的是具名掛載

  • docker run -it -v 隨便起的名字:容器內目錄 映象名稱

  • docker run -it -v 隨便起的名字:容器內目錄:ro 映象名稱 : 其中 ro 表示的是隻能讀, read only, 表示的是不能在容器內部進行修改, 只能通過宿主機來修改

  • docker run -it -v 隨便起的名字:容器內目錄:rw 映象名稱 : 其中 rw 表示的是可讀可寫, read write (預設的)

使用 dockerfile 來掛載

  • 案例:

    • touch dockerfile

    • vim dockerfile

      • FROM centos
        VOLUME ['volume01', 'volume02']
        
        CMD echo '====end======'
        CMD /bin/bash
        
    • docker build -f dockerfile -t xiaosheng/centos .

      • -f : 表示 dockerfile 檔案的路徑
      • -t : 表示要生成的映象名稱
      • . : 表示要生成在哪個目錄下
    • 最後可以使用 docker inspect 映象id 來檢視資料卷的詳細資訊

檢視指定資料卷對應的目錄

  • docker volume inspect 具名掛載時起的名字
  • 當掛載資料卷並且沒有指定路徑的時候,Linux 中一般都是掛載在 /var/lib/docker/volume 目錄中

配置 MySQL

docker run -d -p 3306:3306 -v /home/mysql/my.conf:/etc/mysql/my.conf -v /home/mysql/data:/use/local/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

  • -e 可以用來配置 MySQL 密碼, 可以同時掛載多個數據卷

資料卷容器

  • 可以在多個容器之間共享資料

  • 案例

    • 先開啟一個 nginx01 的容器

    • 然後需要再開啟一個 nginx02 的容器, 同時這兩個容器之間需要資料共享, 那就在開啟 nginx02 的時候就可以使用以下命令:

      docker run -it --name nginx02 --volumes-from nginx01 xiaosheng/centos

    • 同時還可以有其他的容器來和 nginx01 一起共享資料

    • 即便 nginx01 容器關掉或者銷燬, 並不會影響到其他容器中共享的資料

    • 只要還有一個容器在使用, 那麼資料就不會消失


Dockerfile

  • dockerfile 是用來構建 docker 映象的檔案

步驟 :

  1. 編寫 dockerfile 檔案
  2. docker build 構建成為一個映象
  3. docker run 執行映象
  4. docker push 釋出映象 (可以釋出到 dockerhub 或者是 阿里雲映象倉庫)

dockerfile 檔案

  • 每一個保留關鍵字 (指令) 都必須是大寫

  • 從上往下開始執行

  • # 表示註釋

  • 每一個指令都會建立一個映象層

  • 常用指令:

    FROM  			# 基礎映象
    MAINTAINER 		# 映象作者, 一般是姓名<郵箱>
    RUN   			# 構建映象的時候需要執行的命令
    ADD  			# 構建映象的時候, 需要新增的內容, 比如要在 centos 映象中新增一個 NGINX, 如果新增的是一個壓縮包的話, 會自動解壓
    WORKDIR 		# 映象的工作目錄
    VOLUME 			# 掛載的目錄
    EXPOSE 			# 埠配置
    CMD 			# 容器啟動的時候需要執行的命令, 只有最後一個會生效, 這個最後一個生效, 並不是指在 dockerfile 檔案中, 在 dockerfile 檔案中仍然可以有多個 CMD 命令, 指的是在使用 docker run 的時候, 後面不能加命令, 如果加了, 那麼 docker run 後面的命令將會替換掉 dockerfile 檔案中的命令
    ENTRYPOINT 		# 容器啟動的時候需要執行的命令, 可以追加命令
    ONBUILD 		# 當構建一個被繼承的 dockerfile 的時候, 會執行 ONBUILD 指令
    COPY 			# 將檔案拷貝到映象中
    ENV 			# 構建的時候設定環境變數
    
  • 案例 (嘗試構建自己的 centos)

    • 編寫 dockerfile 檔案

      FROM centos  # 基礎映象是 centos
      MAINTAINER xiaosheng<[email protected]> # 作者資訊
      
      ENV MYPATH /usr/local # 自定義一個變數 MYPATH, 值是 /usr/local
      WORKDIR $MYPATH # 指定工作目錄, 即使用者當進去 centos 後所在的目錄
      
      RUN yum -y install vim # 安裝 vim
      RUN yum -y install net-tools # 安裝 net-tools
      
      EXPOSE 80 # 暴露埠
      CMD echo $MYPATH
      CMD echo "===end===="
      CMD /bin/bash
      
    • 開始構建

      docker build -f dockerfile檔案的地址 -t 映象名:[版本號]

    • 使用 docker history 映象id 來檢視映象的構建歷史


釋出映象

釋出到 dockerhub

  • 註冊一個 dockerhub 的賬號
  • docker login -u 使用者名稱, 然後輸入密碼
  • docker push 使用者名稱(隨便起的)/映象名:版本號

釋出到阿里雲

  • 可以先將 docker 的映象更換成自己的阿里雲中提供的映象地址

  • 登入阿里雲, 進入容器映象

  • 建立名稱空間和映象倉庫, 建立倉庫的時候選擇本地倉庫