版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sqh201030412/article/details/80138279
一.如何安装Docker
docker(mac) 下载:
其余直接参考:
centos需要到7才可.
配置镜像加速(阿里云)
二.操作docker
明白两个概念 image 和 container
对于无状态的服务(web 服务) 直接运行image即可
对于有状态的服务(jenkens,solr,zookeeper..) 需要挂载虚拟目录,对其运行期间的数据进行持久化.
使用镜像
1.docker run --name webserver -d -p 80:80 nginx
用nginx镜像启动一个容器,命名为webserver,并且映射端口到80.
2.docker exec -it webserver bash
使用该命令进行指定容器内部,进行命令行操作
3.docker diff webserver
查看容器的变化
4.docker commit [选项] <容器ID或者容器名称> [<仓库名>[:<标签>]]
将容器制作成一个镜像
5.查看镜像列表
docker image ls
指定名称
docker image ls nginx
6.查看镜像历史纪录
docker history nginx:latest
7.Dockerfile 命令点
from 指定基础镜像 必须指定
run 执行命令
形式1:
shell格式:run <命令>
形式2:
exec格式: run ["可执行文件","参数1","参数2"]
docker build [选项] <上下文路径/URL/>
docker build -t nginx:v3 . 使用当前目录下 dockerfile构建镜像 nginx:v3
copy 复制文件
copy <源路径>.....<目标路径>
add 更加复杂的复制功能
相对copy 多了自动解压缩功能,仅仅文件需要解压缩时候使用
CMD 容器启动命名
cmd和run类似,两种格式:
shell格式:CMD <命令>
exec 格式: cmd ["可执行文件","参数1","参数2"]
ENTRYPOINT 入口点
ENV 设置环境变量
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>
VOLUME 定义匿名卷
操作容器
1.启动容器
两种情况,新建一个容器启动或者将在终止状态的容器启动
新建并且启动: docker run
启动一个终止容器:docker container start
后台运行: docker run -d xxxxx
2.终止容器 : docker container stop
查看终止容器: docker container ls -a
重新启动: docker container restart
进入容器:
docker attach xxxxid
docker exec -it xxxxid bash 推荐 退出不会终止容器
删除容器
docker container rm xxxxx 删除终止状态容器
docker container prune 清理所有处于终止状态的容器
数据管理:
数据卷: volume
创建数据卷: docker volume create my-vol
查看数据卷:docker volume ls
挂载数据卷: docker run -d -p \
--name web \
-- mount source=my-vol,target=/webapp \
training/webapp \
python app.py
删除数据卷: docker volume rm my-vol
清理无主数据卷: docker volume prune
查看数据卷具体信息: docker inspect web
网络映射:
映射容器端口到本地端口: docker run -d -p 5000:5000 training/webapp python app.py
查看端口配置: docker port nostalgic_morse 5000
容器互联:
创建新的docker网络:
docker network create -d bridge my-net
运行一个容器连接到my-net网络
docker run -it --rm --name busybox1 --network my-net busbox sh
再运行一个容器连接到my-net网络
docker run -it --rm --name busybox2 --network my-net busbox sh
在任意容器内 ping 容器名称 比如busybox1 发现已经能联通了
Docker Compose 适用多个容器间的连接
配置DNS两种方式:
1.使用宿主机的DNS配置
2.使用Docker配置文件来配置 /etc/docker/daemon.json
三,实战,docker启动jenkins
1.下载jenkins 镜像
docker pull jenkins
2.本地配置相关以来程序
maven
3.启动jenkins
docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -u root -v /app/jenkins:/var/jenkins_home -v /app/maven:/var/local/maven jenkins
这里因为jenkins是有状态的服务(会产生磁盘数据),所以将其产生的数据映射到本机中进行持久化,jenkins构建Java项目时,需要以来Maven来打包,所以将本地的maven目录也映射到容器中.