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
目录
相关文章
|
30天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
222 77
|
12天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
84 35
|
11天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
17天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
90 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
24 10
|
23天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
48 3
实战~如何组织一个多容器项目docker-compose
|
21小时前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
19 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
17天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
44 4
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
1月前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
109 3
下一篇
开通oss服务