可以理解為全新的虛擬機器容器
環境: CentOS 7.x
首先更新yum: sudo yum -y update
然後執行安裝命令:sudo yum install -y docker
Docker預設位置:/var/lib/docker
#cd進入不了docker檔案必須加上sudo
1、管理Docker虛擬機器命令
啟動Docker
sudo systemctl start docker
重啟Docker
sudo systemctl restart docker
#使用命令檢視Docker是否啟動
ps -ef | grep docker
關閉Docker
sudo systemctl stop docker
2、Docker流程
3、給當前使用者賦予執行docker命令許可權
#1、建立docker使用者組
sudo groupadd docker
#2、將當前使用者新增到docker組中 檢視當前使用者 whoami
sudo gpasswd -a${user} docker
#3、重啟docker程式
sudo systemctl restart docker
#4、重新登入Xshell
1、DaoCloud官網地址
[https://www.daocloud.io/mirror]()
2、配置DaoCloud
2.1 shell下執行命令
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
2.2 執行完上述命令後,多了個逗號,開啟etc/docker/daemon.json
檔案,去掉“,”
#普通使用者進入不了etc/docker/daemon.json檔案
#使用su命令更換成root使用者
vi etc/docker/daemon.json
2.3 重啟Docker
sudo systemctl restart docker
1、線上安裝映象
#1、搜尋java映象
docker search java
#2、從dockerhub拉取並安裝java映象
docker pull docker.io/java
#安裝指定版本映象
#docker pull mysql:5.7
2、映象相關基礎命令
#檢視所有映象
docker images
#修改映象名稱
docker tag oldname newname
#備份映象 (映象匯出)
docker sava java>/home/java.tar.gz
#映象匯入
docker load </home/java.tar.gz
#刪除映象
docker rmi 映象名或映象ID
#檢視映象依賴
docker history imageid
3、建立自己的映象
#在test資料夾下建立一個Dockerfile,並在檔案中寫入
#FROM centos
#CMD echo "hello-docker!!!"
sudo vi Dockerfile
#-t代表IMAGE的名稱, .代表在本資料夾下的Dockerfile
docker build -t hello-docker .
4、Dockerfile語法
#選取baseimage
FROM
#scratch表示不依賴任何image,從頭製作
FROM scratch
#映象作者資訊
LABEL
LABEL maintainer = "LiLi@qq.com"
LABEL version = "1.0"
LABEL description = "this is description"
#執行命令並建立新的image Layer
RUN
RUN yum update && yum install -y vom \
python-dev #反斜線換行
RUN apt-get update && apt-get install -y perl \
pwgen --no-install-recommends && rm -rf \
/var/lib/apt/lists/* #注意清理cache
RUN /bin/bash -c'source $HOME/.bashrc;echo$HOME'
#設定當前工作目錄,類似於cd命令
WORKDIR
WORKDIR /root #如果沒有會自動建立root
WORKDIR demo
RUN pwd #輸出結果/root/demo
#將本地檔案新增到docker image中
ADD and COPY
ADD hello / #將hello檔案新增到跟目錄
ADD test.tar.gz / #新增到根目錄並解壓
WORKDIR /root ADD hello test/ #新增到/root/test中
WORKDIR /root COPY hello test/
#ADD與COPY區別
ADD除了COPY還可以對tar.gz解壓縮
#設定常量
ENV name = "docker"
#取值
$name
#儲存和網路
VOLUME:儲存
VOLUME home:/soft
-v /home:/soft
EXPOSE:網路相關
#設定容器啟動後預設執行的命令和引數
#如果docker run指定了其他命令,CMD命令會被忽略
#如果定義了多個CMD,只有最後一個會執行
CMD
#設定容器啟動時執行的命令
#讓容器以應用程式或者服務的形式執行
#不會被忽略,一定會執行
ENTRYPOINT
4、Dockerfile學習資料
https://github.com/docker-library/
1、容器基礎命令
#啟動容器
docker run
#-it:代表互動式執行,進入docker環境
#--name代表容器名稱
#-p 9000:8000 將宿主機9000埠對映到docker容器的800埠
#-v 將宿主機/home/project對映到容器的/soft目錄
#--privileged 代表docker擁有操作宿主機檔案的最高許可權
docker run -it --name 容器名稱 映象名稱 bash
docker run -it -p 9000:8080 -p 9001:8888 --name 容器名稱 映象名稱 bash
docker run -it -v /home/project:/soft --privileged --name 容器名稱 映象名稱 bash
#首先在原環境下mkdir一個test檔案
#進入容器後在soft資料夾下建立一個touch docker.txt,並用echo "hello-docker" > docker.txt寫入txt檔案中,使用cat命令檢視所寫的內容。結果:宿主機的/usr/gy/test中有檔案hello.txt
#檢視執行的容器
docker container ls -a
docker ps -a
#退出容器
exit
#暫停容器
docker pause 容器名稱
#恢復容器執行
docker unpause 容器名稱
#停止容器
docker stop 容器名稱
#重新啟動容器
docker start -i 容器名稱
#刪除容器,可以使用"docker rm 容器id"來刪除一個終止狀態的容器;若想要刪除一個執行中的容器,需要加引數-f
sudo docker rm -f 容器id
#刪除所有容器
docker rm `docker ps -a -q`
#刪除所有退出的容器
docker rm $(docker container ls -f "status=exited" -q)
1、映象上傳到dockerhub
注意點:映象名字:dockerhub-使用者名稱/映象名稱,否則就會出現無許可權提示
step1:docker login
登入dockerhub
step2: docker push gy/imagename
step3: 驗證:
方法一:登入dockerhub網站,找到提交的映象
方法二:刪除本地的映象,重新拉去dockerhub上新提交的映象
1、建立專案並部署到阿里雲伺服器
- 基於SpringBoot建立hellodocker的web工程
- 將工程打包
mvn clear package -DskipTests
- 上傳到Linux系統
- 防火牆開發5000埠
- 阿里雲伺服器開放安全組5000埠
- 專案在伺服器執行起來
- 瀏覽器訪問
#防火牆開放埠命令
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
#重啟防火牆
sudo systemctl restart firewalld
#檢視埠號是否開啟
sudo firewall-cmd --query-port=5000/tcp
2、編寫Dockerfile
2.1、基於CentOS 7映象,編寫Dockerfile
from centos:7
label # 可以不加
run yum install -y java
copy docker-hello.jar /app/
workdir /app
expose 5000
entrypoint ["java","-jar","docker-hello.jar"]
2.2構建映象
docker bulid -t imagenane
2.3啟動容器
docker run -p 5000:5000 imagename /bin/bash
1、docker-maven-plugin外掛
外掛地址:https://github.com/spotify/docker-maven-pl...
外掛的簡單使用
1)修改pom檔案
<!-- 注意:Dockerfile檔案放到resources目錄下 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<dockerHost>http://docker宿主機ip:2375
</dockerHost>
<!-- 注意imageName一定要是符合正則[a-z0-9
-_.]的,否則構建不會成功 -->
<imageName>docker-spring-boot-demo
</imageName>
<!-- 指定Dockerfile所在的路徑 -->
<dockerDirectory>${basedir}/src/main/
resources</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.di
rectory}</directory>
<include>${project.build.fin
alName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2)開啟docker遠端服務
#進入/usr/lib/systemd/system目錄,開啟docker.service檔案
#在[Service]部分的最下面新增下面兩行
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
#docker重新讀取配置檔案,並重啟docker服務
sudo systemctl daemon -reload
sudo systemctl restart docker
#檢視docker程式
netstat -tnlp
3)構建映象
mvn clean package docker:build
2、Dockerfile檔案編寫
Dockerfile放到resource目錄下,在docker-maven-plugin外掛中已經配置了Dockerfile的載入位置
from centos:7
run yum install -y java
copy docker-hello.jar /app/
workdir /app
expose 5000
entrypoint ["java","-jar","docker-hello.jar"]
3、push映象
將Docker映象push到DockerHub上
1)修改maven配置
找到settings.xml並新增一下段落
<servers>
<server>
<id>docker-hub</id>
<username>DockerHub 的賬號</username>
<password>DockerHub 的密碼</password>
<configuration>
<email>xx@xx.com</email>
</configuration>
</server>
</servers>
2)建立Repository
註冊一個賬號:[https://hub.docker.com/]()
在DockerHub上建立Create Repository
3)修改pom檔案
專案pom.xml修改為如下:注意imageName的路徑要和repo的路徑一致
<properties>
<docker.image.prefix>monotonous</docker.image.prefix>
<docker.repo>fy19-springboot-docker-demo</docker.repo>
</properties>
4)構建映象 使用maven命令
mvn clean package docker:build -DpushImage
mvn clean package docker:build -DpushImageTag