一、docker概念、作用、术语解释
大海是操作系统,鲸鱼是Docker,集装箱是在Docker 运行的容器!
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的作用:简化了环境部署和配置,实现“一次构建,处处运行”,避免了因运行环境不一致而导致的异常。
Docker主机(Host):安装了Docker程序的主机,运行Docker守护进程
Docker镜像 (Image)--类似面向对象中的类:将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器
Docker容器(Container)--类似面向对象中的实例:运行镜像后生成的实例称为容器,每运行一次镜像就会产生一个容器,容器可以启动、停止或删除;容器使用是沙箱机制,互相隔离,是独立是安全的;可以把容器看作是一个简易版的Linux环境,包括用户权限、文件系统和运行的应用等;
Docker仓库 (Repository):用来保存镜像的,仓库中包含许多镜像,每个镜像都有不同的标签Tag<版本>,官方仓库: https://hub.docker.com/
二、使用docker的步骤
docker的文档放在:https://docs.docker.com/
按照提示完成centos7的安装后,uname -r 看下内核信息。
安装docker-ce,https://docs.docker.com/engine/install/centos/
安装所需软件包
命令:yum install -y yum-utils device-mapper-persistent-data Ivm2
设置镜像仓库
命令:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
列出docker ce的版本
命令:yum list docker-ce --showduplicates | sort -r
安装docker
命令:yum install docker-ce
表示安装最新版本,也可以根据上面的list,选择指定版本安装
查看版本
命令:docker version
启动
命令:systemctl start docker
查看状态和信息
命令:systemctl status docker
docker info
停止
命令:systemctl stop docker
重启
systemctl restart docker
设置开机启动
systemctl enable docker
验证
docker run
例如:docker run hello-world
三、docker操作(镜像、容器、更新构建镜像)
1、镜像操作
查找
docker search 镜像名
例如:docker search mysql
参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
拉取
docker pull 镜像名:版本,如果版本不指定,默认就是latest
例如:docker pull mysql:5.6
查看所有本地镜像
命令:docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签(版本)
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
查看完整镜像id,可以加--no-trunc参数
获取镜像信息
docker inspect 镜像id
删除指定的本地镜像
docker rmi -f 镜像id或者镜像名:tag,rmi全英文是remove image,-f表示强制删除
2、容器操作
运行容器
命令:docker run --name mycentos -it XXX
XXX为容器的id ,也就是docker里面的image id
推出容器:exit
容器中,很多命令没有,比如ifconfig,可以这样安装:yum install -y net-tools
查看容器
命令:docker ps -a
docker ps -aq 只显示容器id
启动容器
命令:docker start XX
XX为名称
停止容器
docker stop 名称
删除容器
docker rm 容器id
一个镜像可以生成多个容器,启动时不指定名称,名称是是随机定义的
docker rm -f $(docker ps -aq) 批量删除容器
也可以写成docker rm -f 容器1 容器2
示例:docker安装tomcat
docker pull tomcat
docker image
docker run --name mytomcat -p 9999:8080 tomcat
docker ps
docker exec -it {容器id} /bin/bash
进入webapps文件夹,将webapps.dist重命名为webapps
更新镜像:docker commit -m="描述" -a="作者" 容器id mytomcat2:v2
将修改后的容器提交生成一个新镜像
-m是描述,-a是作者
通过新镜像,运行容器 :docker run --name mytomcat2_con -p 8888:8080 mytomcat2:v2
如果后台运行,加上-d
查看日志
docker logs 容器id或者容器名称,可以看到日志
例如:docker logs mytomcat2_con
拷贝
宿主机拷贝到容器中
docker cp
挂载
共享目录,运行下面的命令
docker run
--name mytomcat2_con
-p
8888
:
8080
-v /root/docker_test/tomcat/mydata:/usr/local/tomcat/mydata
-d mytomcat2:v2
mydata目录在容器中会自动创建,可以看到宿主机对应目录下的文件
docker exec -it xxxxxxxxxxxx /bin/bash
获取元信息
docker inspect 容器id
默认是rw,表示读写,如果容器中不能改,可以改为只读ro
-v /root/docker_test/tomcat/mydata:/usr/local/tomcat/mydata:ro
3.实例
实例一:使用docker搭建环境
构建镜像方式
更新镜像:使用docker commit命令
构建镜像:使用docker build命令,需要创建Dockerfile文件
需要重新定义dockerFile文件,然后重新build
docker build -t mycat/tomcat:1.0
然后运行容器
实例二:docker+Jmeter+grafana+influxdb搭建可视化性能测试监控平台
看链接: