引言
本小节,小猿以mysql和redis为例,来实现docker容器安装应用。
docker 安装mysql
下载mysql镜像
小猿的虚拟机时centos7.6的
如以装mysql5.7为例子
sudo docker pull mysql:5.7
如没办法拉去则并有如下报错
Error response from daemon: Get https://registry-1.docker.io/v2/:
dial tcp: lookup registry-1.docker.io on [::1]:53: read udp
[::1]:57799->[::1]:53: read: connection refused
则可能是域名解析服务器配置有问题,需要执行下面命令:
vim /etc/resolv.con
然后再最后一行添加下面的内容
nameserver 114.114.114.114
小猿的问题成功解决。
查看下载镜像状态
启动镜像
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 images
进如容器内部
docker exec -it mysql /bin/bash
查看sql的目录地址。
修改mysql参数
vim /mydata/mysql/conf/my.cnf
添加上下面的代码
[client]
default-character-set=utf8
[mysql]
# set mysql client default chararter
default-character-set=utf8
[mysqld]
init_connect='SET collation connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
让系统重启docker 并让docker重启mysql,使得配置生效,并能保证mysql被外界链接,否则可能报错。
docker restart mysql
配置进入容器内部查看
配置生效。
测试链接
docker 安装redis
访问 Redis 镜像库地址。
拉去镜像
docker pull redis:5.0.5
配置映射并启动镜像
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:5.0.5 redis-server /etc/redis/redis.conf
注意:直接上述执行本命令是由bug的,容器会将redis.conf当成文件夹而不会当成文件,所以先要执行创建文件。
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
容器虽然创建成功,但是我们需要解决警告,说明docker容器存在问题,不然等会可能无法连接。
vim /etc/sysctl.conf
追加一行代码
net.ipv4.ip_forward=1
重启宿主机器网络
测试redis
进入redis 容器内的redis 客户端
docker exec -it redis redis-cli
修改redis的持久化方式
执行下面代码
vim /mydata/redis/conf/redis.conf
追加aof持久化方式
appendonly yes
保存后重启docker 并查看
容器和镜像的删除
容器删除
删除容器首先要停止对应容器
docker stop xxx ##xxx表示容器名或容器id
然后执行删除命令即可
docker rm xxx ##xxx表示容器名或容器id
停止所有容器
docker stop $(docker ps -a -q)
删除所有容器
docker rm $(docker ps -a -q)
删除镜像
删除单个镜像
docker rmi hello-world:latest
根据镜像id删除全部镜像
docker rmi $(docker images -q)
所有docker容器操作
停止所有容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
启动所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
重启所有容器
docker restart $(docker ps -a | awk '{ print $1}' | tail -n +2)
awk为脚本分析命令,具体的可参考其他资料
tail -n +2 其实就是从第二行开始取全部
tail -n -3 只取最后三行。
tail -n k和tail -n -k意义相同
至此,docker 的使用就基本满足日常工作了。