# yum更新
yum update
# 查看docker版本
yum list docker-ce --showduplicates | sort -r
# 安裝
yum install docker-ce-18.06.1.ce-3.el7
# 啓動
systemctl start docker
# 測試
docker version
複製代碼
docker版本跟服務器系統有很大關係,其餘系統安裝可參考文章末尾參考連接。html
啓動服務java
sudo systemctl start dockerpython
鏡像存放位置linux
cd var/lib/docker/containersnginx
查看運行的容器git
docker psgithub
中止容器web
docker stop ip/namespring
查看刪除已經中止但未卸載的鏡像docker
docker ps -l 以後rm刪除
查看本地主機上的鏡像
docker images
啓動鏡像
交互式:docker run -t -i ubuntu:15.10 /bin/bash
後臺模式 docker run -d ubuntu:15.10 /bin/sh
鏈接容器
docker run -d -p 8081:5000 --name runoob training/webapp python app.py 能夠起名
進入容器
ps查到的name:docker exec -it elegant_kare bash
新增標籤
docker tag 860c279d2fec runoob/centos:dev
刪除鏡像 docker rmi centos:6.7
構建鏡像
docker build -t runoob/centos:6.7 .
文件掛載
docker run -v $PWD:/exch-logs -d --net=host -p 0.0.0.0:8090:8090 exch/exch-platform
查看容器內日誌
docker logs -f -t --tail 10 e81af59cd903
卸載
1.查詢安裝過的包
yum list installed | grep docker
2.刪除安裝的軟件包
yum -y remove docker-engine.x86_64
3.刪除鏡像/容器等
rm -rf /var/lib/docker
# 修改docker配置文件
vi /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd 後面填上-H tcp://0.0.0.0:8081 -H unix:///var/run/docker.sock
例如:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:8081 -H unix:///var/run/docker.sock
注意4個零,和你但願開通的端口。
# 從新掃描文件
systemctl daemon-reload
# 啓動docker
systemctl start docker
# 測試,有返回則成功,不然檢測端口
curl http://localhost:8081/info
複製代碼
<!--docker部署並運行,在cmd中運行一下命令-->
<!-- mvn clean package -f pom.xml -P dev,!local docker:stop docker:remove docker:build docker:start -->
<!--等待並訪問-->
<!-- 訪問 http://10.18.9.17:port/exch_platform/ -->
<!--可查看日誌部署進度-->
<!--mvn clean package -f pom.xml -P dev,!local docker:logs -Ddocker.follow -->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.27.2</version>
<configuration>
<!--docker API接口-->
<dockerHost>http://10.18.9.17:8081</dockerHost>
<images>
<image>
<alias>${project.artifactId}-${port}</alias>
<!--鏡像名-->
<name>exch/${project.artifactId}:latest</name>
<build>
<!--父鏡像-->
<from>java:8</from>
<!--打包-->
<assembly>
<descriptor>${basedir}/src/main/java/com/exch/platform/docker/docker-assembly.xml</descriptor>
</assembly>
<!--鏡像啓動命令-->
<cmd>
<shell>java -jar /maven/${project.artifactId}.jar</shell>
</cmd>
</build>
<run>
<!--數據卷,掛在文件的地址,例如輸出項目日誌-->
<volumes>
<bind>
<volume>/apps/product:/exch-logs</volume>
</bind>
</volumes>
<namingStrategy>alias</namingStrategy> <!--container全名規則-->
<!--端口映射-->
<ports>
<port>0.0.0.0:8090:8090</port>
</ports>
<!--網絡策略-->
<net>host</net>
</run>
</image>
</images>
</configuration>
</plugin>
複製代碼
須要根據你的條件修改的地方:
一、docker API接口
二、你但願的鏡像名
三、打包文件的XML地址
四、數據卷地址
五、項目的端口映射
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<files>
<file>
<source>target/${project.artifactId}.jar</source>
<destName>${project.artifactId}.jar</destName>
</file>
</files>
</assembly>
複製代碼
執行此命令,打包發佈到服務器並運行,提示成功時,其實還在部署。
mvn clean package -f pom.xml -P dev,!local docker:stop docker:remove docker:build docker:start
可經過查詢日誌命令查看
mvn clean package -f pom.xml -P dev,!local docker:logs -Ddocker.follow
如何部署分佈式前,介紹一下docker生態的另外一個產品:
負責快速在集羣中部署分佈式應用。由python開發。
ompose 經過一個配置文件來管理多個Docker容器,在配置文件中,全部的容器經過services來定義,而後使用docker-compose腳原本啓動,中止和重啓應用,和應用中的服務以及全部依賴服務的容器,很是適合組合使用多個容器進行開發的場景。
一、在 Dockfile 中定義你的應用環境,使其能夠在任何地方複製。
二、在 docker-compose.yml 中定義組成應用程序的服務,以便它們能夠在隔離的環境中一塊兒運行。
三、最後,運行dcoker-compose up,Compose 將啓動並運行整個應用程序。
複製代碼
version: '3'
services:
dev:
image: 'dev:latest'
在docker-compose.yml文件目錄下 執行docker-compose up 就會運行容器
複製代碼
安裝compose-集羣管理
yum -y install python-pip
pip install --upgrade pip
pip install docker-compose
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar xvf harbor-offline-installer-v1.6.1.tgz
修改harbor.cfg
啓動./install.sh
若是端口占用,咱們能夠去修改docker-compose.yml文件中
# 推送到私有倉庫
項目打標籤 docker tag hello-world 172.16.50.37/repo-test/hello-world:hw20181019tag
推送docker push 172.16.50.37/repo-test/hello-world
重啓
systemctl restart docker.service
一、中止Harbor
$ docker-compose down -v
二、啓動Harbor
$ docker-compose up -d
須要先登陸後才能推送
docker login http://10.18.9.17
複製代碼
在Docker技術的基礎上,爲容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提升了大規模容器集羣管理的便捷性。Kubernetes是一個完備的分佈式系統支撐平臺,具備完備的集羣管理能力,多擴多層次的安全防禦和准入機制、多租戶應用支撐能力、透明的服務註冊和發現機制、內建智能負載均衡器、強大的故障發現和自我修復能力、服務滾動升級和在線擴容能力、可擴展的資源自動調度機制以及多粒度的資源配額管理能力。同時Kubernetes提供完善的管理工具,涵蓋了包括開發、部署測試、運維監控在內的各個環節。
cat /etc/redhat-release 查看系統版本,高版本支持7.4 使用CentOS Linux release 7.6.1810 對應使用18.06.1-ce版本 查看yum中docker版本;
yum list docker-ce --showduplicates | sort -r
安裝對應版本
yum install docker-ce-18.06.1.ce-3.el7
解決,在發起登陸的客戶端主機上的文件(如沒有則建立)/etc/docker/daemon.json中添加以下參數:
{"insecure-registries": [ "172.16.50.37" ]}
須要指定已存在的鏡像
問題4:打包上傳到服務器可是不能上傳到私有倉庫
問題5: 部署的項目訪問不到, 須要開通端口
問題6:啓動沒有JAVA環境,須要部署在有Java 環境的父容器上
問題7:fabric8部署的項目啓動不了,好像缺乏文件。
在使用docker部署前,須要先執行maven打包,保證項目完整。
4種網絡模式問題,--net=host,bridge,container,none 查看全部網橋 sudo brctl show 查看某個網橋信息 sudo ifconfig docker0
io.fabric8docker-maven-plugin 配置項目中使用標籤配置啓動參數
使用cmd運行,直接關閉
或者docker:start命令啓動,不是使用docker:run,可是不打印日誌
docker:logs -Ddocker.follow 打印日誌 ctrl+c也不會關閉容器
例如:mvn clean package -f pom.xml -P dev,!local docker:logs -Ddocker.follow docker:stop docker:remove docker:build docker:start
可是有一個問題,新部署的項目docker-maven-plugin:0.27.2:logs 處會卡死。就是使用 mvn clean package -f pom.xml -P dev,!local docker:logs -Ddocker.follow docker:start
由於項目問題,啓動時報錯,致使mvn關閉不了服務,須要敲命令 docker rm 7849372d00264c6eec358db63baee3d4208aae24ad778c38556604ecac339893刪除
CentOS7上Docker安裝與卸載
docker草鳥教學
Docker私有倉庫搭建(Harbor)
自建Docker Harbor鏡像管理工具
使用Maven插件構建SpringBoot項目,生成Docker鏡像push到DockerHub上
使用docker-maven-plugin插件將項目編譯爲docker鏡像到遠程linux服務器
springboot 應用打包發佈到 docker
最強大的Docker插件 fabric8io/docker-maven-plugin
Docker:網絡模式詳解
spring cloud 與 docker-compose構建微服務
Docker集中化web界面管理平臺-Shipyard部署記錄