一,什么是容器?
了解docker先了解容器,Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
这里不过多介绍容器的知识,感兴趣自行了解一下
二,docker简介
Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用程序,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。
传统的 Linux 容器使用 init 系统来管理多种进程。这意味着,所有应用程序都作为一个整体运行。与此相反,Docker 技术鼓励应用程序各自独立运行其进程,并提供相应工具以实现这一功能。这种精细化运作模式自有其优势。
Docker 包括三个基本概念:
镜像:
Docker的镜像概念类似于虚拟机里的镜像(比如.ISO
文件),是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
容器:
Docker容器是由Docker镜像创建的运行实例,类似VM虚拟机,支持启动,停止,删除等,每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件,类似于一个单独的虚拟机。
仓库:
镜像便于传播,而仓库就是专门用来传播这些镜像的地方,他有点类似与Github,或者你可以把他看成一个存放各种镜像的镜像商店,docker的官方仓库位于国外,下载比较缓慢,国内可以使用阿里云、网易活其他的国内镜像仓库
三,docker的安装
可以根据中文社区的指引安装:docker中文社区
利用脚本离线安装:http://t.csdnimg.cn/k0RTP
安装完查看docker是否在运行
重启docker:systemctl restart docker
查看docker的版本:docker version
四,docker的使用(个人)
docker拉取镜像:
镜像是docker运行容器的基础,可以拉取厂库的镜像,也可以自己使用Dockerfile制作镜像(后面再说),以运行mysql镜像为例:
docker pull mysql:8.0.35(不指定版本号默认拉取最新的版本)
查看下载的镜像文件:
docker images
删除下载的镜像:
docker rmi -f mysql:8.0.37
-f 强制删除
-a 删除全部镜像
使用docker inspect mysql:8.0.35可以查看更多关于此镜像的信息
运行mysql镜像:
运行之前先了解一下docker数据持久化,docker提供了两种运行方式,一种是默认运行,只需要提供端口号和容器名称就能运行,这种方式的优点的快捷方便,缺点是需要更换镜像或者升级镜像版本,数据较难保存,另一种是将容器挂载在指定目录下,这样更换镜像或者升级镜像版本的时候只需要指定挂载目录就能将原先是数据挂载到新的 容器中,实际应用和生产环境中,推荐第二种,特别是数据库,最好指定目录挂载。
创建挂载目录:自行决定目录名称
指定镜像,生成容器:
docker run -dt -p 3306:3306 --name=mysql8.0.35 --restart=always \
-v /data/mysql/conf/:/etc/mysql/conf.d \
-v /data/mysql/data/:/var/lib/mysql \
-v /data/mysql/logs/:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.35 --lower-case-table-names=1
运行该命令:
查看容器是否创建成功:
docker ps
docker ps -a 查看所有容器以及容器的详细信息(正常运行和未正常运行)
使用docker inspect mysql8.0.35 可以查看容器的详细信息和挂载目录
进入新创建的容器:
docker exec -it mysql8.0.35 bash
输入mysql账号密码:mysql -uroot -p123456 进入数据库
docker exec -it b30 bash中的b30是运行容器id的前3位,进入容器可以使用id或者名称
exit:退出容器
容器的启停
停止容器:
systemctl stop mysql8.0.35
再使用docker ps查看容器状态,显示没有在运行的容器
启动容器:
docker start mysql8.0.35
再使用docker ps查看容器状态,显示已经启动指定的容器
查看docker的容器日志信息:
docker logs mysql8.0.35
删除启动的容器
docker ps #查看正在运行发容器
docker rm mysql8.0.35 #删除容器
删除容器前必须先停止容器,否则删除失败
离线加载容器镜像
有时候会遇见这样的情况,你使用的服务器无法访问外网,但是需要指定的容器来运行,这样可以找台联网的电脑,下载指定的镜像,并把下载好的镜像打包拉到需要的服务器中
以mysql镜像为例:
查看下载的镜像文件:
docker images
将下载的镜像加载的指定目录下:
docker save -o /tmp/mysql8.0.37.tar mysql:8.0.37 #将mysql:8.0.37拉取压缩到/tmp目录下
恢复镜像:
将上一步加载的镜像文件放到宿主机指定目录下,使用
docker load -i /tmp/mysql8.0.37.tar