关键概念
镜像:说简单点就是一堆只读文件。借助联合文件系统,所有的文件显示在同一个目录下。这些文件构成一个完整的可运行的程序及其运行环境
容器:说白了容器就是在镜像这一堆只读的文件的基础上增加了一层读写层,可用来读写文件。容器 = 镜像 + 读写层。注意:容器的概念中不强调运行状态
- 只有当容器进入运行态时,才会为其分配独立的进程空间
仓储:制作好的镜像上传到仓储中,其他人取到后可以在本地docker中运行。
运行状态
所以的容器运行状态可以通过
docker ps -a
来进行查询created:使用
docker create 镜像名
创建后将变成已创建状态exited:运行结束后将转换为结束状态,运行结束的镜像还可以启动
up:运行中的容器
pause:暂停的容器,使用命令
docker pause 容器名
暂停,使用docker unpause 容器名
恢复到运行状态
docker安装
- 在docker官网上注册的时候总会遇到一些问题,原因大家懂的,这里给大家提供一个可用的下载地址,安装的方法很简单,百度下就知道了。
国内仓储
- 正如上面所说仓储用来存储镜像文件,如果想快速将docker用起来最简单的方法就是去仓储中下载一个镜像来部署。这里提供两个仓储:
https://hub.daocloud.io
https://c.163.com/hub#/m/home/
docker使用方法
运行第一个容器
在成功安装docker后,我们需要去下载一个可用的镜像:
docker pull hello-world
下载完成后可以用
docker images
来查看运行镜像
docker run hello-world
,其实这一步相当于是docker create hello-world
和docker start containerId
运行mysql
一般情况下要求docker做到无状态,但是数据库需要存储数据,不能因为重启数据库的容器使得里面的数据全部丢失,因此这里我们将使用挂载存储的方式将docker中的目录映射到宿主机上(这里的宿主机就是运行docker的那台电脑)
docker中的网络在默认情况下外部是无法访问的,需要做一个映射,将docker中的docker映射到宿主机上
具体步骤
拉取镜像的方式一样,不过这里我们使用国内的仓储来进行拉取
docker pull hub.c.163.com/library/mysql:latest
我们使用下面这句话来运行docker:
docker run -v /Users/rui/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=cloud -d -p 3306:3306 hub.c.163.com/library/mysql
-v /Users/rui/docker/mysql:/var/lib/mysql
将docker中/var/lib/mysql映射到本地/Users/rui/docker/mysql,这样每次启动docker时都读出的是同样的数据库文件,保证数据不丢失-e MYSQL_ROOT_PASSWORD=cloud
这里是mysql需要设置的初始root用户的密码-p 3306:3306
将docker中的3306映射成宿主机的3306
经过上面的步骤,mysql就可以被正常访问,同时重启后数据依然存在
疑问点
docker在执行stop后容器是否还在?
- stop后容器依然还在,可以通过
docker ps -a
查看
如果想要删除所有的容器怎么办?
docker rm $(sudo docker ps -a -q)
如何进入到容器中?
docker exec -it containerId bash
这句话的意思是在docker中执行bash(linux的命令窗)