15分鐘入門Docker

安裝Docker

參考鏈接: https://mp.weixin.qq.com/s/_sL-xGoxT_i2_zJiJkV7Yw

我的環境

​ 系統環境: CentOS 7.6

安裝步驟

  1. 安裝需要的軟件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    # device-mapper-persistent-data lvm2是幹嘛的?
     # docker要想數據存儲就必須要安裝這兩個,這兩個是爲了docker做數據存儲用的。
    
  2. 添加國內鏡像

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo yum makecache fast
    
  3. 更新安裝Docker-CE

    # Docker從1.13.x版本開始,版本分爲企業版EE和社區版CE,版本號也改爲按照時間線來發布,比如17.03就是2017年3月, 此處我們安裝社區版本
    sudo yum -y install docker-ce
    
  4. 驗證是否安裝成功

    sudo service docker start
    docker version
    
  5. 安裝docker版hello world 嘗試

    docker pull hello-world
    docker run hello-world
    

配置 Docker 加速鏡像

  1. 打開網站

    https://www.aliyun.com/

  2. 搜索“容器鏡像服務 控制檯”

    img

  3. 點擊“鏡像加速器”

    img

  4. 最下方操作文檔切換到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
    
  5. 大功告成

    上面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

下次我們再說說 Dockerfiledocker-compose 的使用, end~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章