环境与安装
Centos 7 64位
# 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装所需的软件包。yum-utils提供了yum-config-manager ,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 设置阿里云仓库源(官方的:https://download.docker.com/linux/centos/docker-ce.repo)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker-CE(社区版)
yum install -y docker-ce
基础镜像命令
# 启动Docker
systemctl start docker
# 重启Docker
systemctl restart docker
# 查看Docker状态
systemctl status docker
# 查看Docker版本
docker -v
# 从服务拉取镜像(以下以nginx为例)
docker pull nginx
# 查看镜像
docker images
# 将镜像导出磁盘成压缩文件
docker save -o nginx.tar nginx:latest
# 删除镜像
docker rmi nginx:latest
# 加载压缩文件为镜像
docker load -i nginx.tar
# 根据给定的Dockerfile和上下文以构建Docker镜像,--tag, -t,镜像的名字及tag,后面的空格+点是指构建执行所在的本地路径PATH,也可以是远程URL
docker build -t javaWeb:1.0 .
基础容器命令
# 创建运行Nginx容器,containerName给容器命名(eg:nTest),-p是宿主机和容器端口映射,:左边是宿主机端口,右边是容器端口,-d是后台运行,nginx镜像名称
docker run --name containerName -p 80:80 -d nginx
# 查看所有运行的容器及状态,-a查看所有状态的容器
docker ps
# 查看容器运行日志
docker logs -f nTest
# 进入容器,执行命令,-it给当前容器创建一个标准输入输出终端,nTest容器名,bash进入容器后执行的命令,是linux终端交互命令
docker exec -it nTest bash
# 停止容器
docker stop nTest
# 启动容器
docker start nTest
# 删除容器, -f强制删除
docker rm nTest
数据卷
接触数据和容器的耦合
# 创建数据卷,给数据卷命名html
docker volume create html
# 查看所有数据卷
docker volume ls
# 查看数据卷详细信息
docker volume inspect html
# 删除所有未使用的数据卷
docker volume prune
# 删除一个或多个指定的数据卷,html为指定数据卷名
docker volume rm html
# 创建容器并挂载数据卷到容器内的html目录
docker run --name nTest -v html:/usr/share/nginx/html -p 80:80 nginx:latest
DockerFile
自定义镜像
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:7 |
ENV | 设置环境变量 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./xx /xx |
RUN | 执行Linux的shell命令,一般是安装命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时使用 | ENTRYPOINT java -jar xx.jar |
## 示例
## 指定基础镜像
FROM java:8-apline
## 复制jar包
COPY ./demo.jar /tmp/demo.jar
## 暴露端口
EXPOSE 8090
## 入口
ENTRYPOINT java -jar /tmp/demo.jar
Docker Compose
快速部署分布式应用,通过指令定义集群中的每个容器如何运行(多个docker run的命令转为指令)