centos7安裝docker-ce

一 centos7安裝docker

中文教程地址: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

4安裝 DOCKER CE

更新  軟件包索引。yum
$ sudo yum makecache fast
安裝最新版本的 Docker CE,或者轉至下一步以安裝特定版本。
$ sudo yum install docker-ce
 

在生產系統中,您應該安裝特定版本的 Docker CE,而不是始終使用最新版本。列出可用版本。此示例使用 sort -r 命令按版本號(從最高到最低)對結果進行排序,而且已被截斷。json

:此 yum list 命令僅顯示二進制軟件包。若是還須要顯示 源軟件包,請從軟件包名稱中省略 .x86_64vim

$  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 某個鏡像的名字

                      網站:https://hub.docker.com

                      命令:-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

    2運行redis鏡像

首先使用docker啓動3redis容器服務,分別使用到637963806381端口

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

能夠看到當前3redis都是master角色,使用redis-cli命令修改redis-6381redis-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了。
 

配置Sentinel哨兵

Redis Sentinel 系統用於管理多個 Redis 服務器(instance), 該系統執行如下三個任務:

監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運做正常。
提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 能夠經過 API 向管理員或者其餘應用程序發送通知。
自動故障遷移(Automatic failover): 當一個主服務器不能正常工做時, Sentinel 會開始一次自動故障遷移操做, 它會將失效主服務器的其中一個從服務器升級爲新的主服務器, 並讓失效主服務器的其餘從服務器改成複製新的主服務器; 當客戶端試圖鏈接失效的主服務器時, 集羣也會向客戶端返回新主服務器的地址, 使得集羣可使用新主服務器代替失效服務器。
 

接下來直接進入3redis容器內部進行配置

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

點擊管理裏賣弄能夠看到命令版本號]

相關文章
相關標籤/搜索