docker pull tomcat
2.根據基礎鏡像,創建容器
docker run --name tomcat01 -p 80:8080 -d tomcat
注意:如果是從阿里雲鏡像倉庫拿到的鏡像,在webapps里面沒有文件,因為阿里雲鏡像默認是最小的鏡像,所有不必要的都被剔除,將webapps.dist中的文件copy到webapp中即可解決(命令:cp -r webapps.dist/* webapps)
3.修改容器內容
docker exec -it tomcat01 /bin/bash cd webapps/ROOT rm -f index.jsp echo hello world > index.html exit
4.提交為新鏡像
#docker commit -m="描述消息" -a="作者" 容器ID或容器名 鏡像名:TAG docker commit -m="自定義的Tomcat鏡像" -a="wk" mytomcat wk/tomcat:v1.0
5.1 將自己的鏡像上傳到dockerHub
#第一步 先登錄自己的docker倉庫 docker login #輸入用戶名和密碼 #修改鏡像名字 #docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 注意這里的目標鏡像需要使用你dockerhub上的用戶名 類似我的wkdocker01 docker tag wk/tomcat:v01 wkdocker01/tomcat:v1.0 #上傳自己的鏡像 docker push wkdocker01/tomcat:v1.0
5.2 將自己的鏡像上傳到阿里雲
阿里雲容器鏡像地址:https://cr.console.aliyun.com/cn-hangzhou/repositories
首先在自己的阿里雲容器鏡像中創建自己的鏡像倉庫
選本地倉庫 ,通過命令推送到阿里雲鏡像倉庫
然后進入到自己的鏡像倉庫,這里有操作步驟教你上傳鏡像
6.使用子的鏡像來運行容器(當然也可以在dockerHub上pull下來自己空間的鏡像)
docker run --name mytom -p 8091:8080 -d wk/tomcat:v1.0
二:使用DockerFile構建spring boot項目鏡像
1.准備:把自己的springboot項目打包成可執行jar包
2.把jar包上傳到Linux服務器
3.開始構建自己的項目容器
3.1:在jar包路徑下創建Dockerfile文件 vi Dockerfile
# 指定基礎鏡像,本地沒有會從dockerHub pull下來 FROM java:8 #作者 MAINTAINER wk # 把可執行jar包復制到基礎鏡像的根目錄下 ADD smart-admin.jar /smart-admin.jar # 鏡像要暴露的端口,如要使用端口,在執行docker run命令時使用-p生效
EXPOSE 8080 # 在鏡像運行為容器后執行的命令 ENTRYPOINT ["java","-jar","/smart-admin.jar"]
3.2:使用 docker build 命令構建鏡像,基本語法
docker build -t wkdocker01/smart-admin:v1 .
# -f指定Dockerfile文件的路徑
# -t指定鏡像名字和TAG
# .指當前目錄,這里實際上需要一個上下文路徑
4.運行自己的項目
docker run --name smart-admin -p 8080:8080 -d wkdocker01/smart-admin:v1
三:把自己的vue前端項目上傳到docker容器運行:
1.首先創建一個default.conf文件,用戶替換nginx目錄下的default.conf文件
server { listen 80; server_name 127.0.0.1; # 修改為docker服務宿主機的ip location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } location /smart-admin-api{ # smart-admin-api是vue項目里.env.production里的地址 proxy_pass http://127.0.0.1:10086/smart-admin-api/; # 這里寫的是你后端接口的地址
} error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
該配置文件定義了首頁的指向為 /usr/share/nginx/html/index.html
, 所以我們可以一會把構建出來的index.html文件和相關的靜態資源放到/usr/share/nginx/html
目錄下。
2.創建DockerFile文件
FROM nginx MAINTAINER wk #刪除目錄下的default.conf文件 RUN rm /etc/nginx/conf.d/default.conf #將default.conf復制到/etc/nginx/conf.d/下,用本地的default.conf配置來替換nginx鏡像里的默認配置 ADD default.conf /etc/nginx/conf.d/ #將項目根目錄下dist文件夾(構建之后才會生成)下的所有文件復制到鏡像/usr/share/nginx/html/目錄下 COPY dist/ /usr/share/nginx/html/
3.將通過npm run build 打包好的dist文件拷貝到當前路徑下
4.通過docker build命令構建鏡像,注意不要少了. (點)
docker build -t smart-admin-vue:v1.0 .
5.通過docke run 啟動容器
docker run --name smart-admin-vue -p 10085:80 -d smart-admin-vue:v1.0
6.通過執行docker ps查看是否啟動成功容器
四:dockerFile常用的幾個命令:
FROM
FROM指令是最重要的一個並且必須為Dockerfifile文件開篇的第一個非注釋行,用於為鏡像文件構建過程指定基礎鏡像,后續的指令運行於此基礎鏡像提供的運行環境
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
MAINTAINER(depreacted)
Dockerfifile的制作者提供的本人詳細信息
Dockerfifile不限制MAINTAINER出現的位置,但是推薦放到FROM指令之后
語法:
MAINTAINER <name>
name可以是任何文本信息,一般用作者名稱或者郵箱
LABEL <key>=<value> <key>=<value> <key>=<value>...
一個Dockerfifile可以寫多個LABEL,但是不推薦這么做,Dockerfifile每一條指令都會生成一層鏡像,如果LABEL太長可以使用\符號換行。構建的鏡像會繼承基礎鏡像的LABEL,並且會去掉重復的,但如果值不同,則后面的值會覆蓋前面的值。
COPY
COPY <src>...<dest>
COPY ["<src>",..."<dest>"]
# <src>:要復制的源文件或者目錄,可以使用通配符
# <dest>:目標路徑,即正在創建的image的文件系統路徑;建議<dest>使用絕對路徑,否則COPY指令則以WORKDIR為 其起始路徑
ADD <src>...<dest>
ADD ["<src>",..."<dest>"]
WORKDIR <dirpath>
VOLUME <mountpoint>
VOLUME ["<mountpoint>"]
不能指定宿主機當中的目錄,宿主機掛載的目錄是自動生成的
EXPOSE <port>[/<protocol>] [<port>[/<protocol>]...]
ENV <key> <value>
ENV <key>=<value>...
ARG <name>[=<default value>]
指定一個變量,可以在docker build創建鏡像的時候,使用 --build-arg <varname>=<value> 來指定參數
RUN <command>
RUN ["<executable>","<param1>","<param2>"]
RUN ["/bin/bash","-c","<executable>","<param1>"]
CMD <command>
CMD ["<executable>","<param1>","<param2>"]
CMD ["<param1>","<param2>"]
ENTRYPOINT<command>
ENTRYPOINT["<executable>","<param1>","<param2>"]
ONBUILD <instruction>