1、前提java
在Linux環境,並已確認成功安裝Docker。linux
安裝Dockergit
Kubernetes默認CRI(容器運行時)爲Docker,所以先安裝Docker。github
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoweb
$ yum -y install docker-ce-18.06.1.ce-3.el7docker
$ systemctl enable docker && systemctl start dockerapache
$ docker --versioncentos
Docker version 18.06.1-ce, build e68fc7atomcat
2、目的bash
構建一個以oracle jdk version:1.8.0.131+apache tomcat version:7.0.88 Docker
將一個簡單的web應用部署到建立好的Tomcat Docker 容器中。
成功啓動Tomcat Docker,並正常運行部署到Tomcat中的簡單應用。
3、構建JDK+Tomcat Docker步驟
建立Docker 目錄
mkdir -p $HOME/apps/Docker/tomcat7_jre18
2.進入剛建立的目錄
cd $HOME/apps/Docker/tomcat7_jre18
3.官網分別下載jdk-linux-1.8.131-x64.tar.gz、apache-tomcat-7.0.88.tar.gz,上傳至本目錄(tomcat-jre),並解壓縮重命名。
tar -xvf apache-tomcat-7.0.88.tar.gz
tar -xvf jdk-linux-1.8.131-x64.tar.gz
mv apache-tomcat-7.0.88 tomcat7
mv jdk1.8.0_131 jdk18
4.編寫Docker構建文件
vi Dockerfile
#使用的基礎鏡像 FROM centos #建立目錄 RUN mkdir -p /docker_home/local #把當前目錄下的jdk文件夾添加到鏡像 ADD tomcat7 /docker_home/local/tomcat7 ADD java18 /docker_home/local/java18 ENV JAVA_HOME /docker_home/local/java18/ ENV CATALINA_HOME /docker_home/local/tomcat7 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin #暴露8080端口 EXPOSE 8080 #啓動時運行tomcat CMD ["/docker_home/local/tomcat7/bin/catalina.sh","run"] 5.構建docker images鏡像
#images REPOSITORY name:repos_local/tomcat7_jre18
docker build -t repos_local/tomcat7_jre18 .
6.run images to be container
docker run -d -p 8081:8080 --name tomcat7 repos_local/tomcat7_jre18
docker run -d 後臺執行 -p 主機暴露端口:容易端口 --name container名稱(惟一) 鏡像名稱
7.查看是否啓動成功
docker ps
[root@localhost acs]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
117b230feabb repos_local/tomcat7_jre18 "/docker_home/tomcat7/b..." 10 hours ago Up 11 seconds 0.0.0.0:8081->8080/tcp tomcat_acs
8.訪問tomcat地址(成功訪問)
http://ip:8081
9.進入已在運行docker tomcat 的容器中。
docker exec -it 117b230feabb /bin/bash
docker exec -it 容器ID/容器name 設定使用語言:/bin/bash、/bin/sh
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS說明:
-d :分離模式: 在後臺運行
-i :即便沒有附加也保持STDIN 打開
-t :分配一個僞終端
10.進入tomcat docker "webapps"目錄
docker exec -it 117b230feabb /bin/bash
cd webapps
pwd
/docker_home/local/tomcat7/webapps
11.咱們另開一個終端窗口,並將測試應用("hello-world.war")上傳至linux中
測試應用上傳至linux 位置本身決定,cd 至該測試應用的目錄後,執行下面命令:
docker cp hello-world.war 117b230feabb:/docker_home/local/tomcat7/webapps
上面命令是將linux中的文件傳至docker 容器:docker cp 文件路徑 容器ID/NAME:容器路徑
12.訪問tomcat 應用
http://ip:8081/hello/
13.訪問頁面成功,至此結束,謝謝你們查看本文章。
4、簡單列舉Docker經常使用命令
docker的使用命令
1 docker 命令介紹
docker --help
管理命令:
container 管理容器
image 管理鏡像
network 管理網絡
命令:
attach 介入到一個正在運行的容器
build 根據 Dockerfile 構建一個鏡像
commit 根據容器的更改建立一個新的鏡像
cp 在本地文件系統與容器中複製 文件/文件夾
create 建立一個新容器
exec 在容器中執行一條命令
images 列出鏡像
kill 殺死一個或多個正在運行的容器
logs 取得容器的日誌
pause 暫停一個或多個容器的全部進程
ps 列出全部容器
pull 拉取一個鏡像或倉庫到 registry
push 推送一個鏡像或倉庫到 registry
rename 重命名一個容器
restart 從新啓動一個或多個容器
rm 刪除一個或多個容器
rmi 刪除一個或多個鏡像
run 在一個新的容器中執行一條命令
search 在 Docker Hub 中搜索鏡像
start 啓動一個或多個已經中止運行的容器
stats 顯示一個容器的實時資源佔用
stop 中止一個或多個正在運行的容器
tag 爲鏡像建立一個新的標籤
top 顯示一個容器內的全部進程
unpause 恢復一個或多個容器內全部被暫停的進程
2.docker build命令的使用格式:
docker build [OPTIONS] <PATH | URL | ->
(1). 經常使用選項說明
--build-arg,設置構建時的變量
--no-cache,默認false。設置該選項,將不使用Build Cache構建鏡像
--pull,默認false。設置該選項,老是嘗試pull鏡像的最新版本
--compress,默認false。設置該選項,將使用gzip壓縮構建的上下文
--disable-content-trust,默認true。設置該選項,將對鏡像進行驗證
--file, -f,Dockerfile的完整路徑,默認值爲‘PATH/Dockerfile’
--isolation,默認--isolation="default",即Linux命名空間;其餘還有process或hyperv
--label,爲生成的鏡像設置metadata
--squash,默認false。設置該選項,將新構建出的多個層壓縮爲一個新層,可是將沒法在多個鏡像之間共享新層;設置該選項,其實是建立了新image,同時保留原有image。
--tag, -t,鏡像的名字及tag,一般name:tag或者name格式;能夠在一次構建中爲一個鏡像設置多個tag
--network,默認default。設置該選項,Set the networking mode for the RUN instructions during build
--quiet, -q ,默認false。設置該選項,Suppress the build output and print image ID on success
--force-rm,默認false。設置該選項,老是刪除掉中間環節的容器
--rm,默認--rm=true,即整個構建過程成功後刪除中間環節的容器
(2.) PATH | URL | -說明:
給出命令執行的上下文。
上下文能夠是構建執行所在的本地路徑,也能夠是遠程URL,如Git庫、tarball或文本文件等。
若是是Git庫,如https://github.com/docker/rootfs.git#container:docker,則隱含先執行git clone --depth 1 --recursive,到本地臨時目錄;而後再將該臨時目錄發送給構建進程。
構建鏡像的進程中,能夠經過ADD命令將上下文中的任何文件(注意文件必須在上下文中)加入到鏡像中。
-表示經過STDIN給出Dockerfile或上下文。
示例:
docker build - < Dockerfile
說明:該構建過程只有Dockerfile,沒有上下文
docker build - < context.tar.gz
說明:其中Dockerfile位於context.tar.gz的根路徑
docker build -t champagne/bbauto:latest -t champagne/bbauto:v2.1 .
docker build -f dockerfiles/Dockerfile.debug -t myapp_debug .
--------------------- 原文:https://blog.csdn.net/qq_23315711/article/details/80873021