1. Docker介绍
1.1 什么是Docker
Docker(Moby)诞生于2013年,是一款基于 Linux LXC 容器化技术的开源的容器引擎。
建议安装在Linux系统中,并且内核版本大于等于 3.10
1.2 Docker核心概念
1.2.1 容器
容器(安装成功后的软件):用于运行一个软件的容器,在这个容器里包含了软件运行时所需要的一系列依赖。
作用:拥有标准化与隔离性,我们可以轻松的为需要部署的应用构建一套独立的运行环境,且可以在任意支持容器运行的环境中快速部署我们的应用,提高应用的交付能力。
1.2.2 镜像
镜像(软件安装包):容器的安装包,容器中需要的内容,以及相对应的配置信息等等全部打包在这里面,要运行一个容器,必须要现有一个镜像。
1.2.3 仓库
仓库(软件商店):用于存放各个镜像,对镜像进行统一处理。
2.Docker基础操作
2.1 Docker安装
设置Docker镜像,由于 Docker 默认下载镜像的仓库是在国外的, 因此国内用户访问相对来说会较慢一些, 目前国内一些大公司与学校搭建了一些国内的镜像仓库, 可以让我们在下载镜像时更方便些。
2.2 基础命令
2.2.1 启动Docker
sudo service docker start
2.2.2 查找镜像
docker search 镜像名称
(docker search jdk)
2.2.3 拉取镜像
docker pull 镜像名称:标签(版本号)
(docker pull jdk:8) 标签不填默认拉取最新版本
2.2.4 查看本地镜像
docker images
2.2.5 删除镜像
docker rmi 镜像名称:版本号
(docker rmi openjdk:11)
docker rmi [IMAGE ID]
(docker rmi d0d4aeb91dbf)
2.2.6 查看容器
查看运行容器 (docker ps)
查看所有容器 (docker ps -a)
2.2.7 创建并运行一个容器
docker run nginx (不建议使用)
2.2.7.1 端口映射
docker run -d -p 80:80 nginx
docker run -d -P nginx
#后台运行项目 -d (小写)
# 将主机端口映射到容器中的某端口 -p(小写) 主机端口:容器端口
# 暴露容器中的所有端口到主机的随机端口 (暴露容器中所有的端口,并且在主机中使用随机端口去映射到这些暴露的端口) -P(大写)
2.2.7.2 指定容器名称
docker run -d -p 80:80 --name nginx01 nginx
# 指定容器名称 --name 容器名称
2.2.7.3 退出时自动删除容器
docker run -d -P --rm --name testnginx nginx
# 当容器关闭时自动删除 --rm (一般是测试的时候使用)
2.2.7.4 重启策略
docker run -d --name nginx001 -P --restart on-failure:3 nginx
docker run -d -P --name nginx_restart --restart always nginx
指定容器关闭时的重启策略,有三种可选策略 no(默认):表示不重启; on-failure:当失败时重启,还可以加上 :3 指定最多重启3次,如果3次都失败就不再重启了; always:只要已关闭就自动重启。
2.2.7.5 环境变量
docker run -d -P --name nginx_env -e JAVA_ENV=dev nginx
# 环境变量使用 name=value 的方式,可以配置多个
-e 环境变量 或 --env 环境变量
查看环境变量 (docker inspect nginx_env)
2.2.7.6 限制容器资源
docker run -d --rm -m 8m --cpus 1 nginx
通过各个资源相关命令可以在容器启动时直接限制容器最多使用多少资源,如 --cpus 指定可使用 cpu 数量,--memory bytes 限制内存使用大小
docker stats c795035b3361
查看容器当前的状态(监控容器)
2.2.8 删除容器
docker rm 容器id或名称 (docker rm f8ee9decd649)
如果想删除运行中的容器,可以使用强制删除 (docker rm -f a87da467f83b)
2.2.9 停止容器
docker stop 容器id或名称 (docker stop 1072857e270e)
2.2.10 启动容器
docker start 容器id或名称 (docker start 1072857e270e)
2.2.11 查看容器日志
docker logs 容器id或名称
docker logs 1072857e270e(nginx01)
docker logs -f -n 20 nginx01 (实时监听,显示最近20行)
2.2.12 进入容器内部
docker exec -it nginx_env env
docker exec -it nginx01 /bin/bash (进入容器内部)
docker exec -it 容器id或名称 进入后执行的命令