前言
這是我第一次使用dokcer部署項目,現學現賣。成功之后把所有用到的安裝及部署和操作命令做一個總結。如有不足,請指教。
使用的是阿里雲服務器。CentOS7版本。
Dokcer安裝
1.Centos7安裝Docker,系統一頓操作。
yum install docker-ce
2.設置開機自啟動
chkconfig docker on
systemctl start docker.service
systemctl enable docker.service
3.使用Docker 中國加速器,因為Docker是外國的,有個強大防火牆。但是Docker也有秘密武器。
首先:
vim /etc/docker/daemon.json
文件內容:
{ "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
4.重新啟動docker
systemctl restart docker
輸入docker version 返回版本信息則安裝正常。
測試docker是否成功
docker info
出現一下信息證明成功:
········ Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Insecure Registries: 127.0.0.0/8 Registries: docker.io (secure)
項目部署
准備好一個springboot項目的jar包。
1.創建一個目錄,用於放jar包和配置文件Dockerfile。
mkdir /usr/local/springboot
2.通過SSH工具將jar包上傳並移動到這個文件夾(命令略...)
3.在這個目錄下創建文件Dockerfile
touch Dockerfile
4.編寫這個文件內容
vim Dockerfile
// 內容如下 FROM java:8 VOLUME /tmp ADD XXXXXXXX.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
其中:XXXXXX.jar就是我們的springboot項目的jar包。
5.生成鏡像文件
docker build -t springboot .
注意:以空格+點結尾,springboot是生成鏡像的名字。
6.查看生成的鏡像
docker images
7.創建容器並運行jar包
docker run -d -p 10001:10001 springboot ( springboot就是鏡像文件)
這樣就可以訪問了。
所以,docker容器的性質和linux虛擬機是一樣一樣的。我們使用springboot的jar包,生成鏡像文件,再利用鏡像文件生成容器。最后使用和操作的就是容器。
如果項目更新了,需要更換容器。更換之前,需要停止容器並首先刪除容器,要是先刪除鏡像文件的話,系統就會提示有容器在使用該鏡像。
所以更新的思路為,停止並刪除容器,更換鏡像文件,重新生成容器並運行。
如果想要更新,可能用到的命令如下:
8.查看執行中的容器
docker ps
查看所有容器命令
docker ps -a
9.停止指定的容器
docker stop 784fd3b294d8 (這個是容器ID,上一步知道的,每次都是隨機生成的)
或者
docker stop NAMES (同上)
10.啟動已停止的容器
docker start 784fd4b2947d(這是容器ID)
11.進入docker容器
sudo docker exec -it 容器ID /bin/bash
docker容器就相當於一個linux虛擬機,里面的目錄完全一樣。
查看當前目錄中的文件命令“ll”,不能用,“ls”可以。當然,有的命令不能用,也可以在里面裝。
1).如果項目中使用logback來打印日志文件,保存的地址是/usr/socket/...,如果用docker容器啟動,產生的log文件當然在容器里,並不在雲服務器對應的位置。進入到容器的指定位置,可以看到日志文件。
2).如果項目里有上傳文件的功能,並且使用的外部地址,地址是 /usr/upload/.. ,如果用容器運行,也是只會傳到容器里對應的位置。
12.刪除容器
docker rm 784fd3b294d8 (刪除鏡像之前必須先刪除使用該鏡像的容器)
13.如果要刪除鏡像文件
docker rmi springboot(springboot是鏡像文件名字)
最后:我這里是使用Dockerfile文件生成鏡像文件的,還有使用maven的方式生成鏡像文件。我還未試過。