环境以及条件
linux版本:centos7
网络环境:能通外网
安装docker
1.关闭selinux
vi /etc/sysconfig/selinux
修改
SELINUX=disabled
2.更新到最新的yum
yum update
3. 安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4.设置yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
5.安装docker
sudo yum install docker-ce
6.设置开机启动
sudo systemctl start dockersudo systemctl enable docker
7.验证
docker version
8.设置镜像地址
vi /etc/docker/daemon.json
加入
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
docker-compose 安装
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
yum install docker-compose
安装mysql
1.新建文件夹 /data/docker
mkdir /data/docker
2.新建配置文件 docker-compose.yml
touch docker-compose.yml
3.打开docker-compose.yml 添加入下配置
version: '3.1'
networks:
base:
services:
#mysql5.7
mysql5.7:
container_name: mysql5.7
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3307:3306
networks:
- base
volumes:
- ./mysql5.7/data:/var/lib/mysql
- ./mysql5.7/my.cnf:/etc/mysql/my.cnf
运行安装命令(一定要在docker-compose.yml同级目录下)
docker-compose up -d
可能会报错
等待拉取完毕启动时可能会报错
for docker_mysql_1 Cannot start service mysql: OCI runtime create failed
原因可能是因为在/data/docker/mysql5.7/my.cnf 是一个文件夹
解决方案
rm -rf /data/docker/mysql5.7/my.cnf
touch /data/docker/mysql5.7/my.cnf
docker-compose up -d
安装redis
在docker-compose.yml文件中,加上
#redis
redis:
image: redis:4.0.13
container_name: redis
restart: always
command:
--appendonly yes
--requirepass "123456"
ports:
- 6379:6379
networks:
- base
volumes:
- ./redis:/data
注意yml文件的格式
运行安装命令
docker-compose up -d
报错
/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/65f3c109fb903539820f84856d2725af784f2f03f95b1f0214e34184e4d61ff7-init/merged: invalid argument.
See '/usr/bin/docker-current run --help'.
解决方案
- 禁用selinux(具体方法参照上文,搜索关键词selinux)
- 修改存储类型
vi /etc/sysconfig/docker-storage
把空的DOCKER_STORAGE_OPTIONS参数改为overlay:
DOCKER_STORAGE_OPTIONS="--storage-driver overlay"
启动好发现连不上,telnet也不通,有两种可能
一种是docker端口映射到了机器的ipv6上
可以通过命令查看
netstat -tnlp
如果挂在了ipv6上的解决方案
vi /etc/default/grub
在第6行中增加 ipv6.disable=1
文本
GRUB_CMDLINE_LINUX="ipv6.disable=1 ..."
最终文件结果:
重启grub
grub2-mkconfig -o /boot/grub2/grub.cfg
重启linux
reboot
启动docker容器
docker-compose up -d