docker私服仓库启动
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
push 将镜像推送到私服库
docker push 192.168.3.15:5000/laymanubuntu:1.2
curl 验证私服库上有什么镜像
curl -XGET http://192.168.3.15:5000/v2/_catalog
将 docker 容器内的数据保存进宿主机的磁盘中
docker run -it --privileged=true -v /tmp/myHostData:/tmp/myDockerData myubuntu:1.2
默认读写:docker run -it --privileged=true -v /tmp/myHostData:/tmp/myDockerData:rw myubuntu:1.2
只读权限:docker run -it --privileged=true -v /tmp/myHostData:/tmp/myDockerData:ro myubuntu:1.2
查看数据卷是否挂载成功
docker inspect 容器ID
eg:docker inspect 23771a942367
卷的继承和共享:
容器 1 完成和宿主机的映射
docker run -it --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu
容器 2 继承容器 1 的卷规则
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
eg: docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
安装tomcat
搜索: docker search tomcat
拉取: docker pull tomcat
使用 tomcat 镜像创建容器实例(也叫运行镜像): docker run -d -p 8080:8080 --name t1 tomcat
访问:192.169.3.15:8080
(若报404错误->新版tomcat中webapps为空)
解决方案一:(将webapps.dist目录换成webapps)
先进入容器: docker exec -it e0c3a07e4a68 /bin/bash
删除webapps: rm -r webapps
将webapps.dist目录换成webapps: mv webapps.dist webapps
解决方案二:(免修改版)
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
安装****mysql
—简单版
拉取: docker pull mysql:5.7
运行: docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
进入容器: docker exec -it 974ad4dea576 /bin/bash
登录mysql: mysql -uroot -p 回车输入密码
show databases;
create database db01;
use db01;
create table t1(id int, name varchar(20));
insert into t1 values(1, 'z3');
select * from t1;
insert into t1 values(2, '李四');
插入中文报错:Incorrect string value: '\xE7\x8E\x8B\xE4\xBA\x94' for column 'name' at row 1
问题一:docker 上默认字符集编码隐患
docker 里面的 mysql 容器实例查看,内容如下:
SHOW VARIABLES LIKE 'character%';
**问题二:此****方式启动的mysql,**删除容器后,里面的 mysql 数据如何办?(数据备份,敏感数据迁移问题)
必须挂载容器数据卷。
—实战版
新建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=root --name mysql mysql:5.7
**解决中文乱码:**在/zzyyuse/mysql/conf/中新建my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重新启动 mysql 容器实例, 再重新进入, 并查看字符编码
重新启动mysql容器实例: docker restart mysql;
重新进入: docker exec -it mysql /bin/bash;
查看字符编码: SHOW VARIABLES LIKE 'character%';
docker 安装完 MySQL 并 run 出容器后,建议请先修改完字符集编码后再新建 mysql 库-表-插数据。
【结论】此时,将当前容器实例删除,再重新来一次,之前建的 db01 实例还在。
安装redis
入门命令:
docker run -d -p 6379:6379 redis:6.0.8;
docker exec -it 7c12884e2a07 /bin/bash;
执行 redis-cli 连接redis server: # redis-cli
【命令提醒】:容器卷记得加入--privileged=true
在 CentOS 宿主机下新建目录/app/redis
mkdir -p /app/redis/
在/app/redis/下创建redis.conf文件,并修改
1.开启 redis 验证 【可选】
requirepass root
2.允许redis 外地连接 必须 注释掉 # bind 127.0.0.1 【必须】
# bind 127.0.0.1
3.将 daemonize yes 注释起来或者设置为daemonize no,因为该配置和 docker run 中-d 参数冲突,会导致容器一直启动失败【必须】
daemonize no
4.开启 redis 数据持久化 【可选】
appendonly yes
使用 redis6.0.8 镜像创建容器(也叫运行镜像)
docker run -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
vim /etc/docker/daemon.json
{
"registry-mirrors":
["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries":["192.168.3.15:5000"]
}