Docker 容器技术,让你不再为环境而烦恼(一)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker 容器技术,让你不再为环境而烦恼

ffc840f9497f6fe06786ee6f2c5f6822.png

Docker 是一个开源的应用容器引擎,使用容器化技术,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上。实质上,容器内的应用还是直接运行在宿主机上,各个容器之间相互隔离。


Docker 是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例。

Docker 安装

官网:https://www.docker.com/

官方文档:https://docs.docker.com/

安装

  1. yum 包更新到最新
yum update
  1. 注:若 Linux 虚拟机未配置网络,则可以通过查看另一篇博客配置网络:在 VM 虚拟机中 Linux 动态网络配置_ZOOM_Jie -CSDN博客
  2. 安装需要的软件包,yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置 yum 源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装 Docker 社区版
yum -y install docker-ce
  1. 查看 Docker 版本号
docker -v

设置 USTC 镜像

  1. 编辑 /etc/docker/daemon.json 文件
mkdir -p /etc/docker
vim /etc/docker/daemon.json
  1. 注:通过 yum 安装 vim:yum -y install vim*
  2. daemon.json 文件中输入以下内容:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

启动 Docker

  1. 启动 docker
systemctl start docker
  1. 停止 docker
systemctl stop docker
  1. 查看 docker 状态
systemctl status docker
  1. 查看 docker 具体信息
docker info
  1. 查看 docker 帮助文档
docker --help
  1. 设置开机自动启动 docker
systemctl enable docker

Docker 常用命令

镜像命令

  1. 查看镜像
docker images
  1. 搜索镜像
docker search centos
  1. 拉取镜像
docker pull 镜像名称(repository):版本(tag)

注:拉取镜像不加版本 (:7) 即默认拉取最后一个版本。

  1. 删除镜像

按镜像 ID 删除镜像

docker rmi ImageID

删除所有镜像

docker rmi docker images -q

容器命令

  1. 启动容器
docker start [容器名/id]
  1. 停止容器
docker stop [容器名/id]
  1. 查看正在运行的容器
docker ps
  1. 删除容器
docker rm [容器名/id]
  1. 查看所有容器
docker ps -a
  1. 查看最后一次运行的容器
docker ps -l
  1. 查看停止的容器
docker ps -f status=exited
  1. 查看停止的容器
docker ps -f status=exited
  1. 创建容器
docker run

-i:表示运行容器。

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

--name:为创建的容器命名(唯一)。

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d:在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -i,-t 两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。

  • 交互式方式创建容器
docker run -it --name=容器名 [镜像名称]:[版本] /bin/bash
  • 这时我们通过 ps 命令查看,发现可以看到启动的容器,状态为启动状态
  • 守护式方式创建容器(后台运行)
docker run -di --name=容器名 [镜像名称]:[版本]

进入命令行

docker exec -it [容器名/id] /bin/bash

10.退出当前容器

exit

11.拷贝主机文件到容器

docker cp [文件] [容器名/id]:[目录]

12.拷贝容器文件到主机

docker cp [容器名/id]:[文件路径] [copy文件重命名]

13.容器目录挂载(映射)

docker run -di -v [主机目录]:[容器目录] --name=容器名 [镜像名称]:[版本]

14.查看容器详细信息

docker inspect [容器名/id]

过滤信息

docker inspect --format='{{.[字段].[key]}}' [容器名/id]

Docker 应用部署

MySQL

  1. 查询 MySQL 镜像
docker search mysql
  1. 拉取 MySQL 镜像,以 MySQL 5.7 版本为例
docker pull mysql:5.7
  1. 创建 MySQL 容器
docker run -di --name=[容器名] -p [主机端口]:[容器端口] -e MYSQL_ROOT_PASSWROD=[管理员账户密码] [镜像名称]:[版本]
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

-di:守护方式创建容器

-p:主机与容器的端口映射

-e:直接设置容器的用户名密码

  1. 进入 MySQL 容器命令行
docker exec -it [容器名] /bin/bash
• 1
docker exec -it mysql /bin/bash
docker exec -it mysql /bin/bash
  1. 在 MySQL 容器中进行操作(以下命令皆是在==容器的命令行【root@b2494be91470:/#】==执行)
  1. 登录 MySQL
mysql -uroot -proot --default-character-set=utf8
• 1
  1. SQLYog 连接容器中的 MySQLda0871e075f93ece6d970fcde947399b.png

到此 MySQL 容器就部署完成了

Nginx

  1. 查询 Nginx 镜像
docker search nginx
  1. 拉取 Nginx 镜像
docker search nginx
  1. 创建 Nginx 容器
docker run -di --name=[容器名] -p [主机端口]:[容器端口] [镜像名称]:[版本]
docker run -di --name=nginx -p 80:80 nginx

-di:守护方式创建容器

-p:主机与容器的端口映射

  1. Windows 浏览器访问 【主机IP地址:80 】749000e33fdf32b0955486f70eeb8a02.png
  2. 到此 Nginx 容器就部署完成了
  3. 修改 Nginx 容器的配置文件
  • 将容器中的 nginx 目录复制到主机,改完再复制回去
docker cp [容器名/id]:[文件路径]
docker cp [文件] [容器名/id]:[目录]
  • 将容器目录挂载到主机(需要在创建容器的时候挂载)
docker run -di --name=容器名 -p [主机端口]:[容器端口] -v [主机目录]:[容器目录]  [镜像名称]:[版本]
docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx nginx


Redis

  1. 查询 Redis 镜像
docker search redis
  1. 拉取 Redis 镜像
docker pull redis
  1. 创建 Redis 容器
docker run -di --name=[容器名] -p [主机端口]:[容器端口] [镜像名称]:[版本]


docker run -di --name=redis -p 6379:6379 redis

-di:守护方式创建容器

-p:主机与容器的端口映射

  1. 使用 Another Redis Desktop Manager 连接 Redis

输入主机 IP 地址与容器映射的端口号,点击 OK9c3579cc5900a7698a0c9e2d1605c864.png       成功连接,查看信息02f76cf079c6b077647afd624e06549b.png

  1. 到此 Redis 容器就部署完成了
  2. 修改 Redis 容器的配置文件
  • 将容器中的 Redis 目录复制到主机,改完再复制回去
docker cp [容器名/id]:[文件路径]
docker cp [文件] [容器名/id]:[目录]
  • 将容器目录挂载到主机(需要在创建容器的时候挂载)
docker run -di --name=容器名 -p [主机端口]:[容器端口] -v [主机目录]:[容器目录]  [镜像名称]:[版本]
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
17小时前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
7 0
|
23小时前
|
Shell 数据安全/隐私保护 Docker
docker安装anaconda3 python环境
docker安装anaconda3 python环境
|
2天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
2天前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
2天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
2天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化
|
2天前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
|
2天前
|
Java 数据库连接 Docker
【Docker 专栏】Docker 容器内环境变量的管理与使用
【5月更文挑战第9天】本文介绍了Docker容器中环境变量的管理与使用,环境变量用于传递配置信息和设置应用运行环境。设置方法包括在Dockerfile中使用`ENV`指令或在启动容器时通过`-e`参数设定。应用可直接访问环境变量或在脚本中使用。环境变量作用包括传递配置、设置运行环境和动态调整应用行为。使用时注意变量名称和值的合法性、保密性和覆盖问题。理解并熟练运用环境变量能提升Docker技术的使用效率和软件部署质量。
【Docker 专栏】Docker 容器内环境变量的管理与使用
|
2天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
2天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素