1
  1. docker安装
  • 准备工作 卸载旧版本的docker
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
  • 系统要求

    Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

  • 使用yum安装

    sudo yum install -y yum-utils
    鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

    执行下面的命令添加 yum 软件源:

    $ sudo yum-config-manager \
      --add-repo \
      https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    $ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    # 官方源
    # $ sudo yum-config-manager \
    #     --add-repo \
    #     https://download.docker.com/linux/centos/docker-ce.repo
    

如果需要测试版本的 Docker 请执行以下命令:

如果需要测试版本的 Docker 请执行以下命令:

更新 yum 软件源缓存,并安装 docker-ce。

$ sudo yum install docker-ce docker-ce-cli containerd.io
  1. 使用脚本自动安装docker
# $ curl -fsSL test.docker.com -o get-docker.sh
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
  1. 创建docker组

  默认情况下,docker 命令会使用 Unix socket (opens new window)与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

sudo groupadd docker
sudo usermod -aG docker $USER
# 退出当前终端并重新登录,进行如下测试
docker run --rm hello-world
  1. 镜像加速

阿里云镜像加速

image.png

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["这里替换成自己的阿里云镜像加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

如果在 CentOS 使用 Docker 看到下面的这些警告信息:

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
请执行下列操作

sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sudo sysctl -p

dockr -v 如果 挂载在外部则会将外部的数据同步到容器内

如果不知道名字的话则会将容器的数据同步到自动创建的volume卷轴中去

  1. docker 安装nginx
# 1.在docker hub搜索nginx
    docker search nginx

# 2.拉取nginx镜像到本地
    [root@localhost ~]# docker pull nginx:1.13
    Using default tag: latest
    latest: Pulling from library/nginx
    afb6ec6fdc1c: Pull complete 
    b90c53a0b692: Pull complete 
    11fa52a0fdc0: Pull complete 
    Digest: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest

# 3.启动nginx容器
        docker run -p 80:80 --name nginx01 -d nginx:1.13

# 4.进入容器
        docker exec -it nginx01 /bin/bash
        查找目录:  whereis nginx
        配置文件:  /etc/nginx/nginx.conf

# 5.复制配置文件到宿主机
        # docker cp nginx01(容器id|容器名称):/etc/nginx/nginx.conf 宿主机名录

# 6.挂在nginx配置以及html到宿主机外部
    docker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 82:80 -d nginx:1.13        
    docker cp nginx01:/etc/nginx/nginx.conf /root/nginx/
    docker cp nginx01:/usr/share/nginx/html /root/nginx/
    docker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 82:80 -d nginx:1.13
    docker ps

# 7.可以看到nginx02 镜像已经启动 且可以访问了

image.png

  1. docker 安装elasticsearch

# 1.dockerhub 拉取镜像 对应版本的镜像tags
# https://hub.docker.com/_/elasticsearch
    docker pull elasticsearch:6.4.2
# 2.查看docker镜像
    docker images
# 3.运行docker镜像
    docker run -p 9200:9200 -p 9300:9300 elasticsearch:6.4.2

\# 启动出现如下错误

image-20200602184321790.png

# 1.在centos虚拟机中,修改配置sysctl.conf
    vim /etc/sysctl.conf
# 2.加入如下配置
    vm.max_map_count=262144 
# 3.启用配置
    -v
    注:这一步是为了防止启动容器时,报出如下错误:
    bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

# 4.启动elasticsearch容器

# 0.复制容器中data目录到宿主机中
    docker cp 容器id:/usr/share/elasticsearch/data /root/es
# 5.运行ES容器 指定jvm内存大小并指定ik分词器位置
    docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /root/es/plugins:/usr/share/elasticsearch/plugins -v /root/es/data:/usr/share/elasticsearch/data elasticsearch:6.4.2

# 如果启动报错
    failed to obtain lock on /usr/share/elasticsearch/data/nodes/0

可能是容器内宿主机做了volume映射 而elastic不允许root用户启动 

解决方案 使用 专门的elasticsearch用户启动

或者将映射的volume卷的所有的文件赋权777 

docker
681 声望55 粉丝

十三学得java成,名属company第一部