前提:? ?虛擬機1? CentOS7:192.168.0.19(與物理機橋接方式)
? ? ? ? ? ? ? 虛擬機2? CentOS7:192.168.0.21(與物理機橋接方式)
? ? ? ? ? ? ? 本機:192.168.0.5
1. Docker安裝與啟動
1.1 安裝Docker
? ? (1)yum包更新到最新
? (2)安裝需要的軟件包,yum-util提供yum-config-manager功能,另外兩個是devicemapper屈都依賴的
? ? ? ? sudo yum install -y? yum-utils devicemapper-persistent-data lvm2
? ? (3) 設置yum源為阿里云
? ? ? ? sudo yum-coonfig-manager --add-repo? ? ? ? http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
? ? (4) 安裝docker
? ? ? ? sudo yum install docker-ce
? ? (5) 查看版本
? ? ? ? docker -v
1.2 設置ustc的鏡像
? ? 編輯該文件
? ? ? ? vi /etc/docker/daemon.json
? ? 該文件中輸入如下內容:
? ? ? ? {
? ? ? ? “registry-mirrors”:["https://docker.mirrors.ustc.edu.cn"]
? ? ? ? }
1.3 Docker的啟動與停止
? ? ? systemctl 命令是系統(tǒng)服務管理器指令
? ? ? ? 啟動docker
? ? ? ? ? ? systemctl start docker
? ? ? ? 停止docker
? ? ? ? ? ? systemctl stop docker
? ? ? ? 重啟docker
? ? ? ? ? ? systemctl restart docker
? ? ? ? 查看docker狀態(tài)
? ? ? ? ? ? systemctl status docker
? ? ? ? 開機啟動
? ? ? ? ? ? systemctl enable docker
? ? ? ? 查看docker概要信息
? ? ? ? ? ? docker? info
2. 常用命令
2.1 鏡像相關命令
2.1.1 查看鏡像
? ? ? ? docker images

2.1.2 搜索鏡像
? ? ? ? docker search 鏡像名稱

2.1.3 拉取鏡像
? ? ? ? docker pull? 鏡像名稱
? ? ? ? 例如? docker? pull? centos:7
2.1.4 刪除鏡像
? ? ? ? docker? rmi? 鏡像ID
? ? ? ? 刪除所有鏡像:docker rmi? 'docker? images? -q'
2.2 容器相關命令
2.2.1 查看容器
? ? ? ? 查看正在運行容器:? docker? ps
? ? ? ? 查看所有容器: docker? ps? -a
? ? ? ? 查看最后一次運行容器: docker ps -1
? ? ? ? 查看停止容器: docker ps -f status=exited
2.2.2 創(chuàng)建與啟動容器
? ? ? ? 創(chuàng)建容器命令:docker run

? ? ? ? (1) 交互式方式創(chuàng)建容器
? ? ? ? ? ? docker? run? -it? --name=容器名稱? 鏡像名稱:標簽? /bin/bas

? ? ? ? ? ? ? 此時,創(chuàng)建完畢后直接進入。
? ? ? ? ? ? ? 進入容器后exit退出,容器狀態(tài)自動變?yōu)閑xited.
? ? ? ? (2) 守護式方式創(chuàng)建容器
? ? ? ? ? ? ? ? docker? run? -di? --name=容器名稱? 鏡像名稱:標簽

? ? ? ? ? ? ? ? 此時,創(chuàng)建完畢后未進入容器
? ? ? ? ? ? ? ? 登陸守護方式容器:docker exec -it 容器名稱(或者ID) /bin/bash
? ? ? ? ? ? ? ? 注意:本次創(chuàng)建容器時,即使上面交互式方式創(chuàng)建的容器mycentos已經關閉,此時仍然不能本次容器也為mycentos!!!
2.2.3 停止與啟動容器
? ? ? ? 停止容器:docker? stop? 容器名稱(或者ID)
? ? ? ? 啟動容器:docker? start? 容器名稱(或者ID)
2.2.4 文件拷貝
將文件拷貝到容器內:docker? cp? 需要拷貝文件或目錄? 容器名稱:容器目錄

