Docker 学习

448 阅读3分钟

docker基础架构图

docker基础.png

Docker简介

为什么使用Docker

企业环境中存在的某个痛点

  • 软件更新发布及部署低效,过程烦琐且需要人工介入。
  • 环境一致性难以保证。
  • 不同环境之间迁移成本太高。

Docker能解决的问题

  • 首先,Docker 的使用十分简单,从开发的角度来看就是“三步走”:构建、运输、运行。其中,关键步骤是构建环节,即打包镜像文件。但是从测试和远维的角度来看,那就只有两步:复制、运行。有了这个镜像文件,想复制到哪里运行都可以,完全和平台无关。
  • Docker 这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源,不需要考虑应用之间的相互彤
  • 其次,因为在构建镜像时就处理完了服务程序对于系统的所有依赖,所以在使用时,可以忽路原本程序的依赖以及开发语言,对测过和运维人员而言,可以更专注于自己的业务内容,
  • 最后,Docker 为开发者提供了一种开发环境的管理办法,帮助测试人员保证环境的同步,为运维人员提供了可移 植的标准化部罟流程。

CI/CD 与Devops

基本概念

  • CI(Continuous Integration): 持续集成; CD(Continuous Deployment): 持续交付和持续部署 截屏2021-08-02 下午12.27.43.png
  • DevOps: (Devlelopment & Operations) 开发运维 截屏2021-08-02 下午12.29.00.png

CI/CD步骤图解

  • 步骤图解 截屏2021-08-02 下午12.36.59.png

  • 步骤中所涉及的服务 截屏2021-08-02 下午12.32.59.png

  • 1.源代码管理: github/gitlab...

  • 2.编译构建自动化测试: Jenkins/gitlab...

  • 3.自动话发布之镜像管理: nexus/docker...

  • 4.自动部署: 阿里云、腾讯云...

docker 概念

  • 虚拟化架构工具
  • 简单概括:build -> share -> run
  • 与虚拟机类似,但比虚拟机更加高效稳定节省空间

核心概念

  • Image: 镜像
  • Container: 容器
  • Repository: 仓库

Image 与 Container

截屏2021-08-02 下午12.50.29.png

  • hub.docker.com: Contanier和Images的库

  • docker可以使用dockerfile文件来自定义镜像的配置

Docker 小试

Portainer

Portainer(具有可视化操作的Docker界面,需要写命令行)

//创建一个硬盘名字叫portainer_data
docker volume create portainer_data 

//docker启动: 
docker run -d -p 9000:9000 -v portainer_data:/data portainer/portainer

Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
94cfa856b2b1: Pull complete
49d59ee0881a: Pull complete
c71f4038b17b: Pull complete
Digest: sha256:fb45b43738646048a0a0cc74fcee2865b69efde857e710126084ee5de9be0f3f
Status: Downloaded newer image for portainer/portainer:latest
e53a655712e637e527af7715e11c08dde702baa6aec93c0d64b0293b82638edd

- run会判断本地有没有镜像,没有就会启动一个
- -d 后台运行方式
- -p 端口(暴露9000端口到外部)

//启动后查看
~ docker container ls -a
CONTAINER ID   IMAGE                 COMMAND        CREATED         STATUS         PORTS                                       NAMES
e53a655712e6   portainer/portainer   "/portainer"   4 minutes ago   Up 4 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   silly_gagarin
  • 在浏览器中打开 localhost:9000 即可进入 portainer 管理界面

截屏2021-08-02 下午1.15.28.png

安装 MongoDB

docker run --name some-mongo -d portainer/portainer
docker container ls -a //列出所有的cantainer
docker start e53a655712e6  //e53a655712e6 cantainer安装之后的id

安装MySQL

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
docker container ls -a //列出所有的cantainer
docker start e53a655712e6  //e53a655712e6 cantainer安装之后的id

docker images //列出所有的镜像本地镜像