docker

是一个开源的应用窗口引擎 是使用水箱机制,相互隔离 性能开销极低 ce版 ee版

docker 安装 yum update 安装依赖 yum insta -y yum-utils device-mapper-persistent-data lvm2 安装yum源 yum-config-manager --add-repo https://download.docker.com/linux/cents/docker-ce.repo yum install docker-ce -y docker -v

-- docker架构 client hosts registries

docker命令 启动/停止/重启/status systemctl start/restart/stop/status docker

镜像相关的命令 docker images 查看 docker search redis 搜索 docker pull redis 拉取 docker pull redis:5.0 docker rmi (id) 删除 docker rmi redis:latest docker images -q docker rmi 'docker images -q' 删除所有

容器相关命令 docker run -it --name=c1 centos:7 /bin/bash -创建容器 docker run

docker run -id --name=c2 centos:7 -创建容器后不自动进入 -d退出后不自动关闭 docker ps -a -查看所有的容器 docker exec -it c2 /bin/bash -进入容器 docker exec -退出容器 但不会关闭 docker start/stop c2 docker rm c2 -删除c2 docker rm 'docker ps -aq' -删除全部 docker inspect c2 -查看容器的详细信息

数据卷概念 容器删除后,在容器中的数据还在吗 外部机器和容器不能通 容器挂载一个宿主机上的数据卷目录 docker run ... -v 宿主机目录:容器内目录 -目录没有会自动创建 -目录必须是绝对路径 docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash docker run -it --name -c2 \ -v ~/data2:/root/data2 \ -v ~/data3:/root/data3 \ entos:7 -挂载两个目录

两个容器挂载同一个目录 docker run -it --name=c3 -v ~/data:root/data centos:7 docker run -it --name=c4 -v ~/data:root/data centos:7

c3创建数据卷 容器的目录路径不写默认会自动创建/var/lib/docker/volumes docker run -it --name=c3 -v /volume centos:7 /bin/bash c1,c2挂载到c3 docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash docker run -it --name-c2 --volumes-from c3 centos:7 /bin/bash

数据卷容器 1.创建启动c3数据卷容器,使用-v参数,设置数据卷 docker run -it --name=c3 -v /volume centos:7 /bin/bash

2.创建启动c1c2容器,使用--volumes-from 参数,设置数据 卷 docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash -c1和c3绑定 docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash docker insepect c1 -查看详细

----- docker应用部署 docker 中部署mysql 搜索mysql 拉取mysql 创建容器 操作容器中的mysql

外部主机 - 宿主主机 - docker/mysql -通过端口映射使外部机能访问docker/mysql docker run -d \ -p 3307:3306\ --name=c_mysql \
-v $pwd/conf:/etc/mysql/conf.d \ -要映射的目录 -v $pwd/log:/logs \ -v $pwd/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:5.6

mkdir mysql cd mysql docker run -id \ 创建容器 eocker exec -it c_mysql /bin/bash -进入 mysql -uroot -p123456 create database db1; 测试: 外部主机用sqlyog 连接到docker数据库

---- tomcat 部署 搜索tomcat 拉取tomcat

mkdir ~/tomcat cd ~/tomcat

docker run -id --name=c_tomcat \ -p 8080:8080 \ -v $pwd:/usr/local/tomcat/webapps \ -将主机中当前目录挂载到容器的webapps tomcat

--- nginx 部署 搜索 拉取

mkdir ~/nginx cd ~/nginx

docker run -id --name=c_nginx \ -p 80:80 \ -v $pwd/conf/nginx.conf:/etc/nginx/nginx.conf \ -v $pwd/logs:/var/log/nginx \ -v $pwd/html:/usr/share/nginx/html \ nginx

---- redis 部署 搜索 docker search redis 拉取 docker pull redis:5.0

创建容器,设置端口映射 docker run -id --name=c_redis -p 6379:6379 redis:5.0 使用外部机连接redis redis-cli.exe -h 192.168.149.135 -p 6379

