簡介
Docker是一種流行的容器化平臺,用于構(gòu)建、分發(fā)和運行應(yīng)用程序。其中一個最基本且重要的Docker命令是docker run,用于創(chuàng)建和啟動容器。本文將詳細(xì)解析docker run命令的用途、參數(shù)和示例,幫助您全面掌握創(chuàng)建和啟動容器的過程。
docker run
在Docker中,容器是運行應(yīng)用程序的獨立環(huán)境。docker run命令用于根據(jù)指定的鏡像創(chuàng)建和啟動一個新的容器。下面是docker run命令的基本語法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
注1:docker run與docker create語法格式一樣,只是docker run會創(chuàng)建并運行容器甚至可以進(jìn)入容器內(nèi)部
注2:COMMAND需要在容器內(nèi)執(zhí)行的命令
docker run 執(zhí)行流程
第一步,在指定鏡像上創(chuàng)建一個可寫的容器層
第二步,使用指定的命令(COMMAND)啟動它
簡而言之,docker run 相當(dāng)于執(zhí)行了兩個 API:/contAIners/create、/containers/(id)/start
options參數(shù)說明
docker run命令有很多的參數(shù),很多參數(shù)都擁有重要的作用,這里我們介紹一下最常用的部分參數(shù)
- -i,以交互模式運行容器,通常與 -t 同時使用
- -t,啟動容器后,為容器分配一個命令行,通常與-i同時使用
- -v,目錄映射,容器目錄掛載到宿主機(jī)目錄,格式: <host目錄>:<容器目錄>
- -d,守護(hù)進(jìn)程,后臺運行該容器
- -p,指定端口映射,格式:主機(jī)(宿主)端口:容器端口
- -P,隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口
- -u,以什么用戶身份創(chuàng)建容器
- --name "Nginx-lb",容器名字
- -m, --memory bytes,設(shè)置容器使用內(nèi)存最大值
- -h, --hostname string,指定容器的 host name
- --DNS 8.8.8.8,指定容器 dns 服務(wù)器
- -e username="ritchie",設(shè)置環(huán)境變量
- --restart,Docker 重啟后,容器是否自動重啟
- --privileged,容器內(nèi)是否使用真正的 root 權(quán)限
注:-p參數(shù)的用法
docker run -p ip:主機(jī)端口:容器端口
docker run -p 主機(jī)端口:容器端口 (常用)
docker run -p 容器端口
使用示例
- 使用Tomcat7鏡像,創(chuàng)建名為tomcat_hogwarts的容器,如下:
docker run --name tomcat_hogwarts tomcat:7
這樣運行,會直接將容器運行日志打印出來,所以一般都需要加 -d參數(shù),否則無法繼續(xù)敲其他命令
- 使用tomcat7鏡像,創(chuàng)建名為tomcat_hogwarts01的容器,并使用-d參數(shù),讓其后臺運行,命令如下:
docker run -d --name tomcat_hogwarts01 tomcat:7
運行如下圖:
通過-d參數(shù)創(chuàng)建容器,不影響我們運行其他命令。
- 使用鏡像 tomcat:7 以后臺模式啟動一個容器將容器的 8080 端口映射到主機(jī)的隨機(jī)端口,命令如下:
docker run -d -P --name tomcat_muller tomcat:7
- 使用鏡像 tomcat:7 以后臺模式啟動一個容器將容器的 8080 端口映射到主機(jī)的 8888 端口,命令如下:
docker run -d -p 8888:8080 --name tomcat_salah tomcat:7
可以看到 PORTS 一列,主機(jī)的 8888 端口指向了容器的 8080 端口。
- 使用鏡像 tomcat:7 ,以后臺模式啟動一個容器,將容器的 8080 端口映射到主機(jī)127.0.0.1:8888 端口容器名字自定義為 tomcat77主機(jī)的目錄 /usr/local/tomcat/webApp 映射到容器/usr/local/tomcat/webapps 啟動容器后,在容器內(nèi)執(zhí)行 bash 命令,命令如下:
docker run -d -p 127.0.0.1:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash
- 容器 8080 端口映射到主機(jī)的 1111 端口-it 以交互模式啟動一個容器,在容器內(nèi)執(zhí)行 bash 命令
注:如果這里加了-d 參數(shù),則不會進(jìn)入容器的 CLI 界面;如果不加 bash 命令,則會執(zhí)行 tomcat 容器本身自動會執(zhí)行的命令( catalina.sh run ),也會進(jìn)不了 CLI 界面,因為會打印一堆運行日志
docker run -it -p 1111:8080 tomcat:7 bash
- 以 root 權(quán)限創(chuàng)建容器,當(dāng)進(jìn)入容器之后,擁有 root 權(quán)限去執(zhí)行命令
# 創(chuàng)建容器
docker run -d --name jenkin_hogwarts --privileged=true jenkins/jenkins
# 進(jìn)入容器
docker exec -it jenkin_hogwarts bash
不加 --privileged的例子
# 創(chuàng)建容器
docker run -d --name jenkins_muller jenkins/jenkins
# 進(jìn)入容器
docker exec -it -uroot jenkins_muller bash
注:
- -uroot:是給了 root 用戶身份,但并沒有真正的 root 權(quán)限
- --privileged:真正讓當(dāng)前用戶有了 root 權(quán)限
- 設(shè)置容器自動重啟
docker run -d --name jenkins_salah --restart always jenkins/jenkins
- 退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:這個很有用的操作
總結(jié)
docker run命令是Docker中最基本且重要的命令之一,用于創(chuàng)建和啟動容器。通過了解和靈活使用不同的選項和參數(shù),可以定制容器的名稱、端口映射、數(shù)據(jù)持久化、環(huán)境變量等設(shè)置。希望本文對大家理解和使用docker run命令有所幫助,并能夠順利創(chuàng)建和啟動自己的Docker容器!