## Linux安装docker

  1. 作者QQ:67065435 QQ群:669756510

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

docker安装

  1. docker安装前的准备

    # 查看内核版本
    uname -srm
    hostnamectl
    cat /proc/version
    
    # 移除旧版本docker
    yum -y --nogpgcheck \
    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
    
    # 安装依赖
    yum -y --nogpgcheck \
    install \
    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 -y --nogpgcheck install docker-ce docker-ce-cli
    
  3. docker换源并更换存储路径

    mkdir /data
    mkdir /etc/docker
    mkdir /data/docker
    bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
    docker login -u 账号 -p 密码 docker.xuanyuan.me
    
    vim /etc/docker/daemon.json
    {
      "data-root": "/data/docker",
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "20m"
      },
      "storage-driver": "overlay2",
      "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://docker.m.daocloud.io"
      ],
      "dns": [
        "119.29.29.29",
        "114.114.114.114"
      ]
    }
    ESC
    :wq
    
  4. docker启动停止

    systemctl start docker
    systemctl enable docker
    systemctl restart docker
    systemctl stop docker
    systemctl disable docker
    
  5. docker使用代理

    # 查找docker单元文件
    find /etc/ -type f -name *docker*.service
    find /usr/ -type f -name *docker*.service
    
    # 假设找到单元文件如下
    /usr/lib/systemd/system/docker.service
    
    # 修改单元文件的[Service],添加环境变量
    vim /usr/lib/systemd/system/docker.service
    
    [Service]
    Environment="http_proxy=http://127.0.0.1:7890"
    Environment="https_proxy=http://127.0.0.1:7890"
    Environment="all_proxy=http://127.0.0.1:7890"
    Environment="no_proxy=127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
    
    ESC
    :wq
    
    systemctl daemon-reload
    systemctl restart 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 update --cpus=0 [容器id/容器名称]
    docker update --memory=2g --memory-swap=2g [容器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
    
    # 获取[文件系统]的[data-root]
    # 如果有返回结果,则[文件系统]的[data-root]为返回的结果
    # 如果没有返回结果,则[文件系统]的[data-root]为/var/lib/docker
    cat /etc/docker/daemon.json|grep data-root
    
    # 关闭docker
    systemctl stop docker
    
    # 通过[容器列表]中的[CONTAINER ID]、[文件系统]的[data-root]定位容器配置文件路径,并修改配置文件(示例:将80端口映射到8888)
    vim [data-root]/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. 教程首页
  2. 快速安装
  3. 使用教程
  4. Dockerfile
  5. Docker CLI
  6. Composefile
  7. Compose CLI
  8. Daemon CLI
Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2025-11-18 20:28

results matching ""

    No results matching ""