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
目录
相关文章
|
3天前
|
Docker 容器
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
|
3天前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
18 1
|
18小时前
|
Kubernetes 持续交付 调度
为什么是容器编排技术
**容器编排**是自动化容器部署、管理和扩展的技术,它使得构建跨容器应用、集群调度、健康检查和弹性伸缩变得自动化。Kubernetes是最流行的容器编排平台,提供自动化部署、服务发现、故障恢复和扩展性。学习Kubernetes时,理解其作为面向终态系统的理念很重要,从单个容器开始,结合实践进行学习能提高效率。Kubernetes是Google开源的容器编排引擎,支持自动化部署、可伸缩性和容器管理,其核心概念包括Pod、Controller、Workload、Service、PV/PVC、Namespace和etcd。
|
1天前
|
JSON 测试技术 定位技术
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
【5月更文挑战第16天】在Docker环境下部署Simple mind map思维导图工具
16 1
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
|
3天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
|
3天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
|
3天前
|
Java 虚拟化 Docker
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
|
3天前
|
Docker 容器
docker部署omni_usdt 0.8.0版本私有链集群环境
docker部署omni_usdt 0.8.0版本私有链集群环境
|
3天前
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
|
3天前
|
Linux Docker 容器
更改docker容器中的时间而不影响宿主机
更改docker容器中的时间而不影响宿主机