一、Centos安装docker
1、检查安装的docker
命令:yum list installed | grep docker
2、安装
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
命令:sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
命令:sudo yum install docker-ce
二、启动
命令:service docker start
docker --version #查看版本
三、三大核心概念
1.docker镜像(p_w_picpath)
镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统。
例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,
一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个
已经做好的镜像来直接使用。
创建镜像有三种方法:
(1)基于已有镜像的容器创建。主要是利用docker commit命令。
(2)基于本地模板导入。推荐利用OpenVZ提供的模板来创建。
(3)基于dockerfile创建。首先按照dockerfile的格式,编写好dockerfile文件,之后通
过docker build命令来创建镜像。docker build会读取制定的dockerfile,由docker服务器 来创建镜像。
2.docker容器(container)
Docker容器类似一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。
读者可以把容器看做一个简易的LINUX系统环境(这包括root用户权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子。
镜像本身是只读。容器从镜像启动的时候,Docker会在镜像的最上层建一个可写层,镜像本身保持不变。
3.docker仓库(Repository)
仓库是存放docker镜像的地方。仓库和注册服务器(Registry)还是有区别的。注册服务器是存放仓库的地方,在其中存放了很多仓库,每个仓库存放一类镜像文件。
仓库分为公有仓库和私有仓库,DockerHub是目前最大的公有仓库。可以通过docker push/pull命令从仓库中上传和下载镜像,docker search命令来搜索镜像。
四、常用命令:
1、查看镜像列表
docker images
在列出信息中,可以看到几个字段信息
REPOSITORY:来自于哪个仓库,比如 ubuntu
TAG:镜像的标记,比如 14.04
IMAGE ID:它的 ID 号(唯一)
CREATED:创建时间
SIZE:镜像大小
2、查看正在运行的docker容器
docker ps
3、查看所有的docker容器,不管你启动没启动
docker ps -a
4、以后台方式运行docker镜像,-d是后台
如:docker run -p -d 81:80 nginx
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
ngix为镜像名称
5、查看容器的信息
docker inspect 容器id
6、删除docker镜像(需要注意的是,删除镜像前先删除镜像中的容器)
docker rmi 镜像id
7、删除容器
docker rm 容器id
8、进入容器内部(需要保证容器是运行的)
sudo docker exec -it containerID /bin/bash
退出容器
exit
9.拉取镜像
docker pull tomcat 拉取tomcat的镜像
拉取镜像之前,可以用: docker search tomcat,查找tomca有哪些t镜像
10.停止容器
docker stop $CONTAINER_ID(容器id)
11.启动已经存在的容器
docker start $CONTAINER_ID(容器id)
12.查看端口映射情况
docker port $CONTAINER_ID(容器id)
五、解决拉取镜像很慢的问题
在/etc/docker/daemon.json文件中添加下面参数
{
“registry-mirrors” : [“http://hub-mirror.c.163.com”]
}
然后重启
service docker restart
如果你的linxu系统中,/etc/docker目录下,不存在daemon.json的文件,你可以自己手动创建,里面添加参数即可
个人知识理解:在平常的linux系统中,假如我们部署一个java项目,假设用到的容器为tomcat,连接的数据库为mysql,缓存用redis,在linxu系统中,我们正常要满足运行一个项目的前提条件是,安装好jdk,tomcat,redis,mysql等软件。而在docker中。我们实现的前提则是,拉取一个tomcat镜像,运行tomcat对应的docker容器,将web项目放入tomcat中,再拉取mysql镜像,运行mysql容器,放入tomcat容器中的项目则配置好相对应的地址就行。还拉取其他的一些镜像等等。
总而言之就是,一个环境对应一个镜像,而不是在一个镜像中,拉取很多需要的环境,如tomcat,jdk。
个人理解有错误的地方,欢迎大家留言指点。