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

简介: 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 [主机目录]:[容器目录]  [镜像名称]:[版本]
目录
相关文章
|
3月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
179 5
|
3月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
561 7
|
3月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
321 6
|
3月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
397 2
|
弹性计算 应用服务中间件 Linux
基于ECS快速搭建Docker环境
本教程介绍如何快速搭建Docker环境,并使用Docker部署一个Nginx服务。
基于ECS快速搭建Docker环境
|
弹性计算 应用服务中间件 nginx
|
弹性计算 应用服务中间件 Linux
基于ECS快速搭建Docker环境(进阶班-Day2)
安装Docker总结下来只需要4步: 1、安装Docker-CE 2、配置加速镜像(国内网络原因导致) 3、使用Docker安装Nginx服务 4、测试Nginx
1832 0
基于ECS快速搭建Docker环境(进阶班-Day2)