Docker基础

Docker

一个开源的应用容器引擎
基于Go语言
2013年 dotCloud -> Docker Inc
用于打包应用及应用运行的环境

一、Docker 架构

Clients:客户端
Hosts:核心

localhost : 本地

daemon :守护进程

container:容器(类)
image: 镜像(对象)

remote host:远程

daemon:

container:容器
image:镜像

Registries:仓库
Docker hub:官方仓库
private registry: 私有仓库

二、配置Docker镜像加速器

默认仓库在国外(https://hub.docker.com/), 下载镜像比较慢, 一般会配置一个国内的仓库
国内常用:
USTC: 中科大(https://docker.mirrors.ustc.edu.cn)
阿里云: 登录阿里云->搜索"容器镜像服务"相关关键字->容器加速器->加速器地址(每个人都不一样)
在这里插入图片描述
操作方式在下面
在这里插入图片描述

网易云:
腾讯云:

三、Docker命令(CentOS7)

服务相关(守护进程相关):

启动docker服务: systemctl start docker
停止docker服务: systemctl stop docker
重启docker服务: restart docker
查看docker服务状态: systemctl status docker
开机启动docker服务: systemctl enable docker

镜像相关(image)

查看镜像: docker images

  • REPOSITORY: 镜像名称
  • TAG: 版本号 不指定 latest 最新版
  • IMAGE ID: 镜像id
  • CREATED: 创建时间
  • SIZE: 大小

搜索镜像: docker search redis

  • NAME : 名称
  • DESCRIPTION: 描述信息
  • STARS: -
  • OFFICIAL: 是否是官方的标注 [OK] 的是官方的
  • AUTOMATED:-

拉取镜像: docker pull redis:版本号 (不写版本号下最新版本)

  • 镜像版本查询 : hub.docker.com -> 搜索 -> 点击要拉取的软件 -> 下面有所有支持的版本号

删除镜像: (rmi: remove image 缩写)

  • docker rmi IMAGE ID 通过查看镜像中的 IMAGE ID 删除
  • docker rmi redis: TAG 通过查看镜像中的 TAG 删除
docker rmi `docker images -q` : 删除所有镜像
#docker images -q  为查看所有镜像id#
容器相关

查看容器:

  • docker ps 查看正在运行的容器
  • docker ps -a 查看所有容器
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPPRTSNAMES
容器ID镜像初始化命令创建时间状态:
up-运行中;
exited-已关闭
创建时的名字

创建容器: 1. docker run -it --name=容器名字 镜像名称:版本 /bin/bash

  • -it i:保持一致运行 t: 给容器分配一个客户端(交互式容器)
  • 容器名字: (新创建的容器的名称自定义)
  • 镜像名称: 查看镜像中的 REPOSITORY 字段的名字(也就相当于给那个应用创建容器)
  • 版本号: 查看镜像中的 TAG 对应的参数
  • /bin/bash : 进入容器时打开
    实际为创建并进入创建的容器, 当退出容器的时候会关闭容器
  1. docker run -id --name=容器名字 镜像名称:版本
  • -id: i:相同 d:后台创建(关闭客户端不停止容器,守护式容器)
    创建容器但是不进入容器, 需要命令进入, 退出容器时不会关闭容器

进入容器: docker exec -it 容器名称 /bin/bash
退出容器: exit 退出到宿主机
启动容器: docker start 容器名称
停止容器: docker stop 容器名称
删除容器:

  • docker rm 容器ID或容器名称 (删除指定容器)
 docker rm `docker ps -aq` (删除所有容器)

运行中的容器是不能被删除的, 必须停止容器后才能删除

查看容器信息: docker inspect 容器名称

  • HostConfig -> Binds { } : 挂载的数据卷信息
  • Mounts -> Source:宿主机目录 Destination:容器目录

四、容器的数据卷

数据卷概念
  1. Docker容器删除后, 容器中产生的数据不复存在
  2. Docker容器和外部及其不能直接交互数据
  3. 容器之间不能交互数据
    -> 所以产生了数据卷的概念

数据卷: 数据卷是宿主机中的一个目录或文件, 将 [宿主机中的目录] 和 [容器中的目录] 进行挂载操作, 挂载后, 宿主机的目录被称为 数据卷. 两个目录中的数据会进行同步. 一个数据卷可以被多个容器同时挂载, 此时所有目录数据均一致. 一个容器也可以挂载多个数据卷

配置数据卷

创建启动容器是,使用 -v 参数设置数据卷

  • docker run -it --name=容器名称 -v 宿主机目录:容器内目录 镜像名称:镜像版本 …
    1. 目录必须是绝对路径
    2. 如果目录不存在会自动创建一个目录(宿主机或容器目录都会自动创建)
    3. 可以挂载多个数据卷 (命令拼接多个 -v 宿主机目录:容器内目录)
数据卷容器
多容器数据交换:
  1. 多容器挂载容一个数据卷
  2. 数据卷容器
配置:
  1. 创建数据卷容器:
  • docker run -it --name=容器名称 -v 容器内目录 镜像名:镜像版本
  1. 创建应用容器 使用 --volumes-from 参数挂载数据卷
  • docker run -it --应用容器1名字 --volumes-from 数据卷容器名称 镜像名:镜像版本
  • docker run -it --应用容器2名字 --volumes-from 数据卷容器名称 镜像名:镜像版本

五、部署应用

部署MySQL

在Docker容器中部署MySQL, 并通过外部MySQL客户端操作MySQL Server
在这里插入图片描述
当容器中的网络服务需要被外部机器访问是, 可以将容器中提供服务的端口映射到宿主机上, 外部及其访问宿主机的该端口, 从而间接访问容器的服务, 这种操作成为:端口映射

实现步骤
1. 搜索MySQL镜像
2. 拉取MySQL镜像
3. 创建容器

docker run -id                       #以守护式创建爱你
-p 宿主机端口:容器端口                 #内外部端口的映射 
--name=容器名称                       #容器名称
-v $PWD/conf:/etc/mysql/conf.d        #数据卷:MySQL的配置文件存放目录
-v $PWD/logs:/logs                    #数据卷:MySQL的日志文件
-v $PWD/data:/var/lib/mysql           # 数据卷:MySQL的数据文件
-e MYSQL_ROOT_PASSWORD=******         #初始化MySQL的密码
mysql:5.6                             #使用MySQL5.6镜像

说明:
   $PWD: 相当于进入MySQL的目录 (/root/mysql)
  1. 操作容器中的MySQL
部署Tomcat
docker run -id --name=容器名称
-p 8080:8080
-v $PWD:/usr/local/tomcat/webapps   #将主机中的当前(~/tomcat目录)目录挂载到容器的 webapps
tomcat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值