將文件拷貝出容器外:docker? cp? 容器名稱:容器目錄? 需要拷貝文件或目錄
2.2.5 目錄掛載

2.2.6 查看容器IP地址
? ? ? ? ? ? docker? inspect 容器名稱(或者ID)
直接查找到IP地址方式:

2.2.7 刪除容器
? ? ? ? docker? rm? 容器名稱(或者ID)
? ? ? ? 注意:1. 與刪除鏡像區(qū)別(刪除鏡像:docker? rmi? 鏡像ID)
? ? ? ? ? ? ? ? ? 2. 在刪除鏡像時,要把對應全部創(chuàng)建的容器刪除才可以刪除鏡像!
3. 應用部署
3.1 MySQL部署
? ? (1) 拉取mysql鏡像
? ? ? ? ? ? ? ? docker? pull centos/mysql-57-centos7
? ? (2) 創(chuàng)建容器
? ? ? ? ? ? ? ? docker? run? -di? --name=tensquare_mysql? -p? 33306:3306? -e? MYSQL_PASSWORD=123456? mysql
? ? ? ? ? ? ? ? -p? 代表端口映射,格式為? 宿主機映射端口:容器運行端口
? ? ? ? ? ? ? ? -e 代表添加環(huán)境變量 MYSQL_ROOT_PASSWORD 是root用戶的密碼
? ? (3) 進入mysql容器
? ? ? ? ? ? ? ? ? docker? exec? -it? tensquare_mysql? /bin/bash
? ? (4) 登陸mysql
? ? ? ? ? ? ? ? mysql? -u? root? -p
? ? (5) 遠程登陸mysql
? ? ? ? ? ? ? ? 連接宿主機IP并指定端口為33306,這樣就可以操作容器的3306端口。
3.2 tomcat部署
? ? (1) 拉取鏡像
? ? ? ? ? ? ? ? ? ? docker? pull? tomcat:7-jre7
? ? ? ? (2) 創(chuàng)建容器
? ? ? ? ? ? ? ? ? ? 創(chuàng)建容器? -p 表示地址映射
? ? ? ? ? ? ? ? ? ? docker? run? -di? --name=mytomcat? -p? 9000:8080? -v /usr/local/webapps:/usr/local/tomcat/webapps? tomcat:7-jre7
? ? ? (3) 進入mysql容器
? ? ? ? ? ? ? ? ? ? docker? exec? -it? mytomcat? /bin/bash
? ? ? (4) 遠程訪問:192.168.0.19:9000/index.jsp
3.3 Nginx部署
? ? ? ? (1) 拉取鏡像
? ? ? ? ? ? ? ? ? ? docker? pull? nginx
? ? ? ? (2) 創(chuàng)建容器
? ? ? ? ? ? ? ? ? ? 創(chuàng)建容器? -p 表示地址映射
? ? ? ? ? ? ? ? ? ? docker? run? -di? --name=mynginx? -p? 80:80? nginx
3.4 Redis部署
? ? ? ? (1) 拉取鏡像
? ? ? ? ? ? ? ? ? ? docker? pull redis
? ? ? ? ? (2) 創(chuàng)建容器
? ? ? ? ? ? ? ? ? ? 創(chuàng)建容器? -p 表示地址映射
? ? ? ? ? ? ? ? ? ? docker? run? -di? --name=myredis? -p? 6379:6379? redis
4. 遷移與備份
4.1? 容器保存為鏡像
? ? ? ? ? ? docker? commit? mynginx? mynginx_i
4.2? 鏡像備份
? ? ? ? ? ? docker? save? -o? mynginx.tar? mynginx_i
4.3? 鏡像恢復與遷移
? ? ? ? ? ? docker? load? -i? mynginx.tar
? ? ? ? ? ? -i? 輸入的文件
? ? ? ? ? ? docker? images? 可看到鏡像已恢復
5. Dockerfile
5.1 什么是Dockerfile

5.2 常用命令

5.3 使用腳本創(chuàng)建鏡像
????????(1)創(chuàng)建目錄
????????????????mkdir -p /usr/local/dockerjdk8
????????(2)下載jdk-8u171-linux-x64.tar.gz并上傳到服務器中/usr/local/dockerjdk8目錄
????????(3)在dockerjdk8目錄下創(chuàng)建文件Dockerfile? ? vi? Dockerfile
????????????????????#依賴鏡像名稱和ID
????????????????????FROM centos7
????????????????????#指定鏡像創(chuàng)建者
????????????????????MAINTAINER FENCO
????????????????????#切換工作目錄
????????????????????WORKDIR? /usr
????????????????????RUN? mkdir? /usr/local/java
????????????????????#ADD? 是相對路徑jar,把java添加到容器
????????????????????ADD? jdk-8u171-linux-x64.tar.gz? /usr/local/java/
????????????????????#配置java環(huán)境變量
????????????????????ENV? JAVA_HOME? ?/usr/local/java/jdk1.8.0_171
? ? ? ? ? ? ? ? ? ? ENV? JRE_HOME? ?$JAVA_HOME/jre
????????????????????ENV? CLASSPATH? ?$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
????????????????????ENV? PATH? $JAVA_HOME/bin:$PATH

????????????????????????????注意:由于創(chuàng)建jdk1.8鏡像用到了docker.io/centos鏡像,所以必須保證本地有該鏡像。
?????????????(4) 執(zhí)行命令構建鏡像
? ? ? ? ? ? ? ? ? ? ? ?在dockerjdk8目錄下執(zhí)行:? ? docker? ?build? -t='jdk1.8'? .? ? ? ? ? ?最后面的點,表示該根目錄
????????????(5) 查看鏡像是否建立完成
????????????????????????docker? images
6. Docker私有倉庫
6.1 私有倉庫的搭建及配置
????(1) 拉取私有倉庫鏡像
????????docker pull registry
? ? ? (2)? 啟動私有倉庫容器
????????????docker? run? -di? --name=registry? -p? 5000:5000? registry
? ? ?(3) 用瀏覽器訪問:http://192.168.0.19:5000/v2/_catalog看到{“repositories”:[]}表示私有倉庫搭建成功內容為空。
? (4)修改daemon.json
????????????vi? /etc/docker/daemon.json
????????????添加以下內容并保存退出。
????????????{"insecure-registries":["192.168.0.19:5000"]}? ? 此步用于讓docker信任私有倉庫地址
? (5) 重啟docker服務
????????????systemctl restart? docker
6.2 鏡像的上傳及下載到私有倉庫
6.2.1鏡像的上傳
????(1) 標記次鏡像為私有倉庫的鏡像
????????????????docker tag jdk1.8 192.168.0.19:5000/jdk1.8
? ? ? (2) 上傳標記鏡像
????????????????首先,上一步重啟了docker服務,所以里面的registry容器也需要啟動下。
????????????????然后執(zhí)行上傳:docker? push? 192.168.0.19:5000/jdk1.8

6.2.2 鏡像的下載
在另外一臺虛擬機中安裝docker(192.168.0.21)
????(1)修改daemon.json
????????????????vi? /etc/docker/daemon.json
????????????????添加以下內容并保存退出。
????????????????{"insecure-registries":["192.168.0.19:5000"]}? ? 此步用于讓docker信任私有倉庫地址
????(2) 重啟docker服務
????????????????systemctl restart? docker
?????(3) 下載標記鏡像
????????????????然后執(zhí)行下載:docker? pull? 192.168.0.19:5000/jdk1.8