什么是Docker以及常用命令

本文介绍了Docker的概念,包括其目标和与Linux容器的关系,详细讲解了如何在不同操作系统上安装Docker,以及Docker的镜像、容器和数据卷的使用。涵盖了Docker的基本架构、命令行操作和常见应用如MySQL、Tomcat和Redis的部署实例。
摘要由CSDN通过智能技术生成

1.Docker的概念

Docker是几月Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是i通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用火数据库应用等等)及其运行环境能供做到“一次惊醒,处处运行”

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

1.2Docker的应用

2.安装Docker 

Docker可以运行在,MAC.Windows、Centos等操作系统上。

# 1、yum包更新到最新--更新centos7系统
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源--指定docker下载路径
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y。 ce:社区版【】   ee:企业版【收费】
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

2.1Docker架构 

  • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

  • 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

  • 仓库(Repository)是集中存放镜像文件的场所。

类似于

Maven仓库,存放各种jar包的地方;

github仓库,存放各种git项目的地方;

Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是 Docker Hub(https://hub.docker.com/), 

存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

2.2配置Docker镜像加速器 

默认情况下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器:

==阿里云==

网易云

腾讯云

我用的是阿里云

3.Docker常用的命令 

3.1Dcoker服务相关的命令

1.启动docker服务:systemctl  start  docker

2.关闭docker服务:systemctl stop  docker

3.重启docker服务:systemctl  restaert docker

4.开启启用docker:systemctl  enable  docker

5.查看docker状态:systemctl  status  docker

6.docker的帮助命令: systemctl   命令  --help

3.2Docker镜像相关命令

1.查看本地有哪些镜像:docker       images

2.查看仓库的镜像:docker search  镜像名

3.删除本地镜像: docker rmi 镜像名:版本号

                              docker rmi      镜像id

4.拉取镜像到本地:docker pull  镜像名:版本号        ---如果没有指定版本号 默认为最新版本

5.帮助命令: docker  命令 --help

3.3Docker容器相关命令

1.运行容器

docker   run   -it   --name= 容器名   centos:7  /bin.bash

-i:保持容器一直运行,因为勇气没有客户端练就就会自动关闭

-t:给容器分配伪终端接受命令

--name:给容器取名字

/bin/bash        进入零七的初始化指令  这里相当于是单开一个shell窗口

exit: 退出容器 --关闭当前容器

ctrl+q+p:退出容器---不会关闭容器

2.查看本地容器

docker  ps  --查看运行的容器

docker ps -a  --查看所有的容器

3.进入容器 --运行的容器

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

4.启动一个容器

docker start   容器di/容器名

5.关闭容器

docker  stop 容器id/容器名

6.删除容器

docker rm  容器id/容器名【删除的为停止的容器】

docekr rm -f   容器id/容器名【强制删除容器】

7.查看容器的日志

docker  logs  容器id/容器名

4.容器的数据卷

思考:Docker容器和外部机器可以直接交换文件吗?

思考:Docker容器删除后,容器中的数据还在吗?

思考:容器之间想要进行数据交换?

4.1数据卷的概念:

数据卷是宿主机中的一个目录或文件

当容器目录和数据卷目录绑定后 对方的修改会立即同步

一个数据卷可以被多个容器同时挂载

一个容器可以被挂载多个数据卷

作用:

1.解决数据持久化问题

2.解决外部机器和容器的间接通讯问题

3.解决容器之间的数据交换

4.2配置数据卷

1. 宿主机容器卷中的内容发生改变对应容器内的目录也跟着改变

2. 容器内的目录发生改变宿主机容器卷内的内容也跟着变化

3. 删除容器后,再次开启容器并挂载容器卷。数据依然存在
4. 一个容器挂载多个容器卷
5. 多个容器挂载一个容器卷

5.Docker应用部署

5.1安装mysql

1. 从远程仓库拉取mysql镜像: docker pull mysql:5.7
2. 运行mysql容器: 
   docker run -id --name=容器名 -p 宿主机端口:容器的端口 -e MYSQL_ROOT_PASSWORD=密码  镜像名[mysql:5.7]
   > -p :表示宿主机的端口和容器内部端口映射
   > -e :表示环境设置
3. 外界navicat连接mysql容器.

如果删除容器后,容器内的数据就会不存在,

使用数据卷,即使删除容器,容器的数据依然有保存。

docker run -id -p 3308:3306  -v /app/mysql/log:/var/log/mysql -v /app/mysql/data:/var/lib/mysql -v /app/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name=mysql70  mysql:5.7

5.2安装tomcat 

1.拉取镜像  docker pull

2.运行容器  docker run -id --name=容器名 -p 8080:8080 tomcat:版本号

3.测试范文tomcat

 

有些会报404 未找到  我的就就是除了这个

下边是 解决办法 

 

 原因:tomcat容器内部没有webapps目录

1.docker exec  -it   容器名  /bin/bash

 

 5.3安装redis

(1)简单版

1.docker  run -id --name=容器名 -p  6379:6379

2. 连接redis--window图形化界面

为了如果想修改redis的配置文件,或者redis重启后数据丢失。就比较 麻烦了。

(2)完整版

1.创建一个目录 /app/redis  并把redis.conf 放入该目录,之前一定有redis配置文件

2.创建一个目录/app/redis/data --存放redis持久化数据

docker run -id --name=容器名 -v /app/redis/redis.conf:/usr/redis/redis.conf -v /app/redis/data:/data -p 6380:6379 redis:6.0.20 redis-server /usr/redis/redis.conf

测试: 修改redis.conf配置文件---默认数据库16---改为15个

测试: docker exec -it 容器名 /bin/bash

redis-cli

set key

value save

把容器删除--在重写启动一个容器--新的容器中是否存在原来的数据。 

5.4安装rabbitmq

docker run  -id  --name=容器名  -p 5672:5672  -p 15672:15672 rebbitmq:managment

测试: 访问 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值