---- docker file docker 镜像原理

dockerfile概念及作用

--- dockerfile 镜像制作 和 还原

docker commit 容器id 镜像名称:版本号 -容器转为镜像 docker commit id cp_tomcat:1.0 docker images -查看

docker save -o 压缩文件名称 docker save -o cp_tomcat:1.0.tar ll -查看

docker rmi (id)

docker load -i cp_tomcat:1.0.tar docker images -查看

注: 还原以后挂载的目录不能生效

dockerfile 的 常用命令 from 指定基镜像 maintainer 指定维护者信息,可以没有 run docker使命今生效需要在前面加run add 添加宿主机的文件到容器内,有自动解压的功能 copy 和copy一样,但没有自动解压的功能 workdir 设置当前目录 volume 设置巻,挂载主机目录 expose 指定对外的端口 cmd 指定容器启动后要做的事情

dockerfile 案例 需求: 自定义centos7镜像 默认登录路径为 /usr 可以使用vim 实现步骤 定义父镜像 FROM center:7 定义作者信息: MAINTAINER abcabc@123.com 执行安装vim命令: run yum install -y vim 定义默认的工作目录: workdir /usr 定义容器启动执行的命令: cmd/bin/bash

mdkir docker-files cd docker-files vim c_dockerfile FROM centos:7 MAINTAINER abc abc@123.com RUN yum install -y vim WORKDIR /usr cmd /bin/bash :wq

docer build -f ./ c_dockerfile -t abc_centos:1 . -执行会按照上面的文件安装配置

验证 docker run -t --name=c2 abc_centos:1

案例2 需求: 定义dockerfile,发布springboot项目 步骤: 安义父镜像:FROM java:8 定义作者信息: MAINTAINER abcabc@123.com 将jar包添加到容器: ADD springboot.jar app.jar 定义容器启动执行的命令: CMDjar -jar app.jar 通过docerfile构建镜像: docer bulid -f dockerfile 文件路径 -t 镜像名称:版本

mdkir docker-files cd docker-files 把java8放在当前目录 vim c_dockerfile FROM centos:7 MAINTAINER abc abc@123.com ADD springboot-hello-0.0.1-SANPSHOT.jar -项目名称 CMD java -jar app.jar :wq

docker build -f ./springboot_dockerfile -t app . docker images -可见生成容器app

docker run -id -p 9000:8080 app
docker ps -a -查看

------ docker compose 服务编排 是一个分布式部署的工具 利用dockerfile定义运行环境镜像 使用docker-compose.yml定义组成应用的各服务 运行docker-compose up 启动应用

docker compose 安装和使用 docker-compose -v

mkdir docker-compose cd docker-compose

vim docker-compose.yml -名字是固定的 viersin: '2' services: nginx: image:ngin ports:

  • 80:80 links:
  • app volumes:
  • ./nginx/conf.d:/etc/nginx/conf.d app: image: app expose:
    • "8080" :wq

mkdir -p ./nginx/conf.d cd ./nginx/conf.d/ vi nginx.conf lcation / { proxy_pass http://app:8080; }

docker-compose up -自动创建两个容器

--- docker 私有仓库 搭建私有仓库

拉取私有仓库镜像 docker pull registry

启动 docker ru -id --name=registry -p 5000:5000 registry

打开浏览器 http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功

修改daemon.json -添加一个key,用于让docker人生私有仓库地址 vim /etc/docker/daemon.json {“insercure-registries”:["私有仓库服务器ip:5000"]}

重启docker 服务 systemctl restart docker docker start registry

-- 上传私有镜像 docker images docker tag centos:7 192.168.149.135:5000/entos:7 docker push 192.168.149.135:5000/entos:7

docker start registry -启动私有仓库

拉取私有镜像 docker pull 192.168.149.165:5000/entos:7

docker和虚拟机的比较

包含所有的内容: 代码,运行环境,系统工具,系统库存和设置

-完

JS
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。