Linux环境Docker安装与使用教程

VMware介绍

Docker是一个开源应用容器引擎,类似于虚拟机,Go语言编写。可以打包应用依赖到一个可移植的容器中。

可以利用 Docker 的方法来快速交付,测试和部署代码。

Centos Linux安装Docker

直接:

1
yum -y install docker-io

或者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装依赖
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 配置源
yum list docker-ce --showduplicates | sort -r # 查看支持版本
yum install docker-ce-18.06.3.ce # 安装,默认安装目录/var/lib/docker
systemctl start docker # 启动
systemctl enable docker # 开机启动
docker version # 查看版本
docker ps # 查看当前正在运行的容器
docker start/stop id/name #启动/停止某个容器
docker images #查看本地镜像
docker ps -a # 查看所有包括停止的容器

curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose #下载docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

在编辑好的yml目录中执行启动关闭项目

1
2
docker-compose up
docker-compose down

镜像加速

1
2
3
4
5
6
7
8
9
10
11
12
https://cr.console.aliyun.com # 注册阿里云,选择镜像中心,镜像加速
会有使用说明:
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

错误

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running
Docker未启动,执行命令:service docker start

ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-3cf202aa8f9b -j RETURN: iptables: No chain/target/match by that name.
关闭防火墙需要重启docker,执行命令:service docker restart

tcp 47.107.215.73:443: i/o timeout
可能原因:网络不通,url地址拼写错误

常用命令

docker ps 查看启动的容器
docker exec -it id(name) /bin/bash 进入容器,如果出错用把/bin/bash改成/bin/sh

docker安装MySQL

数据库不适合部署在docker中。

  1. 拉取官方镜像(使用5.7版本)

    1
    2
    docker pull mysql:5.7 # 拉取5.7版本,我们使用5.7版本,容器内目录/var/lib/mysql
    docker pull mysql # 拉取最新版本
  2. 查看镜像

    1
    sudo docker images
  3. 启动方式一,不建立目录映射

    1
    sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
    • -name:容器名
    • -e:配置信息
    • -p:端口映射, 主机端口:容器端口
  4. 启动方式二,建立目录映射

    1
    2
    3
    4
    5
    6
    sudo docker run -p 3306:3306 --name mysql \
    -v /usr/local/docker/mysql/conf:/etc/mysql \
    -v /usr/local/docker/mysql/logs:/var/log/mysql \
    -v /usr/local/docker/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    • -v: 主机目录:容器目录
  5. 查看docker进程

    1
    docker ps
  6. 重启mysql,删除容器,启动出错,重复启动用得上

    1
    2
    docker restart mysql
    docker rm ba7ef3e4ba975474b67c0f9126f07a4d88140e569323a77800aab8624361d67d # 谨慎使用会丢失容器数据
  7. 进入docker

    1
    2
    sudo docker exec -it mysql bash
    mysql -uroot -proot
  8. 查看或者设置外部访问权限

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql>use mysql;
    mysql>grant all privileges on *.* to root@'%' identified by "root"; # 授权访问
    mysql>flush privileges;
    mysql>select host,user from user;
    +-----------+---------------+
    | host | user |
    +-----------+---------------+
    | % | root |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    +-----------+---------------+
    4 rows in set (0.00 sec)
  9. 通过win Navicat等工具尝试访问

docker安装redis

1
2
3
4
5
docker run -itd --name redis-test -p 6379:6379 redis # 第一次启动
docker start redis-test # 后续通过start/stop操作
docker ps
docker # 直接输入docker可以查看操作命令说明
docker inspect redis-test # 查看容器配置信息,可以查看data路径,bin路径

cli

1
2
3
4
5
6
7
8
9
10
11
12
13
redis-cli


select 0 # 选择数据库 默认是0
keys * # 查找匹配的key
get xxx # 查询指定key的value值
set test 1 # 设置
del test # 删除
exists test

sadd myset a # set操作
lpush list_test abc # list操作
lindex list_test 0 # 查询

docker安装ElasticSearch

问题修复

org.elasticsearch.indices.recovery.RecoveryFailedException...Recovery failed from...
简单修复:删除data目录与logs目录

参考