在家學docker

docker進階

# 安裝docker
# 卸載舊版本的docker
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 需要的安裝包
yum install -y yum-utils
# 設置鏡像倉庫
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo # 默認是國外的,很慢
# 使用阿里雲鏡像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安裝前更新yum索引
yum makecache
# 安裝docker相關的內容
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 啓動docker
systemctl start docker
# 查看啓動信息
docker version
# 查看helloworld
docker run hello-world
# 卸載docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 刪除docker資源
sudo rm -rf /var/lib/docker # docker的默認工作路徑
sudo rm -rf /var/lib/containerd

容器數據卷

# 匿名掛載
docker run -v 容器內路徑 
# 具名掛載
docker run -v 卷名:容器內路徑
# 指定容器外的掛載路徑
docker run -v /容器外路徑:容器內路徑

所有docker容器內的卷,沒有指定目錄的情況都放在/var/lib/docker/volumes/xxx/_data

初識dockerFile(數據容器卷)

# 編寫dockerFile
vim dockerfile1 # 進入如下編輯界面,輸入i進入編輯模式
FROM centos

VOLUME ["volume01", "volume02"]

CMD echo "----end----"
CMD /bin/bash
# 先esc,再退出並保存
:wq
# 通過dockerfile創建鏡像(最後一個.表示創建在當前目錄下)
docker build -f dockerfile1 -t zengr/centos:1.0 .
# 查看容器信息
docker inspect 容器id
# 退出當前容器命令(容器不關閉運行)
ctrl p q
# 容器間實現數據共享(創建docker02容器,它的卷繼承了docker01,實現數據共享)
docker run -it --name docker02 --volumes-from docker01 zengr/centos:1.0

DockerFile

dockerFile是用來構建docker鏡像的文件,它的構建步驟:

# 1、編寫一個 dockerfile 文件
# 2、docker build構建成爲一個鏡像
# 3、docker run運行鏡像
# 4、docker push發佈鏡像(dockerHUb、阿里雲倉庫)


FROM  # 基礎鏡像,一切從這裏開始構建
MAINTAINER # 鏡像是誰做的,姓名+郵箱
RUN # 鏡像創建的時候需要運行的命令
ADD # 添加的內容
WORKDIR # 鏡像工作的目錄
VOLUME # 掛載的目錄
EXPOSE # 暴露的端口(和-p一個意思)
CMD # 指定容器啓動時運行的命令(只有最後一個生效)
ENTRYPOINT # 指定容器啓動時運行的命令(可以追加命令)
ONBUILD # 當構建一個被繼承DockerFile這個時就會運行ONBUILD指令
COPY 	# 類似ADD,將文件拷貝到鏡像中
ENV # 構建時設置環境變量

創建一個自己的centos

# 創建dockerfile
FROM centos
MAINTAINER zengr<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
# docker build的時候執行RUN
RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
# docker run的時候執行CMD
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
# 使用docker build構建
docker build -f mydockerfile-centos -t mycentos:0.1 .

實戰練習:創建Tomcat鏡像

# 首先需要將tomcat需要的運行時環境如jdk、tomcat安裝包放在本機環境中
# 編寫Dockerfile
FROM centos:7
MAINTAINER zengr<[email protected]>

COPY readme.txt /usr/local/readme.txt
ADD jdk_8u1-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
RUN yum -y install vim
# 配置環境變量
ENV MYPATH /usr/local 
# 設置工作目錄
WORKDIR $MYPATH
# 配置jdk、tomcat的環境變量
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 暴露8080端口
EXPOSE 8080
# 執行命令
CMD /usr/local/apache-tomcat-9.0.22/bin/start.sh && tail -F /usr/local/apache-tomcat-9.0.22/logs/catalina.out

# 編寫完Dockerfile之後,構建鏡像
docker build -t diy-tomcat .
# 運行容器
docker run -d -p 9090:8080 --name zengrtomcat -v /home/zengr/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/zengr/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.22/logs diy-tomcat

# 在本機放上自己的項目文件,即可訪問docker部署的tomcat

發佈自己的鏡像(dockerHub、阿里雲鏡像)

# 登錄dockerHub
docker login -u zengr
password:123456
# push到dockerHub(儘量臺上tag版本號)
docker push diy-tomcat:[tag]

# 發佈到阿里雲鏡像
docker login -u 1568012458 registry.cn-beijing.aliyuncs.com
password 123456
...

發佈SpringBoot微服務項目

# 通過package打包項目,生成jia包
# 創建Dockerfile文件
FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

# 將生成的jar包、Dockerfile文件放在服務器需要運行docker命令的目錄下,通過build創建鏡像(zengr:1.0)
docker build -t zengr:1.0 .
# 運行容器
docker run -d -P --name zengr-springboot-web zengr:1.0
# 測試
curl localhost:49153(隨機映射端口)

docker compose

# 發佈自己的帶有redis的SpringBoot項目
# 構建Dockerfile,創建SpringBoot項目鏡像
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

# 構建docker-compose.yml文件,編排項目(SpringBoot、redis)
version '3.8'
services:
	zengr:
		build: .
		image: zengr
		depends_on:
		 - redis
		ports:
		 - "8080:8080"
		 
	redis:
		image: "library/redis:alpine"	
# 將以上文件丟到服務器目錄下,啓動(jar包、Dockerfile、docker-compose.yml)
docker-compose up

# docker-compose也是單機的,如果需要用到集羣的環境,那麼就要上docker-swarm
docker stack deploy -c 應用名稱
  • 經研究,發現分行有自己的docker鏡像倉庫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章