一、docker的安裝
1、使用yum安裝Docker
sudo yum install docker
2、啓動Docker
service docker start
3、設置開機啓動docker
systemctl enable docker
4、查看docker是否安裝成功
docker info
5、重啓docker
sudo service docker restart
二、tomcat和應用的安裝
安裝和啓動
#查找tomcat服務器的信息 docker search tomcat
#下載tomcat鏡像並部署 docker pull tomcat
#查詢鏡像 docker images
查看運行的 docker進程 docker ps
#啓動tomcat(掛載的方式)
docker run -p 8080:8080 --name mytomcat -d -v /aaa/app1:/usr/local/tomcat/webapps tomcat:latest
使用docker鏡像tomcat 以後臺模式啓動一個容器,並將容器命名爲mytomcat 端口對應是8080對8080
#啓動tomcat(複製的方式)
docker run -p 8080:8080 --name mytomcat tomcat:latest
docker cp /aaa/app1 mytomcat :/usr/local/tomcat/webapps
docker restart mytomcat
測試環境可以這麼弄,因爲文件可能隨時會變化
進入容器
docker exec -it tomcat /bin/bash
正式環境變化不大,直接製作成一個鏡像。
1、創建Dockfile(文件一定要是這個名字)
vim Dockerfile
FROM tomcat:latest
COPY xxxxxx/ /usr/local/tomcat/webapps/xxxxxx
2、生成新的鏡像
docker build -t tomcat-demo:v1 .
3、啓動新的鏡像 (tomcat-demo要寫在最後面)
docker run -p 8080:8080 -d tomcat-demo:v1
方便查看日誌
docker run -p 8080:8080 -d -v /aaa/logs:/usr/local/tomcat/logs tomcat-demo:v1
參考:https://blog.csdn.net/baidu_38432732/article/details/81081819
碰到的問題
1、文件名字必須爲Dockerfile。否則執行的時候可能會報一下異常:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/apps/Dockerfile: no such file or directory
2、使用當前目錄的方式,否則報錯. dockfile 文件找那個寫 /data/dockfiles/xxxxx/ 報錯。改爲 xxxxx/ 就好了。
Step 2/2 : COPY /data/dockfiles/xxxxx/ /usr/local/tomcat/webapps
COPY failed: stat /var/lib/docker/tmp/docker-builder805782110/data/dockfiles/xxxxx: no such file or directory
參考:https://www.cnblogs.com/sparkdev/p/9573248.html
3、生成新鏡像成功了,但是運行進程時,發現沒有對應的文件夾,檢查發現,是因爲Dockerfile寫錯了。copy只會複製目錄中的內容而不包含目錄自身,需要複製目錄自身的話,需要對應後面的目錄也加上對應的應用。
COPY /data/dockfiles/xxxxx/ /usr/local/tomcat/webapps 改爲 COPY /data/dockfiles/xxxxx/ /usr/local/tomcat/webapps/xxxxx
4.映射了日誌路徑,但是看不到,仔細檢查下路徑,可能是路徑錯了,不報錯,但是實際就是啥也不顯示
好處:
1、新環境不用裝jdk,配置環境等操作
2、進程獨立,所以相互不影響?
內存佔用測試了一個實例,同樣的機器,一個放容器裏,一個按以前的方式。容器方式是900多M,以前方式是800多M,內存佔用差距不大。
docker top 容器名 查出容器中對應的進程
已經啓動了如下命令
docker run -p 8888:8080 --name xxxxx -d -v /data/dockfiles/webapps/:/usr/local/tomcat/webapps tomcat
怎麼追加日誌目錄映射?
搜索 “docker 動態添加掛載” 貌似不好實現。
還是移除掉,重新加命令吧(修改命令需要移除,停止不行)。多個目錄映射 -v xxx:/xxxx -v yyy:/yyy
直接利用docker 容器和項目中應用docker maven包的區別?
利用maven包 可以直接推到鏡像倉庫中,不用使用docker自帶的功能,編寫腳本進行打包。省掉一步。
jenkins還是要用