Docker学习2.0-基本操作

本文详细介绍了Docker的基础操作,包括镜像的构建、拉取、查看、删除与保存,容器的创建、暂停、重启、日志查看,以及数据卷的使用和目录挂载。重点讲解了MySQL实践中的数据存储和配置,提供了解决容器内部编辑文件的技巧。
摘要由CSDN通过智能技术生成

基本操作

1. 镜像操作

镜像名称=[repository]:[tag] (名字:版本)

  • tag 不写,默认是“latest”
# 构建镜像
docker build
# 从服务器拉取镜像
docker pull
# 查看镜像
docker images
# 删除镜像
docker rmi 镜像名
# 推送镜像
docker push
# 打包镜像
docker save -o 包名.tar 镜像名
# 加载镜像
docker load -i 包名.tar
# 查看帮助文档
docker --help
docker xx --help

在这里插入图片描述

2. 容器操作

容器暂停:保留缓存
容器停止:杀死进程

# 创建容器并运行
docker run --name 容器名称 -p 宿主机端口:容器端口 -d 镜像名
# 容器暂停
docker pause
# 容器再运行
docker unpause
# 容器停止
docker stop
# 容器再运行
docker start
# 查看日志
docker logs -f 容器名称
# 查询所有 运行的 容器及状态
docker ps
# 查询所有容器及状态
docker ps -a
# 进入容器执行命令
docker exec -it 容器名称 bash
# 退出容器
exit
# 删除未运行的容器 删除数据
docker rm 容器名称
# 强制删除容器 删除数据
docker rm -f 容器名称

进入容器内部修改文件
容器内部 vi 命令 无效

  • 镜像只是打包应用程序必备的系统函数库

解决方法

  • 使用 sed 命令 替换
sed -i 's#原文#替换值#g' 文件名.后缀

在这里插入图片描述

3. 数据卷(容器数据管理)

问题:

  • 容器与数据耦合
  • 数据不可复用
  • 升级维护困难

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
数据卷:

  • 容器的数据与宿主机关联的数据同步修改
  • 多个容器挂载同一个数据卷
  • 若容器删除,数据卷、宿主机数据并不删除,保证数据安全
docker volume [COMMAND]
 - create 数据卷名 # 创建数据卷
 - inspect 数据卷名 # 显示一个或多个数据卷的信息
 - ls # 列出所有数据卷
 - prune # 删除未使用的数据卷
 - rm 数据卷名 # 删除指数据卷

在这里插入图片描述
数据卷挂载

docker run --name 容器名 -v 数据卷名:容器目录 -p 宿主机端口:容器端口 镜像名
  • 如果容器运行时volume不存在,会自动被创建出来

4. 目录挂载(mysql实践)

  • -v [宿主机目录]:[容器内目录]
  • -v [宿主机文件]:[容器内文件]

4.1 下载mysql镜像

docker pull mysql:8.0

4.2 数据存储

# 创建目录
mkdir -p  /home/youwhua/mysql/data

4.3 配置

# 创建目录
mkdir -p  /home/youwhua/mysql/conf

# 配置文件 my.cnf
[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600

4.4 创建并运行容器

docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /home/youwhua/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /home/youwhua/mysql/data:/var/lib/mysql \
-d mysql:8.0
4.4.1 挂载数据存储目录
-v /home/youwhua/mysql/data:/var/lib/mysql \
4.4.2 挂载配置目录
-v /home/youwhua/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
# 或 
-v /home/youwhua/mysql/conf/my.cnf:/etc/mysql/mydwl.conf.d/my.cnf \
4.4.3 设置Mysql密码
-e MYSQL_ROOT_PASSWORD=root \

5 数据卷挂载与目录挂载

  • 数据卷挂载耦合度低,由docker管理,但是目录较深,不好找
  • 目录挂载耦合度高,需要自己管理目录,但目录容易寻找查看

最后

以上是学习 黑马程序员《微服务技术全栈教程》的学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值