Docker的简单使用
第一章 Docker概述
1. docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2. 安装docker
准备安装环境,演示的系统为centos7。
## 1、yum 包更新到最新,更新yum源
yum update
## 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
## 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
## 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
## 5、 查看docker版本,验证是否验证成功
docker -v
3. docker架构
3.1 docker结构
3.2 配置镜像加速
默认情况下,从docker hub(https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器: USTC、阿里云、网易云、腾讯云
1) 创建文件并配置
在linux中自己创建:/etc/docker/daemon.json文件,并导入镜像地址(二选一)
中科大镜像地址
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
阿里云镜像地址
{
"registry-mirrors": ["https://x1am3gq3.mirror.aliyuncs.com"]
}
2) 重新启动docker
#重启
systemctl restart docker
#查看docker信息
docker info
第二章 Docker的命令
1. 进程相关命令
#启动docker服务:
systemctl start docker
#停止docker服务:
systemctl stop docker
#重启docker服务:
systemctl restart docker
#查看docker服务状态:
systemctl status docker
#设置开机启动docker服务:
systemctl enable docker
2. 镜像相关命令
镜像:需要的软件(从仓库中下载(docker hub))
: 从仓库中下载镜像到本地(redis)
#查看镜像: 查看本地所有的镜像
docker images
docker images –q ## 查看所用镜像的id
#搜索镜像:从网络中查找需要的镜像
docker search 镜像名称
#拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
docker pull 镜像名称
#删除镜像: 删除本地镜像
docker rmi 镜像id ## 删除指定本地镜像
docker rmi `docker images -q` ## 删除所有本地镜像
1) 查看镜像
docker images
2) 从仓库下载redis镜像到本地
查询镜像
docker search redis
下载镜像(拉取)
docker pull redis:5.0 (如果没有版本号,默认最新版)
3. 容器相关命令
容器:通过镜像启动的容器。
#查看容器
docker ps ## 查看正在运行的容器
docker ps –a ## 查看所有容器
#创建并启动容器
docker run 参数
#交互式创建容器:创建并启动容器,进入容器内部,通过exit退出容器(关闭容器)
docker run -it --name=mycentos centos:7 /bin/bash
#守护式创建容器:创建并后台启动容器,不会进入到容器内部
docker run -id --name=mycentos2 centos:7
#进入守护式容器
docker exec -it 容器名称 /bin/bash ## 退出容器,容器不会关闭
#停止容器
docker stop 容器名称
#启动容器
docker start 容器名称
#删除容器
docker rm 容器名称
#查看容器信息
docker inspect 容器名称doc
参数说明:
-
-i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
-
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。进入容器内部。
-
-d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
-
-it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
-
–name:为创建的容器命名。
第三章 Docker应用部署
为了后续方便操作:关闭防火墙
#关闭防火墙
systemctl stop firewalld
#防火墙和docker有关联,重启下docker
systemctl restart docker
1. 数据卷
什么是数据卷
数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷。
数据卷:就是宿主机文件(目录)与容器中的文件(目录)挂载,可以通过操作宿主机文件(目录)的方式,完成容器中文件(目录)操作。
数据卷作用
容器数据持久化、外部机器和容器间接通信、容器之间数据交换
1.1 配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
#启动容器,挂在数据卷
docker run -id --name=my_c1 -v /root/data/:/usr/data/ centos:7
#进入容器
docker exec -it my_c1 /bin/bash
#查看共享文件
2. Redis部署
**需求:**在Docker容器中部署Redis,并通过外部机器访问Redis
**要求:**宿主机对外提供的端口 6378
操作步骤:
#搜索镜像
docker search redis
#拉取镜像
docker pull redis:4.0
#创建容器
docker run -id --name=my_redis -p 6380:6378 redis:4.0
参数解释:
-p: 设置映射端口 ,宿主机端口:容器端口
3. tomcat部署
需求: 在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目。
1、拉取镜像
docker pull tomcat:8
2、运行成容器(挂载数据卷)
docker run -id --name=my_tomcat -p 8080:8080 -v /root/tomcat8:/usr/local/tomcat/webapps tomcat:8
3、上传本地tomcat中webapps中的文件(夹)到 宿主机的/root/tomcat8目录
4. nginx部署
需求: 在Docker容器中部署Nginx,并通过外部机器访问Nginx。
1、拉取镜像
docker pull nginx
2、运行成容器
docker run -id --name=my_nginx -p 80:80 nginx
5. mysql部署
**需求:**在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server。
容器中myql:默认存储数据的文件夹位置 /var/lib/mysql
在容器创建的时候:可以指定mysql的密码
-e MYSQL_ROOT_PASSWORD=123456
1、拉取mysql镜像
docker pull mysql:5.7
2、运行成容器
docker run -id --name=my_mysql -p 3307:3306 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
总结
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
docker与虚拟机比较
相同:
- 容器和虚拟机具有相似的资源隔离和分配优势
不同:
-
容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
-
传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
Docker | 虚拟机 | |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为G |
CPU/内存消耗 | 少 | 多 |
支持数量 | 上百个 | 十几个 |
可视化管理 | 不成熟 | 成熟 |