騰訊雲CentOS 7.6 64位之docker的鏡像和容器練習


本文使用的Docker是社區版,版本是19.03.2,這個版本是本文寫時的最新版。

首先總結下容器和鏡像的概念:

  容器是用鏡像創建的,一個鏡像可以創建多個容器。沒有鏡像就沒有容器,但是沒有容器還是可以有鏡像。

  一般來說,一個容器就是一個應用,把應用在容器中運行稱之為應用容器化

  刪除鏡像的時候,如果由這個鏡像創建的容器還存在則會刪除失敗。

  容器和鏡像的關系就是:容器是鏡像的實例化的可運行實體

 

以下是我的練習內容:

1. 拉取鏡像
  docker pull centos:latest
  或者按照版本拉取:docker pull centos:7.6

2. 查看所有已經拉取的鏡像
  docker images

3. 通過鏡像啟動容器並且進入其中
  docker container run -it 0f3e07c0138f /bin/bash
  0f3e07c0138f是你鏡像的ID,通過"docker images"命令查看獲得

4. 退出容器返回到主機
  使用Ctrl-PQ組合鍵(這只是退出命令界面而已,不會殺死容器進程。)

5. 查詢下當前運行中的容器情況
  docker container ls

6. 連接到運行中的容器
  docker container exec -it dreamy_cartwright bash
  dreamy_cartwright是容器的名字,通過"docker container ls"命令查看獲得

7. 銷毀容器
  停止容器運行:docker container stop dreamy_cartwright
  刪除容器:docker container rm dreamy_cartwright
  查看所有狀態的容器(包括停止狀態的容器):docker container ls -a
  沒有查到說明已經被刪除了

7.1 刪除鏡像
  刪除剛剛拉取的鏡像:docker image rm 0f3e07c0138f
  0f3e07c0138f是你鏡像的ID,通過"docker images"命令查看獲得
  注意:
    只有沒有被容器使用的鏡像才能被刪除
    也可直接刪除所有沒被容器使用的鏡像:docker image prune -a

8. 上傳並運行一個nodejs工程
  上傳文件首先需要安裝:yum install lrzsz
  如果出現是否需要安裝請鍵盤輸入Y然后回車
  創建目錄:mkdir -p /home/demo/nodejs-docker
  下載安裝SecureCRT,在SecureCRT中連接后輸入:cd /home/demo/nodejs-docker
  上傳文件輸入命令:rz
  然后雙擊這個文件夾再點擊確定,上傳成功后可以使用命令查看:ls -a
  安裝zip解壓縮軟件:yum install unzip zip
  執行解壓命令:unzip psweb-master.zip
  刪除掉之前的zip文件:rm -f psweb-master.zip

    備注:

      nodejs工程文件及SecureCRT下載地址:https://pan.baidu.com/s/1NprxpW5LIHySWTijMByx6g 提取碼:ju8e

      雙擊SecureCRTPortable.exe可運行SecureCRT。

      這個部分其實只有rz這個命令需要用到SecureCRT,其他部分我都用騰訊雲自帶的WebShell了。

9. 在Docker的容器中運行nodejs-demo
  切換到Dockerfile所在的目錄:cd /home/demo/nodejs-docker/psweb-master
  打包成Docker鏡像:docker image build -t test:latest .
  然后使用docker image ls命令查看到有test代表就是成功了
  運行鏡像:docker container run -d --name web1 --publish 8080:8080 test:latest
  命令行回到根目錄:cd ~

10. 運行一個容器,后台運行,不進入其中
  docker container run -d --name webserver -p 80:8080 \
  然后再輸入:nigelpoulton/pluralsight-docker-ci
  -d代表后台運行

11. 刪除所有容器和鏡像
  容器:docker container rm$(docker container ls -aq) -f
  鏡像:docker image rm $(docker image ls -q) -f

12. 查看容器的配置信息
  docker container inspect 容器ID

 

13. 關於Dockerfile

  這個文件包含了對這個應用的描述,並且指導Docker完成構建。

  直接看Dockerfile文件里面的英文注釋,那個里面寫的比較清楚了。

  總結下這些關鍵字代表的含義

    FROM:應用運行在什么鏡像上

    LABEL:這個容器的負責人

    RUN:在鏡像中執行的命令

    COPY:將代碼復制到鏡像的某個位置中

    EXPOSE:記錄應用使用的端口號

    ENTRYPOINT:容器啟動后默認運行的程序

 

14. docker服務操作

  顯示服務狀態:systemctl status docker.service

  列出服務層級和依賴關系:systemctl list-dependencies docker.service

  啟動服務:systemctl start docker.service

  關閉服務:systemctl stop docker.service

  重啟服務:systemctl restart docker.service

  設置服務自啟動:systemctl enable docker.service

  禁止服務自啟動:systemctl disable docker.service

  查看服務是否自啟動:systemctl is-enabled docker.service

  列出系統所有服務的啟動情況:systemctl list-units --type=service

  列出所有自啟動服務:systemctl list-unit-files|grep enabled

一般安裝好了默認就是自啟動的,然后這個“.service”字符是可以省略的。

 

15. docker自啟動

  因為重啟系統后docker默認是不會自己啟動的,所以需要自己設置。

    手動重啟docker:systemctl restart docker.service

    手動重啟容器:docker start 95d869369f92 f6d275d686ed

    docker設置為自動啟動:systemctl enable docker.service

    docker內的容器設置為自啟動:docker update --restart=always 95d869369f92 f6d275d686ed

    其中95d869369f92 f6d275d686ed是代表兩個容器的id,如果只有一個就只需要寫一個,多個就繼續寫多個。

    設置完成之后可以測試一下:

      重啟:reboot

      這個時候如果用的WebShell會斷開連接,等待一會然后按任意鍵如果重啟完成就可以連上了。

      查看容器:docker container ls

      這個時候命令運行成功並且能看到你的鏡像代表設置自啟動成功了。

      如果這個命令執行失敗代表docker沒有設置自動,如果執行成功了但是容器是空的代表容器沒有設置自啟動(命令后面加-a可以看到所有包括停止運行的容器)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM