中文教程地址:https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/java
1 sudo yum install -y yum-utils device-mapper-persistent-data lvm2mysql
2 設置 stable 鏡像倉庫。您始終須要使用 stable 鏡像倉庫,即便您還須要經過 edge 或 testing 鏡像倉庫安裝構建也是如此。linux
sudo yum-config-manager \web
--add-repo \redis
https://download.docker.com/linux/centos/docker-ce.reposql
3 可選:啓用 edge 和 testing 鏡像倉庫。這些鏡像倉庫包含在上述 docker.repo 文件中,但默認狀況下處於禁用狀態。您能夠將它們與 stable 鏡像倉庫一塊兒啓用。docker
sudo yum-config-manager --enable docker-ce-edgeapache
sudo yum-config-manager --enable docker-ce-testing
更新 軟件包索引。yum
$ sudo yum makecache fast
安裝最新版本的 Docker CE,或者轉至下一步以安裝特定版本。
$ sudo yum install docker-ce
在生產系統中,您應該安裝特定版本的 Docker CE,而不是始終使用最新版本。列出可用版本。此示例使用 sort -r
命令按版本號(從最高到最低)對結果進行排序,而且已被截斷。json
注:此 yum list
命令僅顯示二進制軟件包。若是還須要顯示 源軟件包,請從軟件包名稱中省略 .x86_64
。vim
$ yum list docker-ce.x86_64 --showduplicates | sort -r
docker-ce.x86_64 17.06.0.el7 docker-ce-stable
此列表的內容取決於啓用了哪些鏡像倉庫,而且將特定於您的 CentOS 版本(在本示例中,由版本中的 .el7
後綴表示)。選擇一個特定版本進行安裝。第二列爲版本字符串。第三列爲鏡像倉庫名稱,它表示軟件包來自哪一個鏡像倉庫並按擴展其穩定性級別列出。如需安裝特定版本,請將版本字符串附加到軟件包名稱,並使用連字符 (-
) 分隔它們:
$ sudo yum install docker-ce-<VERSION>穩定版 yum install docker-ce-17.12.0.ce
5 啓用阿里雲鏡像加速
配置鏡像加速器
針對Docker客戶端版本大於 1.10.0 的用戶
您能夠經過修改daemon配置文件/etc/docker/daemon.json來使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://s5sx884j.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
檢查加速器是否生效
查看配置文件/etc/docker/daemon.json
6 運行hello-world鏡像驗證docker是否安裝成功
Docker run hello-world
7 docker的底層原理
8 docker經常使用命令
幫助命令:docker version,docker info,docker help
鏡像命令:docker images(列出本地主機上的鏡像),
Docker images –a 列出本地全部的鏡像(含中間影像層)
Docker images –q 只顯示鏡像id
Docker search 某個鏡像的名字
命令:-s 30 顯示點贊數超過30的鏡像
--automated:只列出自動構建的類型的鏡像
docker search --filter=stars=30 --no-trunc tomcat
docker pull 某個鏡像的名字 [:TAG] docker pull tomcat:latest
docker rmi 某個XX鏡像名字
刪除單個:docker rmi –f 鏡像ID
刪除多個:
容器命令:1 下載一個centos 鏡像 docker pull centos
2 新建並啓動容器 docker run [options] image [command][arg…]
Options 說明(經常使用):有些是一個減號,有些是兩個減號
--name=」容器新名字」:爲容器指定一個名稱;
-d:後臺運行容器,並返回容器ID,也即啓動守護式容器;
-i:以交互模式運行容器,一般與-t同時使用;
-t:爲容器從新輸入一個僞輸入終端,一般與-i同時使用;
-P:隨機端口映射;
-p:指定端口映射,有如下四種格式
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort
例子:docker run -it --name mycentos0115 centos
3查看docker裏面運行的進程 (有哪些容器運行) docker ps
Options說明:-a 列出當前全部正在運行的容器+歷史上運行過的
-l:顯示最近建立的容器。
-q:正在運行的容器。
-n:顯示最近n個建立的容器
--no-trunc:不截斷輸出。
4 退出關閉docker容器 兩種方式
1 exit 一錘子買賣 容器中止退出
2 ctrl+p+q 容器不中止退出
5 啓動容器 docker start 容器ID或者容器名
Docker restart 容器ID或者容器名
6 中止容器 docker stop 容器ID或者容器名 溫柔中止
Docker kill 容器ID或者容器名 強制中止
7 刪除已經中止的容器 docker rm ID
Docker rm –f Id 強制刪除
重要 1 啓動守護式進程 docker run –d centos 這個時候使用docker ps 查看並無後臺進程運行 docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
2 查看docker日誌:docker logs–t –f --tail 容器ID
-t:加入時間戳
-f:跟隨最新的日誌打印
--tail:數字 顯示最後多少條
3 查看容器內的進程 docker top 容器ID
4 查看容器內部細節:docker inspect 容器ID
5 進入正在運行的容易並以命令行交互
1 從新進入 docker attach 容器ID
2 docker exec –t 容器ID bashShell
上述兩個區別:1 attach 直接進入容器啓動命令的終端,不會啓動新的進程
2 exec 是在容器中打開新的終端,而且能夠啓動新的進程
例子:docker exec -it ead0244a0673 ls -l /tmp 在宿主機直接執行容器內命令並得到結果
docker exec -it ead0244a0673 /bin/bash 進入容器執行命令
6 從容器內拷貝文件到主機上
Docker cp 容器ID:/tmp/yum.log /root
9 docker 鏡像 1 是什麼 聯合文件系統 UnionFS
10 docker commit 提交容器副本使之成爲一個新的鏡像
docker commit –m=」提交的描述信息」 –a=」做者」 容器ID 要建立的目標鏡像名:[標籤名]
案例演示:1 從hub上下載tomcat鏡像到本地併成功運行
Docker run –it –p 8080:8080 tomcat 前臺交互式運行
Docker run –d –p 8080:8080 tomcat 後臺方式運行
說明:-p:主機端口:docker容器端口
-P:隨機分配端口
i:交互
t:終端
2 故意刪除上一步 鏡像生產tomcat容器的文檔
3 也即當前的tomcat運行實例是一個沒有文檔內容的容器,以它爲模板commit一個沒有doc的tomcat新鏡像atguigu/tomcat02
Docker commit –a=」szy」 –m=」ceshi」 容器ID atguigu/mytomcat01:[tag]
4 啓動咱們的新鏡像並和原來的對比
11 docker容器數據卷
1 直接添加 docker run –it –v /宿主機絕對路徑目錄:/容器內目錄 鏡像名 docker run –it –v /myDataVolume:/dataVolumeContainer 鏡像名 給容器添加數據卷
Docker run –it –v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名
12 dockerfile添加
1 根目錄下新建mydocker文件夾並進入
2 可在dockerfile中使用volume命令來給鏡像添加一個或多個數據卷
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,------success1"
CMD /bin/bash
3 File構建
4 build後生成鏡像 docker build –f /mydocker/dockerfile2 –t zzyy/centos.
5 運行生成的鏡像 docker run –it 鏡像id
13 容器間傳遞共享(--volumes-from)
1 先啓動一個父容器dc01(docker run –it –name dc01 zzyy/centos),在dataVolumeContainer2新增內容 *.txt
14 dockerfile 體系結構(保留字指令)
FROM:基礎鏡像,當前新鏡像是基於哪一個鏡像的
MAINTAINER:鏡像維護者的信息
RUN:容器構建時須要運行的命令
EXPOSE:當前容易對外暴露出的端口
WORKDIR:指定在建立容器時,終端默認登陸的進來的工做目錄,一個落腳點
ENV:用來在構建鏡像過程當中設置環境變量
ADD:拷貝加解壓(將宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包)
VOLUME:容器數據卷,用於數據保存和持久化工做。
CMD:指定一個容器啓動時要運行的命令。
Dockerfile中能夠有多個cmd指令,但只有最後一個生效,CMD會被docker run以後的參數替換
ENTRYPOINT: 指定一個容器啓動時要運行的命令
ONBUILD:當構建一個被繼承的dockerfile時運行命令,父鏡像再被子繼承後,副景象的onbuild被處罰。
15 dockerfile構建本身的tomcat9
1拷貝tomcat和jdk的壓縮包到同一目錄下
2 編寫dockerfile
FROM centos
MAINTAINER zzyy<zzyy@163.com>
#把宿主機當前上下文的c.txt拷貝到容器/usr/local/路徑下
COPY c.txt /usr/local/cincontainer.txt
#把java與tomcat添加到容器中
ADD jdk-7u51-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.0.M18.tar.gz /usr/local/
#安裝vim編輯器
RUN yum -y install vim
#設置工做訪問時候的worddir路徑,登陸落腳點
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java與tomcat環境變量
ENV JAVA_HOME /usr/local/jdk1.7.0_51
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.0.M18
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.0.M18
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin
#容器運行時監聽的端口
EXPOSE 8080
#啓動時運行tomcat
CMD /usr/local/apache-tomcat-9.0.0.M18/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.0.M18/bin/logs/catalina.out
3 構建鏡像
docker build -f dockerfile4 -t szy/tomcat9 .
4 根據鏡像運行容器
docker run -d -p 9080:8080 --name myt9 -v /mydocker/test:/usr/local/apache-tomcat-9.0.0.M18/webapps/test -v /mydocker/logs:/usr/local/apache-tomcat-9.0.0.M18/logs --privileged=true szy/tomcat9
16 docker運行mysql
1 搜索鏡像 docker search mysql
在conf下建立my.cnf文件,內容以下:
· [mysqld]
· user=mysql
· character-set-server=utf8
· default_authentication_plugin=mysql_native_password
· [client]
· default-character-set=utf8
· [mysql]
· default-character-set=utf8
2 docker run -p 13306:3306 --name mysql --name mysql -v /szy/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /szy/mysql/logs:/logs -v /szy/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
3 docker宿主機備份mysql
docker exec -it 5ea455a83a98 sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /szy/all-databases.sql
4 docker search redis
5 docker pull redis:3.2
6 docker run -p 7001:6379 -v /szy/myredis/data:/data -v /szy/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
7 宿主機 vi /szy/myredis/conf/redis.conf/redis.conf 添加redis基本配置內容
8
17Docker下redis的主從、持久化配置
1拉取redis鏡像
/library/redis:docker pull daocloud.iolatest
首先使用docker啓動3個redis容器服務,分別使用到6379、6380、6381端口
run --name redis-6380 -p 6380:6379 -d daocloud.io/library/redisdocker
run --name redis-6381 -p 6381:6379 -d daocloud.io/library/redisdocker
run --name redis-6382 -p 6382:6379 -d daocloud.io/library/redisdocker
使用以下命令查看容器內網的ip地址等信息
docker inspect containerid
3個redis的內網ip分別爲172.17.0.5:6379。172.17.0.4:6379。172.17.0.2:6379。
進入docker容器內部,查看當前redis角色(主仍是從)
1docker exec -it ee2326cabc2a /bin/bash 2redis-cli 3 info-replication
能夠看到當前3臺redis都是master角色,使用redis-cli命令修改redis-6381、redis-6382的主機爲172.17.0.2:6379
SLAVEOF172.17.0.26379 host port // SLAVEOF
查看redis-6380是否已經擁有2個從機:
1docker exec -it ee2326cabc2a /bin/bash 2redis-cli 3 info-replication
至此,redis下的主從配置就ok了。
Redis 的 Sentinel 系統用於管理多個 Redis 服務器(instance), 該系統執行如下三個任務:
監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運做正常。
提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 能夠經過 API 向管理員或者其餘應用程序發送通知。
自動故障遷移(Automatic failover): 當一個主服務器不能正常工做時, Sentinel 會開始一次自動故障遷移操做, 它會將失效主服務器的其中一個從服務器升級爲新的主服務器, 並讓失效主服務器的其餘從服務器改成複製新的主服務器; 當客戶端試圖鏈接失效的主服務器時, 集羣也會向客戶端返回新主服務器的地址, 使得集羣可使用新主服務器代替失效服務器。
接下來直接進入3臺redis容器內部進行配置
docker exec -ti 容器id /bin/bash
進入根目錄建立sentinel.conf文件
cd / && touch sentinel.conf
修改文件內容爲:
sentinelmonitormymaster.17.0.2 172 6379 1
最後,啓動Redis哨兵:
使用 redis-sentinel /sentinel.conf 啓動Redis哨兵監控
grep使用 ps –ef | redis 命令,能夠看到redis-server和redis-sentinel正在運行
至此,Sentinel哨兵配置完畢。
19 本地鏡像推送到阿里雲
1docker images查看本地鏡像
2 docker run –it 鏡像id 根據鏡像運行容器
3 本地commit上一步生成的容器 docker commit –a szy –m 「new centos with vim and inconfig」 容器id 新鏡像名稱
4 登陸阿里雲官網 建立鏡像倉庫
倉庫烈性 私有,代碼源,本地倉庫
5 將鏡像推送到registry
點擊管理裏賣弄能夠看到命令版本號
]