Docker发展史

image.png (1)物理机时代:多个应用程序运行在一台机器上 image.png (2)虚拟机时代:一台物理机器安装多个虚拟机(VM),一个虚拟机运行多个程序 (3)容器化时代:一台物理机安装多个容器实例(container),一个容器运行多个程序

安装

先准备一个mysql容器用于复制配置文件,配置好之后把其删除再创建一个新的 下面这些操作都是为了创建一个容器,它的配置文件和数据都处在宿主机而非容器中,修改配置文件就无需进入容器中

1. docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
2. docker exec -it mysql bash
3. mkdir -p /root/docker/mysql/conf && mkdir -p /root/docker/mysql/data
4. docker cp mysql:/etc/my.cnf /root/docker/mysql/conf

docker run --name mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
--mount type=bind,src=/root/docker/mysql/conf/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql

参考

Docker基本概念

Docker 包括三个基本概念:

镜像(Image):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 仓库(Repository):仓库(Repository)类似Git的远程仓库,集中存放镜像文件。 三者关系可以用下图表示: image.png

Docker命令

image.png

Docker-Compose

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义 一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理

安装错误原因

  1. 第一次执行命令curl -L https://download.fastgit.org/docker/compose/releases/download/2.15.0/docker-compose-uname -s-uname -m> /usr/local/bin/docker-compose --http1.1,url中的版本号应为v2.15.0,导致执行报错命令not found
  2. 修改版本号之,继续执行上述命令,但是并没有注意到文件大小为43.5MB,但received的只有127kB,于是总是报错segmentation fault
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current Dload  Upload   Total   Spent    Left  Speed
   0 43.5M    0  127k    0     0  70030      0  0:10:51  0:00:01  0:10:50 69992
curl: (18) transfer closed with 45527856 bytes remaining to read
> 总结:第一次的问题是url,第2次是curl工具本身的问题(可能通过wget可以正常下载,待测试),最终是在本地下载后通过远程文件传输工具传输到服务器中得以解决

# 参考
- [1] [docker安装报错](https://www.cnblogs.com/GravityTerritory/p/16167842.html),未解决