docker快速入门

docker想必大家都有所了解,要是不了解的话,请转到:

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中文学习手册

 
posted @ 2020-03-28 16:27  孤燕南飞  阅读(226)  评论(0编辑  收藏  举报