關于 Docker
Docker 是開發(fā)以及運維人員通過容器來開發(fā)啥容,部署和運行應用程序的平臺。
使用 Linux 容器來部署應用程序的方式稱為容器化顷霹,該方式有利于更輕松的部署應用程序咪惠。
Docker 鏡像與容器
首先,容器是通過運行鏡像來啟動的淋淀。而鏡像則是一個可執(zhí)行的包遥昧,里面包含所有運行這個應用所需要的代碼,運行環(huán)境,庫炭臭,環(huán)境變量以及配置文件等等永脓,容器是鏡像運行時的一個實例。
基本命令
# 列出所有鏡像
? docker images
# 列出所有容器
? docker container ls -a
# 列出運行中的容器
? docker ps
# 運行指定鏡像
? docker run hello-world
# 停止運行容器
? docker stop container_id
# 移除本地容器
? docker rm contaienr_id
使用場景
假如我們要搭建一個 Web 環(huán)境鞋仍,其中 Java 版本要求為 1.8常摧,Tomcat 版本為 9。根據這個要求我們首先需要獲取到一個 centos 鏡像凿试,然后在基于該鏡像搭建我們所需要的環(huán)境排宰。
-
獲取 centos 鏡像
# 在 Docker Hub 中搜索需要的鏡像 ? docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 4890 [OK] ansible/centos7-ansible Ansible on Centos7 119 [OK] jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 99 [OK] # 通常選擇官方鏡像, 無官方鏡像可以選擇 star 數較高 ? docker pull centos
-
運行 centos 鏡像
# -d 表示以 Detached 模式運行似芝,-i 表示即使不是 attached 模式也保持標準輸入打開那婉,-t 表示分配一個偽終端,--name 表示容器名稱党瓮, # --volume 為掛載目錄详炬,-p 將端口從容器綁定到宿主機上,這里是將容器的 8080 端口綁定到宿主機的 8000 端口 ? docker run -dit \ --name my-centos \ --volume /srv/centos/tmp:/tmp \ -p 8000:8080 \ centos /bin/bash
-
進入容器
? docker exec -it my-centos /bin/bash
-
安裝 Java
# 安裝OpenJDK 8 ? yum install java-1.8.0-openjdk # 驗證 ? java -version
-
安裝 Tomcat9
# 安裝 wget ? yum install wget # 安裝到 /usr/local 目錄下 ? mkdir -p /usr/local/tomcat # 下載并解壓到 tomcat9 文件夾 ? wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz ? tar -xzf apache-tomcat-9.0.14.tar.gz -C /usr/local/tomcat --strip-components=1 # 刪除無用文件 ? rm -f apache-tomcat-9.0.14.tar.gz # 驗證寞奸,啟動成功后即可在宿主機上訪問:http://localhost:8000/ ? /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat9 Using CATALINA_HOME: /usr/local/tomcat9 Using CATALINA_TMPDIR: /usr/local/tomcat9/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar Tomcat started. # 除了用 startup.sh 腳本啟動, 也可以使用 catalina.sh 腳本啟動 ? /usr/local/tomcat/bin/catalina.sh run # ctrl + D 可以退出當前偽終端
ctrl D
退出偽終端-
如果以后需要重復使用這個環(huán)境呛谜,可以使用
docker commit
命令將該容器制作成鏡像# 假如以 web 為倉庫名,v1 為標簽 ? docker commit my-centos web:v1 sha256:7d9c79fed1e506a1a232a8e72189a80e983fb4f38d5e5fc09755f085299bc23c # 查看鏡像枪萄,其中 web 的運行方式同第二步隐岛,只需將鏡像名調整為 web # 用新鏡像運行后的容器環(huán)境與我們在前面幾步所搭建的環(huán)境一致。 ? docker images REPOSITORY TAG IMAGE ID CREATED SIZE web v1 7d9c79fed1e5 5 seconds ago 459MB centos latest 75835a67d134 1 hours ago 200MB
-
停止容器
# my-centos 為第二步中定義了 name 參數瓷翻,當然也可以使用 container id 來代替 name ? docker stop my-centos
-
啟動容器
? docker start my-centos