15分鐘入門Docker
安裝Docker
參考鏈接: https://mp.weixin.qq.com/s/_sL-xGoxT_i2_zJiJkV7Yw
我的環境
系統環境: CentOS 7.6
安裝步驟
-
安裝需要的軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2 # device-mapper-persistent-data lvm2是幹嘛的? # docker要想數據存儲就必須要安裝這兩個,這兩個是爲了docker做數據存儲用的。
-
添加國內鏡像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast
-
更新安裝Docker-CE
# Docker從1.13.x版本開始,版本分爲企業版EE和社區版CE,版本號也改爲按照時間線來發布,比如17.03就是2017年3月, 此處我們安裝社區版本 sudo yum -y install docker-ce
-
驗證是否安裝成功
sudo service docker start docker version
-
安裝docker版hello world 嘗試
docker pull hello-world docker run hello-world
配置 Docker 加速鏡像
-
打開網站
-
搜索“容器鏡像服務 控制檯”
-
點擊“鏡像加速器”
-
最下方操作文檔切換到centos, 複製操作命令執行
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
-
大功告成
上面1-5步驟執行完成後就大功告成了,就可以用
docker pull xxx
來測試下了,速度賊拉快。
Docker 常用命令
docker -h # docker 幫助說明
docker images # 查看當前所有鏡像
docker ps # 查看當前正在運行中的容器
docker run # 根據鏡像生成一個新的容器
# 鏡像與容器間的關係: 從服務器抓取的是鏡像, 每次運行docker run 都將產生新的容器, 一對多的關係, 我們運行的所有東西都在容器中, 各容器之間互不干擾. 刪除鏡像前, 需將所有依據鏡像生成的容器刪除
docker rm xxx # 根據 容器id/name 刪除對應容器
docker rmi xxx # 根據 鏡像id/name 刪除對應鏡像
Docker 入門實戰: 安裝tomcat
抓取鏡像
docker pull tomcat
創建容器
docker run -p 10000:8080 -d tomcat
# docker run tomcat 表示用 tomcat 的鏡像創建一個容器, 後續我們所有操作均爲容器操作
# 其中 -p 10000:8080 -d 爲啓動參數
# -p 10000:8080 代表將容器內部端口 8080 映射到服務器 10000 端口, 後續我們即可通過訪問服務器的 10000 端口訪問到容器內的 8080 端口
# -d 表示在後臺啓動容器, 如果沒有這句話, 我們的控制檯將打印如下語句, 使用 ctrl + c 將關閉該容器
瀏覽器訪問宿主機Ip:10000 (宿主機: 運行docker的電腦即爲宿主機)
http://xxx.xxx.xxx.xxx:10000
404?那是因爲新版本tomcat將webapps下面的內容都刪了,所以找不到了原來的index.jsp文件了。這又有問題了,我怎麼進入我容器裏的tomcat目錄?比如看個log,找到webapps給他添加文件等操作。
查看運行日誌
doceker ps # 查看當前正在運行的容器
docker logs CONTAINER_ID # 根據查到的容器 id, 查看日誌
進入容器控制檯
# 使用上一步獲取的 CONTAINER_ID 進入容器內部
docker exec -it CONTAINER_ID /bin/bash
ls -l # 進入容器後會默認進入 tomcat 目錄下, 使用該命令查看當前目錄下所有文件
# 可以看到 webapps 和 webapps.dist 兩個文件夾, webapps 空空如也, webapps.dist 這個文件夾是原有 tomcat 的主頁面
# 將 webapps 刪除, webapps.dist 重命名爲 webapps
rm -rf webapps # 刪除 webapps 文件夾
mv webapps.dist webapps # 重命名
exit # 退出當前容器
等待一會, tomcat 將會自動重新部署 webapps, 我們重新打開 http://xxx.xxx.xxx.xxx:10000 即可看到熟悉的tomcat畫面
停止和重新啓動容器
docker stop CONTAINER_ID # 根據 容器ID 停止容器
docker ps -a # 查詢全部容器, 包括已停止的容器
docker start CONTAINER_ID # 根據 容器ID 啓動現有容器
# 也可以直接使用 docker restart CONTAINER_ID 命令進行重啓容器
那我們怎麼讓他運行我們自己的jar包呢?
複製宿主機文件到 docker 容器中
宿主機的 war 包路徑在 /usr/local/war/demo.war
下
docker cp /usr/local/war/demo.war CONTAINER_ID:/usr/local/tomcat/webapps
docker restart CONTAINER_ID
瀏覽器訪問宿主機Ip:10000/demo, 即可看到對應war包已啓動
http://xxx.xxx.xxx.xxx:10000/demo
掛載宿主機目錄(數據卷)
即讓容器內的 文件夾映射到宿主機文件夾
# 掛載目錄需要新建一個容器
docker run -p 10001:8080 -d -v /usr/local/war:/usr/local/tomcat/webapps tomcat
數據卷是掛載目錄的一個高級用法
# 掛載目錄需要新建一個容器, 與上面相比, 這裏只多了一個 --name tomcatVol
# 數據卷其實就是啓動一個特殊容器時可以指定 name, 其他容器可通過 name 引用這次的掛載配置
docker run -p 10002:8080 -d -v /usr/local/war:/usr/local/tomcat/webapps --name tomcatVol tomcat
docker run -p 10003:8080 -d --volumes-from tomcatVol tomcat
docker run -p 10004:8080 -d --volumes-from tomcatVol tomcat
下次我們再說說 Dockerfile
和 docker-compose
的使用, end~