## CentOS7安装docker

  1. 作者QQ:67065435 QQ群:821635552

  2. 本站内容全部为作者原创,转载请注明出处!

docker安装

  1. docker安装前的准备

    # 查看内核版本
    uname -r
    
    # 移除旧版本docker
    yum remove docker \
    docker-ce \
    docker-common \
    docker-logrotate \
    docker-client \
    docker-client-latest \
    docker-latest \
    docker-latest-logrotate \
    docker-engine \
    docker-selinux \
    docker-engine-selinux \
    -y
    
    # 安装依赖
    yum install -y lvm2 yum-utils device-mapper-persistent-data
    
    # 添加docker源,更新yum缓存
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache fast
    
  2. docker安装

    yum install -y docker-ce
    
  3. docker换源并更换存储路径

    mkdir /data
    mkdir /data/docker
    
    vim /etc/docker/daemon.json
    
    {
      "registry-mirrors": [
        "https://pee6w651.mirror.aliyuncs.com",
        "https://y0qd3iq.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com"
      ],
      "graph": "/data/docker"
    }
    
    ESC
    :wq
    
  4. 网易云无法启动docker问题

    # Ubuntu & Debian
    sudo apt-get install bridge-utils -y
    sudo brctl show
    sudo brctl addbr docker0
    sudo ifconfig docker0 172.17.0.1/16
    sudo ifconfig docker0 up
    sudo systemctl start docker
    
    # CentOS
    yum install bridge-utils -y
    brctl show
    brctl addbr docker0
    ifconfig docker0 172.17.0.1/16
    ifconfig docker0 up
    systemctl start docker
    
    # 原文链接
    https://www.163yun.com/help/documents/56874253316968448
    
  5. docker启动停止

    # 启动docker
    systemctl start docker
    # 重启docker
    systemctl restart docker
    # 停止docker
    systemctl stop docker
    # 开机运行docker
    systemctl enable docker
    # 开机不运行docker
    systemctl disable docker
    

docker卸载

  1. docker停止

    systemctl stop docker
    systemctl disable docker
    
  2. docker移除

    yum remove docker-ce
    
  3. docker目录移除

    rm -rf /data/docker
    

docker常用命令

  1. docker登录/退出

    # 登录
    docker login -u [用户名] -p [密码] [仓库地址(不声明则取默认)]
    # 退出
    docker logout [仓库地址(不声明则取默认)]
    
  2. docker镜像管理

    # docker镜像列表
    docker images
    
    # docker下载镜像(没有TAG版本则取latest版本)
    docker pull [镜像名称]:[TAG版本]
    # docker下载镜像(所有版本,无需指定TAG版本)
    docker pull [镜像名称] -a
    
    # docker删除镜像(要先停止并删除镜像生成的所有容器)
    docker rmi [镜像id/镜像名称/镜像名称:TAG版本]
    
  3. docker容器管理

    # docker通过镜像运行一个容器(可以忽略TAG版本,则docker取latest版本)
    docker run -dit \
    -p [服务器端口]:[docker端口] \
    -p [服务器端口]:[docker端口] \
    -v [主机目录]:[容器目录] \
    -v [主机目录]:[容器目录] \
    --name=[自定义容器名称] \
    --privileged=true [镜像名称]:[TAG版本]
    
    # docker通过镜像创建一个容器(用法同run,只是创建后容器不会运行)
    docker create -dit \
    -p [服务器端口]:[docker端口] \
    -p [服务器端口]:[docker端口] \
    -v [主机目录]:[容器目录] \
    -v [主机目录]:[容器目录] \
    --name=[自定义容器名称] \
    --privileged=true [镜像名称]:[TAG版本]
    
    # docker进入容器
    docker exec -it [容器id/容器名称] bash
    
    # docker查看运行容器
    docker ps
    
    # docker查看所有容器
    docker ps -a
    
    # docker停止容器
    docker stop [容器id/容器名称]
    
    # docker移除容器(要先停止容器)
    docker rm [容器id/容器名称]
    
    # docker杀死容器
    docker kill [容器id/容器名称]
    
    # docker启动容器
    docker start [容器id/容器名称]
    
    # docker重启容器
    docker restart [容器id/容器名称]
    
    # docker暂停容器中进程
    docker pause [容器id/容器名称]
    
    # docker恢复容器中进程
    docker unpause [容器id/容器名称]
    
    # docker查看容器进程
    docker top [容器id/容器名称]
    
    # docker连接到容器
    docker attach [容器id/容器名称]
    
    # docker查看容器端口
    docker port [容器id/容器名称]
    
    # docker查看容器日志
    docker logs [容器id/容器名称]
    
    # docker查看容器进程
    docker top [容器id/容器名称]
    
    # docker查看容器信息
    docker inspect [容器id/容器名称]
    
    # docker实时事件查看
    docker events \
    -f 'image'=[镜像id/镜像名称] \
    -f 'container'=[容器id/容器名称] \
    --since=[十位秒数时间戳/日期YYYY-MM-DD] \
    --until=[十位秒数时间戳/日期YYYY-MM-DD]
    # 参数说明
    -f      事件通过条件过滤
    --since 事件通过开始时间过滤
    --until 事件通过结束时间过滤
    

