1.Docker
- CE 即社區版(免費,支持周期 7 個月)
- EE 即企業版,強調安全,付費使用,支持周期 24 個月
2.centos安裝Docker
注意: CentOS 7 滿足最低內核的要求,所以我們在CentOS 7安裝Docker,
- 卸載(可選)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
- 安裝
安裝yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
更新本地鏡像源
# 設定docker鏡像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
最后,開始安裝
yum install -y docker-ce
通過命令啟動docker
systemctl start docker # 啟動docker服務
systemctl stop docker # 停止docker服務
systemctl restart docker # 重啟docker服務
- 注意打開埠,我直接把我的全部打開了
- 查看docker版本:docker -v
3.docker的指令
-
拉取鏡像:
docker pull xxx(參考:DockerHub)

-
查看拉取到的鏡像:
docker images -
使用docker save匯出鏡像到磁盤
docker save -o [保存的目標檔案名稱] [鏡像名稱]例子:docker save -o nginx.tar nginx:latest

-
洗掉本地的xxx鏡像:
docker rmi xxx:xxx例子:docker rmi nginx:latest -
加載本地檔案:
docker load -i xxx.tar例子:docker load -i nginx.tar
小練習

4.創建并運行容器命令

- 創建并運行xxx容器的命令:
docker run --name containerName -p 80:80 -d xxx:xxx(比如nginx:latest)
命令解讀:
- docker run :創建并運行一個容器
- –name : 給容器起一個名字,比如叫做mn
- -p :將宿主機埠與容器埠映射,冒號左側是宿主機埠,右側是容器埠
- -d:后臺運行容器
- xxx:鏡像名稱,例如nginx
查看正在運行中的容器:docker ps
查看所有容器,包括暫停的:docker ps -a

需求:進入Nginx容器,修改HTML檔案內容,添加“傳智教育歡迎您”
提示:進入容器要用到docker exec命令,
步驟:
1)進入容器,進入我們剛剛創建的nginx容器的命令為:
docker exec -it mn bash
命令解讀:
-
docker exec :進入容器內部,執行一個命令
-
-it : 給當前進入的容器創建一個標準輸入、輸出終端,允許我們與容器互動
-
mn :要進入的容器的名稱
-
bash:進入容器后執行的命令,bash是一個linux終端互動命令(容器內沒有vi命令)
cd /usr/share/nginx/html
sed -i -e 's#Welcome to nginx#隨風歡迎你#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
-
Ctrl+P+Q:退出容器
-
查看容器日志的命令:
- docker logs xxx(自己起的容器名)
- 添加 -f 引數可以持續查看日志docker logs -f xxx(自己起的容器名)
- Ctrl+C退出(-f的)
5.資料卷(容器資料管理)
-
資料卷的作用:
- 將容器與資料分離,解耦合,方便操作容器內資料,保證資料安全
-
什么是資料卷
- 資料卷volume是一個虛擬目錄,指向宿主機檔案系統中的某個目錄,

這樣,對容器的一切操作都會在資料卷對應的宿主機目錄了,
- 資料卷volume是一個虛擬目錄,指向宿主機檔案系統中的某個目錄,
-
資料集操作命令
資料卷操作的基本語法如下:
docker volume [COMMAND]
-
docker volume命令是資料卷操作,根據命令后跟隨的command來確定下一步的操作:
- create 創建一個volume
- inspect 顯示一個或多個volume的資訊
- ls 列出所有的volume
- prune 洗掉未使用的volume
- rm 洗掉一個或多個指定的volume
-
掛載資料卷
我們在創建容器時,可以通過 -v 引數來掛載一個資料卷到某個容器內目錄
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
移除自己停用的容器:docker rm -f id(可以通過docker ps -a 進行查看)
案例-給nginx掛載資料卷
需求:創建一個nginx容器,修改容器內的html目錄內的index.html內容
分析:上個案例中,我們進入nginx容器內部,已經知道nginx的html目錄所在位置/usr/share/nginx/html ,我們需要把這個目錄掛載到html這個資料卷上,方便操作其中的內容,
提示:運行容器時使用 -v 引數掛載資料卷
步驟:
① 創建容器并掛載資料卷到容器內的HTML目錄
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
② 進入html資料卷所在位置,并修改HTML內容
# 查看html資料卷的位置
docker volume inspect html
# 進入該目錄
cd /var/lib/docker/volumes/html/_data
# 修改檔案
vi index.html
- 給MySQL掛載本地目錄
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=922815 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
要是運行不起來可以嘗試洗掉之前資料卷conf檔案夾里面的東西
5.Dockerfile自定義鏡像
- 鏡像結構

- Dockerfile語法
構建自定義的鏡像時,并不需要一個個檔案去拷貝,打包,
我們只需要告訴Docker,我們的鏡像的組成,需要哪些BaseImage、需要拷貝什么檔案、需要安裝什么依賴、啟動腳本是什么,將來Docker會幫助我們構建鏡像,
Dockerfile就是一個文本檔案,其中包含一個個的指令(Instruction),用指令來說明要執行什么操作來構建鏡像,每一個指令都會形成一層Layer,

- 構建java專案
- 新建檔案夾demo
- 拷貝jar包到demo里面
- 放jdk8.tar.gz到demo里面
- 將Dockerfile放到demo里面
# 指定基礎鏡像
FROM ubuntu:16.04
# 配置環境變數,JDK的安裝目錄
ENV JAVA_DIR=/usr/local
# 拷貝jdk和java專案的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安裝JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置環境變數
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露埠
EXPOSE 8090
# 入口,java專案的啟動命令
ENTRYPOINT java -jar /tmp/app.jar
- 將demo放到我們的centos系統里面
- 運行:
docker build -t javaweb:1.0
基于java8構建Java專案(重要)
雖然我們可以基于Ubuntu基礎鏡像,添加任意自己需要的安裝包,構建鏡像,但是卻比較麻煩,所以大多數情況下,我們都可以在一些安裝了部分軟體的基礎鏡像上做改造,
例如,構建java專案的鏡像,可以在已經準備了JDK的基礎鏡像基礎上構建,
需求:基于java:8-alpine鏡像,將一個Java專案構建為鏡像
實作思路如下:
-
① 新建一個空的目錄,然后在目錄中新建一個檔案,命名為Dockerfile
-
② 拷貝課前資料提供的docker-demo.jar到這個目錄中
-
③ 撰寫Dockerfile檔案:
-
a )基于java:8-alpine作為基礎鏡像
-
b )將app.jar拷貝到鏡像中
-
c )暴露埠
-
d )撰寫入口ENTRYPOINT
內容如下:
FROM java:8-alpine COPY ./app.jar /tmp/app.jar EXPOSE 8090 ENTRYPOINT java -jar /tmp/app.jar
-
-
④ 使用docker build命令構建鏡像
-
⑤ 使用docker run創建容器并運行
隨風
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317856.html
標籤:其他
下一篇:TongWeb之vue打包部署
