数据容器卷
坑 容器卷记得加个参数
–privileged=true
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
# 目录没有会自动创建
cd /tmp/docker_data
ls
touch a.txt
ls
主机内
cd /tmp/host_data
ls
a.txt # 发现也有txt
touch hosin.txt
回到容器内看
ls
a.txt
hosin.txt # 发现也有hosin.txt
echo 'hello docker' >a.txt
主机内查看
cat a.txt
hello docker # 也有
docker inspect 容器id # 查看详细信息
容器停止
docker stop 容器id
主机内
touch c.txt # 在容器停止的情况下创建
docker start 容器id
docker exec -it 容器id /bin/bash
cd /tmp/docker_data
ls # 发现也有 c.txt
容器卷读写规则
读写(默认) rw
只读
卷的继承和共享
容器1完成和宿主机的映射
容器2继承容器1的卷规则
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
# 继承
docker run -it --privileged=true
--volumes-from 父类(u1)
--name u2 ubuntu
如果u1没有了 u2创建文件主机还是能搜到
u1恢复 也都有这些文件了
实战
安装tomcat
docker search tomcat # 查
docker pull tomcat # 下载
docker run -it -p 8080:8080 --name tomcat1 tomcat # 运行
测试访问
404~
webapps 里面没有首页文件
webapps.dist 这里面才有
把webapps.dist 重命名为webapps
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk
# run 没有 会自己去下
安装mysql
#简单版
docker pull mysql:5.7
docker run -d
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=123456
--name mysql57
mysql:5.7
docker ps # 看看启动成功了没
docker exec -it 容器id /bin/bash
mysql -u root -p 123456
#外部navicat访问
#插入中文报错 编码不一样 latin1
#要修改
#数据也要备份
# 实战版
docker run -d
-p 3306:3306
--privileged=true
-v /zzyyuse/mysql/log:/var/log/mysql
-v /zzyyuse/mysql/data:/var/lib/mysql
-v /zzyyuse/mysql.conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
docker ps
cd /zzyyuse/mysql.conf
vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
:wq
docker ps
docker restart mysql容器id
docker exec -it mysql容器id /bin/bash
mysql -uroot -p 123456
show variables like 'character%' #查看编码
# 发现中文可以插入成功
删除mysql容器
数据呢~~
此时重新启动
docker run -d
-p 3306:3306
--privileged=true
-v /zzyyuse/mysql/log:/var/log/mysql
-v /zzyyuse/mysql/data:/var/lib/mysql
-v /zzyyuse/mysql.conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
数据还是有~
安装redis
# 简单版
docker pull redis:6.0.8
docker run -d
-p 6379:6379
redis:6.0.8
docker exec -it 容器id /bin/bash
redis-cli
set k1 v1
get k1
# 实战版
mkdir -p /app/redis
拷贝一下redis.conf
cp /myredis/redis.conf /app/redis/
vim redis.conf #修改redis.conf
# bind 127.0.0.1 #注释掉 允许redis外地连接
将daemonize yes 注释或者 改成no
还不行 就把 protected-mode 改成 no
docker run -d
-p 6379:6379
--name myr3
--privileged=true
-v /app/redis/redis.conf:/etc/redis/redis.conf
-v /app/redis/data:/data
redis:6.0.8
redis-server /etc/redis/redis.conf
docker ps
docker exec -it myr3 /bin/bash
redis-cli
set k1 v1
get k1
改主机内配置文件 database 16 改成 10
docker restart myr3
docker exec -it myr3 /bin/bash
redis-cli
select 15 # 报错了 证明就是使用自己的配置文件