docker run --net的理解

  1. Net的理解

    # 查看现有网络
    docker network ls
    
    # 创建新的网络
    docker network create --driver=bridge  --subnet=10.173.0.0/16 --gateway=10.173.0.1 network1
    
    # 查看现有网络
    docker network ls
    
    # 创建容器并使用该网络
    docker run -dit -privileged=true --net=network1 --ip=10.173.0.2 --name=lnmp 2233466866/lnmp
    
    # 以上操作创建了一个网络并在该网络启动了一个IP固定为10.173.0.2的容器
    # 容器之间想进行通信,首先应当保证要进行通信的多个容器都在同一个网络下
    

docker run --link的理解

  1. Link的理解

    # 1. 下载redis镜像
    docker pull redis:latest
    
    # 2. 通过redis镜像运行一个redis容器
    docker run -dit --name=redis redis:latest
    
    # 3. 下载lnmp镜像
    docker pull 2233466866/lnmp:latest
    
    # 4. 通过lnmp镜像运行一个lnmp容器并link到redis
    docker run -dit \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    --privileged=true \
    --link=redis \
    --name=lnmp \
    2233466866/lnmp
    
    # 5. 进入lnmp容器
    docker exec -it lnmp bash
    
    # 6. 创建一个php文件
    vim test.php
    
    <?php
    $redis = new Redis();
    //'connect'方法的host地址能写'redis'是因为上文中有'--link=redis',相当于'link'为连进来的'redis'容器做了虚拟域名映射'172.17.x.x redis'
    $redis->connect('redis', 6379);
    $redis->set('a', '123');
    echo $redis->get('a');
    
    ESC
    :wq
    
    # 7. 运行php文件
    php test.php
    
    # 8. 可以看到运行结果输出了123
    

docker修改容器启动参数

  1. 这里只是以端口映射参数进行说明,实际操作中还可以修改IP、挂载等所有启动参数

  2. docker修改容器端口映射(Linux系统)

    # 获取[容器列表]
    docker ps -a
    
    # 获取[文件系统]的[graph]
    # 如果有返回结果,则[文件系统]的[graph]为返回的结果
    # 如果没有返回结果,则[文件系统]的[graph]为/var/lib/docker
    cat /etc/docker/daemon.json|grep graph
    
    # 关闭docker
    systemctl stop docker
    
    # 通过[容器列表]中的[CONTAINER ID]、[文件系统]的[graph]定位容器配置文件路径,并修改配置文件(示例:将80端口映射到8888)
    vim [graph]/containers/[CONTAINER ID]**************/hostconfig.json
    
    "PortBindings": {
      "80/tcp": [
        {
          "HostIp": "",
          "HostPort": "8888"
        }
      ]
    }
    
    ESC
    :wq
    
    # 启动docker
    systemctl start docker
    
    # 启动容器
    docker start [CONTAINER ID]
    

资源下载

  1. docker-compose

我的镜像

  1. 2233466866/lnnp
  2. 2233466866/lnmp
  3. 2233466866/centos

官方教程

  1. 教程首页
  2. 快速安装
  3. 使用教程
  4. Dockerfile
  5. Docker CLI
  6. Composefile
  7. Compose CLI
  8. Daemon CLI
Copyright © 豆包嘿嘿~ 2012-∞ 冀ICP备17033181号 all right reserved,powered by Gitbook修订: 2020-11-09 01:59:58

results matching ""

    No results matching ""