zoukankan      html  css  js  c++  java
  • Centos7 docer安装记录

    Centos7已自动配置yum

    1 安装

    yum install docker

    yum源安装不是最新版,是1.13.1,这个旧版本兼容性相对比较好

     可以看到只有client版本信息

    下面还显示不能连接到dockerdaemon(沙箱,也就是主机),原因是docker服务还没启动,只检测到客户端

     

     

    #启动服务
    service docker start
    #设置docker随着机器一起启动
    chkconfig docker on
    或者
    sudo systemctl start docker
    sudo systemctl enable docker

     

    2 卸载:

    1.查询安装过的包
    yum list installed | grep docker
    docker-engine.x86_64                 17.03.0.ce-1.el7.centos         @dockerrepo
     2.删除安装的软件包
    yum remove docker-engine.x86_64  -y 
    3.删除镜像/容器等
    rm -rf /var/lib/docker

    3 安装最新版

    #最新版安装,必须先更新yum源,配置yum
    #安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    [root@bogon ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
    #设置yum源
    [root@bogon ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    或者
    [root@bogon ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
    #或者直接用wget 
    wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    #docker-ce是社区版,免费的
    [root@bogon ~]# yum install docker-ce -y
    #或者安装指定版本
    yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y

    体验docker

    #进入docker世界
    docker run hello-docker

     docker配置加速器,可以加快从官方拉取镜像到本地

    docker是国外的服务器,一般会配置加速器
    #开启docker加速
    vi /etc/docker/daemon.json
    #输入:
    {"registry-mirrors":["https://registry.docker-cn.com"]}

    如果你是腾讯云的服务器那么请加入:{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}

    #保存成功后,重启docker:service docker restart
    [root@bogon ~]# service docker restart
    #查看宿主机有哪些docker容器
    docker ps
    #查看宿主机有哪些docker镜像
    docker images

    docker从官方拉取镜像到本地

    #拉取centos镜像
    docker pull centos
    
    #启动并进入容器(容器名为cent,centos为镜像名)
    docker run -it --name cent centos:latest /bin/bash
    #启动并保持容器前台进程(容器也就不会关闭),但不进入容器;it是前台交互的进程
    docker run -dit --name cent2 centos
    #进入已启动的docker容器
    ---attach生产环境【不推荐使用】,多人时候一个阻塞了会造成其它人也阻塞 docker attach cent #启动完就退出并关闭 docker run -d --name cent2 centos #退出容器并关闭 exit #退出但不关闭 Ctrl+P+Q #优雅关闭cent容器(发信号后等待10s) docker stop cent #不优雅关闭【不推荐使用】 Kill cent #删除已停止的容器cent docker rm cent #重新启动容器cent,但不进入 docker start cent #重新启动容器cent并进入容器环境中交互 docker exec -it cent /bin/bash #查看当前镜像 docker images #删除镜像 docker rmi centos #强制删除镜像 docker rmi -f centos **************************************** #宿主机查看容器的日志 docker logs cent #宿主机ip ip addr #查看容器cent的ip docker inspect cent

    ###########docker进入已启动的容器

    推荐进入容器的方式

    通过attach进入容器的话,当使用exit退出容器的时候,对应的容器也停止运行了,所以在生产环境中很少使用所以生产环境一般不用如果是通过 attach 进入的容器,

    在退出容器的时候,如果不想让容器停止运行的话, 就不能使用exit命令或者Ctrl+D快捷键的形式退出,

    而是使用 Ctrl + P + Q 组合键退出容器。

    推荐进入容器的方式:

    【方式一】:通过容器别名进入容器:注意 -it 不能丢   docker exec -it java /bin/bash

    【方式二】:通过容器ID进入容器:docker exec -it 91 /bin/bash如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是execattach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。

    容器启动后,本机并不能直接访问到容器,但是能访问宿主机网段,所以可以把容器映射到宿主机端口,本机直接访问宿主机的该端口

    docker容器文件挂载

    数据挂载问题:docker不应该负责持久化信息,换句话说,每次要启动容器可以创建后运行,关闭后即可删除

    也就是每次都是docker run ,而不是docker start

    好处:不需要关心以前数据,也就是没有负担

    docker容器运行产生的数据/文件等待,不应该放在容器内部,而是放在容器外部,也就是宿主机

    volume参数创建容器数据卷

    第一种:容器的文件挂载到宿主机,可以理解为宿主机和容器共享同一个文件夹

     直接-v /xxx/yyy表示在容器内创建/xxx/yyy作为挂载文件夹,并挂载在宿主机默认位置

     

    我们通过docker inspect data查看容器元数据,可看到挂载信息

     

     在容器端添加一个文件

     回主机目录查看,果然存在此文件

     在主机方添加一个文件

     回容器里查看,果然也同步增加了此文件

     指定主机目录方式挂载文件格式:-v path1path2

    如下命令,容器方会自动增加一个data目录

     宿主机方,同样自动增加一个/opt/data目录

    docker容器启动时候,如果要挂载到在宿主机的一个目录,如

    这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录

    容器的目录不能为相对路径,也就是不是以/开头

     

    宿主机中的文件目录

    如果不存在,则会自动生成;

    如果存在,则直接使用

     

    CentOS是红帽(rethat)公司,也就是yum源是红帽在维护

    作者:howtosay
             
    放牛娃的个人笔记整理,每天记录一点点,进步一点点
  • 相关阅读:
    Executors线程池
    解决HtmlAgilityPack无法获取form标签子节点的问题
    nohup不输出日志信息的方法,及linux重定向学习
    将博客从jekyll迁移到了hexo
    node-webkit中使用sqlite3(MAC平台)
    借助Nodejs在服务端使用jQuery采集17173游戏排行信息
    Shell脚本中的交互式命令处理
    通过桥接虚拟网卡使VMWare和宿主机实现双向通讯
    MySql使用show processlist查看正在执行的Sql语句
    Sql合并两个select查询
  • 原文地址:https://www.cnblogs.com/hongzm/p/15710475.html
Copyright © 2011-2022 走看看