Docker常用安装
7.1 总体步骤
搜索镜像->拉取镜像->查看镜像->启动镜像->停止容器->移除容器
docker search xxx` -> `docker pull xxx:TAG` -> `docker images xxx` -> `docker run [-itd -p port:port] [--name yyy] xxx:TAG` -> `docker stop 容器ID/yyy` -> `docker rm [-f] yyy
7.2 安装mysql
mysql5.7
docker pull mysql:5.7 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=10086 \ -d mysql:5.7
命令说明:
-p 12345:3306:将主机的3306端口映射到docker容器的3306端口。
--name mysql:运行服务名字
-v /mydata/mysql/conf:/etc/mysql :将主机/mydata/mysql/conf目录,挂载到容器的/etc/mysql目录
-v /mydata/mysql/data:/var/lib/mysql:将主机的/mydata/mysql/data目录,挂载到容器的/var/lib/mysql目录
-v /mydata/mysql/log:/var/log/mysql:将主机的/mydata/mysql/log目录,挂载到容器的/var/log/mysql目录
-e MYSQL_ROOT_PASSWORD=10086:初始化 root 用户的密码。
-d mysql:5.7 : 后台程序运行mysql5.7
使用windows上的sqlyog进行远程连接:
记得关闭宿主机防火墙或者开启3306端口
# 查看防火墙信息,看哪些端口可以访问 firewall-cmd --list-all # 关闭防火墙 systemctl stop firewalld # 或者开启3306端口访问(推荐) firewall-cmd --permanent --zone=public --add-port=3306/tcp systemctl restart firewalld
使用docker对mysql容器中的数据进行备份
将docker mysql容器中的所有数据库导出到宿主机的/mydata/mysql8/all-databases.sql文件中
docker exec myql服务容器ID sh -c ' exec mysqldump --all-databases -uroot -p"10086" ' > /mydata/mysql8/all-databases.sql # 如果使用UTF-16编码 用--result-file= 替换> docker exec myql服务容器ID sh -c ' exec mysqldump --all-databases -uroot -p"10086" ' --result-file=/mydata/mysql8/all-databases.sql
mysqldump是mysql自带的逻辑备份工具。命令格式:官网mysqldump
mysqldump [选项] 数据库名 [表名] > /路径/filename.sql mysqldump [选项] --数据库名 [选项 表名] > /路径/filename.sql mysqldump [选项] --all-databases [选项] > /路径/filename.sql
常用选项说明:
参数名 | 缩写 | 含义 |
--host | -h | 服务器IP地址 |
--port | -P | 服务器端口号 |
--user | -u | mysql用户名 |
--password | -p | mysql密码 |
--database | 指定要备份的数据库 | |
--all-databases | 备份mysql上的所有数据库 | |
--compact | 压缩模式,产生更少的输出 | |
--comments | 添加注释信息 |
7.3 安装redis
docker pull redis docker run -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
--appendonly yes 表示使用AOF进行持久化 (redis默认使用rdb进行持久化)
redis.conf是个文件夹,不是个文件 (小声BB:这个redis.conf文件夹是不是太容易引起歧义了?还有redis-server启动的时候,后面跟的那串不是指定的配置文件的路径吗,讲道理redis.conf应该就是个配置文件才对);
在主机/mydata/redis/conf/redis.conf目录下新建redis.conf文件
vim /mydata/redis/conf/redis.conf
📎redis.conf.txt
测试redis-cli连接:docker exec -it redis容器ID redis-cli
测试生成持久化文件:
八、本地镜像发布到阿里云
8.1 镜像的生成方法
- 前面讲过的DockerFile
- 从容器创建一个新的镜像:
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
- OPTIONS选项说明:-a:提交的镜像作者、-m:提交时的说明文字
我们之前自己做了一个包含vim和ifconfig的centos——mycentos:0.1,现在我们把它更新到0.2,并生成一个0.2的镜像。
先看看mycentos:0.1有没有容器docker ps -a
,没有就创建一个容器,docker run -itd mycentos:0.1
。
docker commit -a mrlinxi -m "new contos 0.2 from 0.1" 容器ID mycentos:0.2
这样就得到了mycentos:0.2的镜像
8.2 将本地镜像推送到阿里云
登陆阿里云,进入控制台
左上角菜单,点开搜索容器镜像服务:
实例列表—>个人/企业(要钱) 没有的需要创建一下,创建需要设置一个repository密码
然后创建一个镜像仓库
然后下一步,选择本地仓库创建:
创建好仓库后,会有相应的操作指南:
# 登陆仓库 首次登陆需要输入之前我们设置的仓库密码 docker login --username=阿里云账户 registry.cn-hangzhou.aliyuncs.com docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:[镜像版本号] docker push registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:[镜像版本号]
提交后,本地也会有一份提交的镜像。
我们尝试从阿里云拉取我们刚才push的镜像。
# 删除本地提交的镜像 docker rmi -f registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:0.2.1 dokcer pull registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:0.2.1