3.docker入门到精通—常规安装

20 篇文章 0 订阅

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"]
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值