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

点击管理里卖弄能够看到命令版本号]

相关文章
相关标签/搜索