一:docker环境配置
1.对docker的理解
dockerFile 原材料
dokcer 镜像软件交付品
docker 容器 软件的运行态
dockerFile 面向开发 docker镜像为交付标准 docker容器涉及运维与部署
二:docker 命令
1.docker pull 镜像名
在docker hub 上面找到自己想要的镜像,拉取该镜像
docker search 镜像名称 搜索该镜像
docker rmi -f 删除镜像
2.docker images
查询所有镜像
3.docker [options] run 镜像名
表示运行该镜像创建容器,没有则去docker hub上面 pull 该镜像
docker run -it 镜像ID
交互方式运行该镜像
docker run -d -p 8080:8080 --name myname 镜像名
options:
-d 后台方式运行容器,并返回容器ID
-p 指定端口映射
-P 随机端口映射
--name 自命名
-i 以交互模式运行容器
-t 为容器重新分配伪输入终端 -it通常一起使用
-v /宿主机绝对路径:/容器内目录 共享目录下的文件
8080(docker开放端口):8080(映射的端口) 端口映射
4.docker ps [options]
-a 查询正在运行的和历史上运行的容器
-l 最近创建的容器
-n 数字 最近创建的n个容器
-q 静默模式 只显示编号
5.docker start 容器id
启动该容器
6.docker logs -f -t --tail 容器id
-t 加入时间戳
-f 跟随最新日志
-- tail 显示最后多少条
tail -f logs 循环显示最新日志
7.docker top 容器id
查看容器内运行的进程
8.docker exec -it 容器id bash
对容器进行交互,在容器中打开新的终端,并可以启动新的进程
docker attach 容器id 在容器中打开新的终端,不可以启动新的进程
docker exec -it 容器id /bin/bash
/bin/bash有时候没用就 /bin/sh
9.docker commit
提交容器副本使之成为一个新的镜像
docker commit -m "提交的描述信息" -a "作者" 容器id 要创建的镜像名:[标签名]
10.docker cp 容器id:容器内路径 目的主机路径
拷贝容器内文件到主机
11.docker inspect 容器id
以json的方式返回容器信息
12.docker history 镜像id
查看镜像dockerfile运行方式
12.docker stop 容器id
停止该容器
docker kill 容器id 强制停止
docker -rm 容器id 删除已经停止的
docker rm -f $(docker ps -a -q) 批量删除已经停止的
docker ps -a | awk '{print $1}'|xargs docker stop 批量停止
docker ps -a | awk '{print $1}'|xargs docker rm 批量删除
docker stop $(docker ps -a -q) 批量停止容器
docker rmi -f $(docker images -q) 批量删除镜像
11.exit
退出
ctrl + p + q 容器不停止退出
12.镜像保存与加载
镜像保存
docker save 镜像名 -o xxx.jar
镜像加载
docker load -i xxx.jar
三.dockerFile
1.编写格式
- 每条保留字必须大写且后面必须跟一个参数
- 指令从上往下顺序执行
- #表示注释
- 每条指令创建一个新的镜像层,并对镜像进行提交
2.语法
- FROM 基础镜像 :表示当前新的镜像在哪个基础镜像上面运行的
- MAINTAINER :基础镜像作者
- RUN :容器构建时执行的命令 执行额外的命令
- EXPOSE :当前容器对外暴露接口
- WORKDIR :指定在创建容器后,终端登录默认所在路径
- ENV :在构建镜像过程中设置环境变量
- ADD :拷贝文件到目录且解压缩
- COPY :拷贝文件到目录
- VOLUME :容器数据卷,用于数据保存并持久化
- CMD :指定一个容器启动时要运行到命令,可以有多个CMD命令,但只有最后一个生效,会被docker -run 替换
- ENTRYPOING : 指定一个容器启动时要运行到命令
- ONBUILD :触发器 父镜像被子镜像继承的时候被出发
3.命令
1.docker build
docker build -f 宿主路径文件 -t 自定义镜像名称:版本号 .
2.docker rmi -f $(docker images -q)
删除所有镜像
4 案例
截个图,创建一个通过jar包运行的springboot程序
dockerfile
FROM java:8
MAINTAINER liuwei1 liuwei1@cloudwalk.cn
ADD merchant-0.0.1.jar /merchant.jar
EXPOSE 9095
ENTRYPOINT ["java", "-jar", "merchant.jar"]
build.sh
sudo docker build -t merchant/merchant-server:latest .
运行命令
1.先将jar包上传到该目录下
2.运行build.sh文件 ./build.sh
3.docker ps -a 搜索与自己将要发布的容器同名的容器
4.docker stop ** 停止该容器
5.docker rm ** 删除该容器
6.docker run -d -p 9095:9095 --name merchant-server merchant/merchant-server 运行部署
完善版本
root@member-pay1 ~/dockerfile/merchant-server # ls
application.yml build.sh Dockerfile merchant-0.0.1.jar merchant-start.sh
root@member-pay1 ~/dockerfile/merchant-server # cat build.sh
sudo docker build -t merchant/merchant-server:latest .
root@member-pay1 ~/dockerfile/merchant-server # cat Dockerfile
FROM java:8
MAINTAINER liuwei1 liuwei1@cloudwalk.cn
ADD merchant-0.0.1.jar /merchant.jar
EXPOSE 9095
ENTRYPOINT ["java", "-jar", "merchant.jar", "--spring.config.location=/application.yml"]
root@member-pay1 ~/dockerfile/merchant-server # cat merchant-start.sh
sudo docker stop merchant-server
sudo docker rm merchant-server
sudo docker run -p 9095:9095 --name merchant-server -e TZ="Asia/Shanghai" -v ~/dockerfile/merchant-server/application.yml:/application.yml -d merchant/merchant-server:latest
四 ubuntu docker权限配置
sudo groupadd docker
sudo usermod -aG docker $USER
用户名 ALL=NOPASSWD: ALL