Docker學習(十一)- docker run 命令詳解

作用

創建一個新的容器並運行一個命令

語法格式

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

備註:其實跟 docker create 一樣的語法格式,只不過可以運行容器甚至進入容器內部
COMMAND :需要在容器內執行的命令

options 說明

備註:其實還有好多 options,但是目前還沒用到,要用的時候再寫吧

實際栗子

栗子一

使用鏡像 tomcat:7 ,容器命名爲 tomcat77

docker run --name tomcat7 tomcat:7

這樣運行,會直接將容器運行日誌打印出來,所以一般都需要加 -d,否則無法繼續敲其他命令

docker ps 看看容器

其實打印的日誌就是 catalina.sh run 命令運行之後的日誌

栗子二

  • 使用鏡像 tomcat:7
  • 以後臺模式啓動一個容器
  • 容器名字自定義爲 tomcat7
    docker run -d --name tomcat7 tomcat:7
![](https://img2020.cnblogs.com/blog/718867/202101/718867-20210118202433537-981153812.png)

創建容器之後還能執行其他命令,這樣方便很多

栗子三

  • 使用鏡像 tomcat:7
  • 以後臺模式啓動一個容器
  • 將容器的 8080 端口映射到主機的隨機端口
  • 容器名字自定義爲 tomcat9999
docker run -d -P --name tomcat9999 tomcat:7

栗子四

  • 使用鏡像 tomcat:7
  • 以後臺模式啓動一個容器
  • 將容器的 8080 端口映射到主機的 9999 端口
  • 容器名字自定義爲 tomcat7
docker run -d -p 9999:8080 --name tomcat7 tomcat:7

可以看到 PORTS 一列,主機的 9999 端口指向了容器的 8888 端口

栗子五

  • 使用鏡像 tomcat:7
  • 以後臺模式啓動一個容器
  • 將容器的 8080 端口映射到主機的 9999 端口
  • 容器名字自定義爲 tomcat7
  • 主機的目錄 /usr/local/tomcat/webapps 映射到容器的 /usr/local/tomcat/webapps
  • 以後直接在主機的 webapps 目錄上傳 war 包,就能在瀏覽器訪問對應的項目
 docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

栗子六

  • 使用鏡像 tomcat:7
  • 以後臺模式啓動一個容器
  • 將容器的 8080 端口映射到主機的 111.20.72.43:8888 端口
  • 容器名字自定義爲 tomcat77
  • 主機的目錄 /usr/local/tomcat/webapp 映射到容器 /usr/local/tomcat/webapps
  • 啓動容器後,在容器內執行 bash 命令
  • 注意:這裏不加 -it 的話,容器是無法再啓動的,加上才能啓動容器並執行 bash 命令
docker run -d -p 111.20.72.43:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash

栗子七

  • 容器 8080 端口映射到主機的 1111 端口
  • -it 以交互模式啓動一個容器,在容器內執行 bash 命令
  • 注意:如果這裏加了 -d 參數,則不會進入容器的 CLI 界面;如果不加 bash 命令,則會執行 tomcat 容器本身自動會執行的命令( catalina.sh run ),也會進不了 CLI 界面,因爲會打印一堆運行日誌
docker run -it -p 1111:8080 tomcat:7 bash

不加 bash的執行結果

加 bash的執行結果

順利進入容器的 CLI 界面,此時再去運行服務也是可以的

栗子八

以 root 權限創建容器,當進入容器之後,擁有 root 權限去執行命令

docker run -d --name jenkin2 --privileged=true jenkins/jenkins

雖然是擁有了 root 權限,但並不一定是 root 用戶身份,所以最好加 -uroot 指定 root 用戶身份

不加 --privileged 的小栗子

即使加了 -uroot ,指定了 root 用戶身份,但並不是真正擁有 root 權限

總結

  • -uroot:是給了 root 用戶身份,但並沒有真正的 root 權限
  • --privileged:真正讓當前用戶有了 root 權限
  • 若想要最高的權限,兩者可以結合使用

栗子九

該容器在 Docker 重啓後會自動啓動無需手動啓動

docker run -d --name jenkins2 --restart always jenkins/jenkins

  • 創建了兩個容器:jenkins2、jenkins3
  • 重啓 docker 服務
  • 再次查看正在運行的容器,只有 jenkins2

原文鏈接:
https://www.cnblogs.com/poloyy/p/13926296.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章