docker 配置

虚拟化容器技术。基于镜像,可以秒级启动各种容器;每种容器都是一个完整的运行环境,容器之间相互隔离。

docker hub 镜像
docker官网

  1. 卸载旧版本

    1. sudo yum remove docker \
    2. docker-client \
    3. docker-client-latest \
    4. docker-common \
    5. docker-latest \
    6. docker-latest-logrotate \
    7. docker-logrotate \
    8. docker-engine
  2. 安装依赖

    1. sudo yum install -y yum-utils
    2. sudo yum-config-manager \
    3. --add-repo \
    4. https://download.docker.com/linux/centos/docker-ce.repo

    3.安装docker引擎(最新版本)

    1. sudo yum install docker-ce docker-ce-cli containerd.io

    4.启动docker

    1. sudo systemctl start docker

    5.开机自启

    1. sudo systemctl enable docker

6.docker 国内镜像(阿里云)
centos

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://h7j6vpo3.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

docker hub上查看软件的tag确认安装版本
ps: 查看cpu架构

dpkg --print-architecture

docker 进入容器

  1. docker exec -it 容器名/id /bin/bash

mysql 安装

  1. sudo docker pull mysql:5.7

遇到问题:
failed to register layer: Error processing tar file(exit status 1): write /usr/bin/resolve_stack_dump: no space left on device
原因:inodes资源耗尽,需要清理一下

  1. df -i
  2. sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

df -h的比较好解释,就是查看磁盘容量的使用情况。至于df -i,先需要去理解一下inode
以博客主的个人理解,最简单的说法,inode包含的信息:文件的字节数,拥有者id,组id,权限,改动时间,链接数,数据block的位置。相反是不表示文件大小。

或者这个docker清理工具

  1. curl -s https://raw.githubusercontent.com/ZZROTDesign/docker-clean/v2.0.4/docker-clean |
  2. sudo tee /usr/local/bin/docker-clean > /dev/null && \
  3. sudo chmod +x /usr/local/bin/docker-clean
  4. docker-clean

docker映射
su root vagrant

  1. docker run -p 3306:3306 --name mysql \
  2. -v /mydata/mysql/log:/var/log/mysql \
  3. -v /mydata/mysql/data:/var/lib/mysql \
  4. -v /mydata/mysql/conf:/etc/mysql \
  5. -e MYSQL_ROOT_PASSWORD=root \
  6. -d mysql:5.7
  1. docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

遇到问题:
docker: Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/08ad0573f83735ff94a5020a2a4a6cf9c366a372cc7e6a4496a0aaf21448d…….b8f9a692eb8bd9b88b8560b2b660=ro+wh,dio,xino=/dev/shm/aufs.xino: permission denied.

不用中科大的镜像就解决问题了。。。。。。

修改mysql的配置

vi /mydata/mysql/conf/my.cnf

  1. [client]
  2. default-character-set=utf8
  3. [mysql]
  4. default-character-set=utf8
  5. [mysqld]
  6. init_connect='SET collation_connection = utf8_unicode_ci'
  7. init_connect='SET NAMES utf8'
  8. character-set-server=utf8
  9. collation-server=utf8_unicode_ci
  10. skip-character-set-client-handshake
  11. skip-name-resolve

mysql 可视化管理工具 sqlyoung
redis 可视化管理工具 redisdesktopmanager

redis安装

进入虚拟机,切换root用户
docker pull redis

为了防止linux将文件映射成目录,需要先川建好文件。
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

docker映射
docker run -p 6379:6379 —name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

redis默认没有持久化,需要修改conf配置
vi /mydata/redis/conf/redis.conf
添加
appendonly yes

虚拟机直接进入rediscli
docker exec -it redis redis-cli