1. Docker核心对象
1.1 镜像(Image)
Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。
1.2 容器(Container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。
1.3 Docker架构图
2. Docker服务基本操作
2.1 查看Docker状态
systemctl status docker
2.2 启动Docker服务
systemctl start docker
2.3 关闭Docker服务
systemctl stop docker
2.4 重启Docker服务
systemctl restart docker
2.5 设置开机自启
systemctl enable docker
2.6 关闭开机自启
systemctl disenable docker
2.7 查看Docker信息
docker info
2.7.1 查看docker info中具体key的信息
例:
docker info | grep 'Docker Root Dir:'
2.8 Docker镜像加速
由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json 下面命令直接生成文件 daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
3. Docker镜像操作
3.1 下载镜像
语法: docker pull 镜像名 例:
docker pull hello-world
3.2 浏览镜像文件
语法:
docker images
3.3 查看镜像详情
语法: docker inspect 镜像名或者镜像id(一般前三位即可) 例:
docker inspect hello-world
3.4 查看镜像历史
例:
docker history hello-world
3.5 导入镜像
docker load < hello-world.tar.gz
3.6 运行镜像
docker run hell0-world
3.7 导出镜像
docker save hello-world | gzip > hello-world.tar.gz
3.8 删除镜像
语法:docker image rm 镜像名或镜像id
docker image rm hello-world
4.Docker容器操作
4.1 启动容器
docker run -it xxx bash
4.2 查看Docker中的容器
4.2.1 查看Docker运行中的容器
docker ps
4.2.2 查看Docker中所有容器
docker ps -a
4.3 查看容器日志
docker logs 容器id
4.4 停止或重启容器
4.4.1 停止运行中的容器
docker stop 容器id
4.4.2 重启容器
docker restart 容器id
4.5 进入指定容器(容器运行时)
docker exec -it 容器id bash
4.6 退出容器
exit
4.7 删除容器
其中,如果删除运行中的容器,需要添加 -f 参数。
docker rm 容器id
4.8 清除所有终止状态的容器
docker prune
5.Docker数据管理
5.1 概述
在容器中管理数据主要有两种方式:
- 挂载主机目录 (Bind mounts)-最常用 (docker run -v 宿主机目录:容器目录)
- 数据卷(Volumes)
数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
5.2 数据卷操作
5.2.1 创建数据卷
语法: docker conlume create 数据卷名,下同 例:
docker conlume create container-vol
5.2.2 查看所有数据卷
docker volume ls
5.2.3 查看指定数据卷
docker volume inspect container-vol
5.2.4 启动挂载数据卷的容器
语法:docker run -it -v 数据卷名:/root 镜像名:版本 bash
docker run -it -v container-vol:/root centos:7 bash
5.2.5 删除数据卷
如果数据卷被容器使用则无法删除
docker volume rm container-vol
5.2.6 清理无用数据卷
docker volume prune
5.3 挂载主机目录
5.3.1 在启动容器时,以目录直接挂载的方式进行数据操作
docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
- /usr/app:为宿主机目录
- /opt/app: 为启动容器的一个目录
- -v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
如图:
5.3.2 查看挂载目录信息
docker inspect 容器id
6. 镜像制作
以centos7为基础,构建oracle jdk8的镜像
6.1.1 创建并编辑Dockerfile文件
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
6.1.2 使用 Dockerfile 构建镜像
在Dockerfile所在目录执行docker指令
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
|