docker快速入门
docker想必大家都有所了解,要是不了解的话,请转到:
docker安装请根据服务器类型,区别安装,基本命令大差不差,各种博客满天飞,暂且略过
从开始的手动部署到服务器,各个服务器之间的配置差异,导致很多问题,真是头都大了,现在有了docker就方便了很多,统一环境,统一部署,不会差异化报错,话不说直接开整
部署一个容器,首先先查找docker的镜像列表,比如现在部署个mysql
搜索mysql镜像 docker search mysql 拉取 docker pull mysql:5.6(这里安装的是5.6版本) 部署 docker run -id \ -p 3306:3306 \ --name=mysql56 -v $pwd/conf:/etc/mysql/conf.d \ -v $pwd/data:/var/lib/mysql \ -v $pwd/logs:/logs \ -e MYSQL_ROOT_PASSWORD=19941205 \ mysql:5.6
i:一直运行
t:给容器伪终端
d:后台运行
p:映射端口 80:80 云服务器的话,需要设置外网入站规则,然后本地开启80端口程序
登陆mysql docker exec it mysql[NAME] /bin/bash mysql -uroot -p********
docker基础命令介绍:
停止一个容器 docker stop 容器名字 删除非运行的容器 docker rm 容器ID or 名字
启动一个容器 docker start 容器名字 删除所有未运行的容器 docker rm `docker ps -aq` 获取容器详细信息 docker inspect 容器名字 删除一个镜像 docker image rm XX 或者是 docker rmi XX:version -f 强制删除 清理没有使用的镜像文件 docker image prune -f强制删除 -a 删除所有镜像文件
重启docker
systemctl restart docker
关闭docker
systemctl stop docker
systemctl status docker
开机启动docker
systemctl enable docker
数据卷设置:
docker run ... -v 宿主机的目录(文件):容器内的目录(文件)
例子:
docker run -it --name=c1 -v /home/centos/data:/home/centos/data daocloud.io/centos:latest /bin/bash
路径必须时绝对路径
可以挂载多个数据卷
制作镜像:
dockerfile 语法关键字 镜像: 本质是分层的文件系统 bootfs 内核叠加 rootfs 基础镜像 统一文件系统 讲不同层整合成一个文件系统,为各个层提供一个统一的视角,隐藏多层的存在 docker commit 容器id 镜像名称:版本号 目录挂载的文件在commit后,不会进入新的容器里面 docker save -o 压缩文件名称 镜像名称:版本号 docker load -i 压缩文件名称 Dockerfile 命令 FROM 指定父镜像,指定是基于哪个镜像构建的 MAINTAINER 指定作者信息 LABEL 标签,用来表明dockerfile的标签 RUN 执行命令["/bin/bash","param1",...] CMD 容器启动时候执行的命令 格式同上
简单DEMO:
FROM java:8
MAINTAINER guyan<XXXXX@163.com>
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
CMD java -jar demo.jar
需要在当前jar文件下执行
docker build -f ./dockerfile文件 -t 自定义的容器名字 .
docker-compose工具:
编排多让其分布式部署的工具,提供命令管理容器化应用的 完整开发周期,包括服务构建,启动和停止, 利用Dockerfile定义运行环境镜像 使用docker-compose.yml定义组成应用的各服务 运行docker-compose up启动应用 编写启动文件,固定文件名:docker-compose.yml
简单DEMO(已nginx代理和部署一个jar包): version: '3' services: nginx: image: nginx ports: - 80:80 //docker对外暴露的端口:nginx对外暴露端口, links: - demo //生成容器的名字 volumes: - ./nginx/conf.d:/etc/nginx/conf.d //nginx的数据卷映射目录 demo: image: demo expose: - "8901" 启动docker-compose up -d 后台运行 停止docker-compose down 创建父目录 mkdir -p ./nginx/conf.d
docker私有仓库:
需要先现在registry容器,并运行,映射5000端口
docker run -id --name=registry -p 5000:5000 registry 修改docker的daemon.json文件(没有就新建一个) vim /etc/docker/daemon.json {"insecure-registries":["IP:5000"]}
NEWNAME:是在制作镜像时候自定义的名字
将镜像传入私有仓库 将现有镜像打标记 docker tag NAME:VERSION IP:5000/NEWNAME 将镜像传入私有仓库中 docker push IP:5000/NEWNAME 将私有仓库的镜像拉取到本地 docker pull IP:5000/NEWNAME
深入学习建议:docker中文学习手册
平凡是我的一个标签