Docker精简学习系列(一):安装、常用命令和基本概念理解

本系列为Docker的学习笔记,内容比较精简,主要用于快速复习和随时查询。计划分四节内容:

  • 安装、常用命令和基本概念理解
  • 常用应用和两个.NET项目的容器部署
  • 简单学习Dockerfile
  • 简单了解Docker compose

 

 

一、安装Docker

  1. 更新yum包:yum update
  2. 安装yum配套的工具包:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置yum源:yum-config-manager –add-repo //download.docker.com/linux/centos/docker-ce.repo
  4. 安装docker:yum install -y docker-ce
  5. 查看docker版本,验证是否安装成功:docker -v
  6. 配置镜像加速器:登陆阿里云>进入窗口镜像服务>镜像工具>镜像加速器>(CentOS)>复制到shell中执行

 

 

二、Docker服务相关命令
1、启动/停止/重启/后台运行/查看服务状态
systemctl 【start | stop | restart | enable | status】 docker

 

 

三、镜像相关命令
1、查看本地所有镜像/搜索远程镜像/拉取镜像/删除镜像
docker 【images | search (redies) | pull (redies:7) | rmi (redis:7 | e42dd4e79c7) | 】

2、查看所有镜像ID
docker images -q

3、删除所有镜像
docker rmi `docker images -q`

 

 

四、容器相关命令

1、创建容器
docker run 【-it | -id】 –name=c1 centos:7 /bin/bash
-it:创建容器(交互式),立即进入容器,并开启一个终端,exit退出容器后,容器立即关闭
-id:创建容器(守互式),并一直在后台运行,进入容器并exit退出后,容器不会关闭
–name:容器命名
/bin/bash:进入容器的初始化指令,打开shell脚本窗口

2、查看正在运行的容器:
docker ps

3、查看正在运行和已经退出的容器:
docker ps -a

4、进入容器
docker exec -it c2 /bin/bash
-it:进入容器,并开启一个终端
c2:容器名称
/bin/bash:进入容器的初始化指令,打开shell脚本窗口

5、退出容器
exit

6、启动容器/关闭容器/删除容器/查看容器信息。注:start容器后,容器自动转为守护式
docker 【start | stop | rm | inspect】 c1

7、查看所有容器ID
docker ps -aq

8、删除所有容器
docker rm `docker ps -aq`

 

五、数据卷相关命令

1、创建容器时配置数据卷
docker run -id –name=c1 -v /root/data_linux:/root/data_container centos:7 /bin/bash
-v:设置数据卷,如果要挂载到多个数据卷,可以多次-v;如果要挂载多个容器数据目录,则每个容器创建时挂载相同的数据卷即可
/root/data_linux:/root/data_container:冒号前为数据卷目录的绝对路径,冒号后为容器数据目录的绝对路径
容器删除后:容器数据丢失,但数据卷仍然在。重新创建容器时,重新挂载到数据卷目录,即可恢复容器数据

2、配置数据卷容器:
①创建数据卷容器(/volume可以自己定义):
docker run -id –name=c3 -v /volume centos:7 /bin/bash
②创建c1和c2容器,并挂载到c3上(–volumes-from为设置属性命令)
docker run -id –name=c1 –volumes-from=c3 centos:7 /bin/bash
docker run -id –name=c2 –volumes-from=c3 centos:7 /bin/bash
完成以上两个步骤,inspect查看c3、c1和c2,找到以下信息
“Source”: “/var/lib/docker/volumes/de83e5ea073ca277882694995f88137b2933e1f695362590103760f166923b04/_data”,
“Destination”: “/volume”,
如上,Source目录即为在宿主机上自动创建的数据卷,Destination即为容器数据目录

 

 

六、基本概念的理解

  1. 镜像:程序安装包,类似于windows安装会经常接触到的iso文件。
  2. 远程镜像:官方hub服务器上的镜像,hub类似于javascript的npm、NET的nuget。远程镜像要先拉取到本地计算机,因hub在国外,速度比较慢,所以一般要设置国内的镜像加速。镜像加速器,就是国内服务商对hub服务器的克隆。当然,也可以创建自己的私有镜像服务器。
  3. 本地镜像:远程镜像要拉取到本地计算机,才可以创建容器。本地镜像,类似于类,容器就是用这个类创建的实例。所以同一个版本的镜像,只有一个;而相应的容器可以有很多个。
  4. 容器:使用本地镜像创建容器后,程序在容器环境中运行。容器即“容器”这个词汇本身的含义,又有运行在容器中的程序的含义。容器中运行的程序,不限于应用程序,也可以是操作系统,比如我们在CentOS上安装docker,而在docker的容器里,我们可以再运行一个CentOS。同一个镜像,可以创建多个容器,即在一个docker里我们可以运行多个相同的程序,比如运行多个redis,容器之间是沙箱隔离的。
  5. 宿主机:docker运行所在的Linux服务器
  6. 数据卷:解决容器中产生的数据的持久化保存、容器之间数据交互、容器与外部之间数据交互问题。将容器中的数据目录挂载到宿主机的文件目录,并使这两个目录数据保持同步,宿主机中的这个文件目录称之为数据卷。容器删除后,容器数据丢失,但数据卷的数据仍然保留。一个数据卷可以被多个容器挂载,一个容器也可以挂载到多个数据卷,多对多关系
  7. 数据卷容器:多容器数据交互,可以通过挂载到同一个数据卷上来实现。也可以在容器和数据卷之间,再创建一个数据卷容器。容器挂载到数据卷容器,数据卷容器再挂载到数据卷,从而实现数据交互。即“容器>数据卷容器>数据卷”
  8. docker核心意义:①应用程序和依赖环境一起部署在容器中,可以发布到任何Linux服务器上,解决“水土不服”的问题;②使用文件层(镜像)叠加,重用文件层(镜像),区别于虚拟机,可以有效利用资源,而且效率非常高。

 

 

七、最后上图理解