Centos7 docer安装记录
Centos7已自动配置yum源
1 安装
yum install docker
yum源安装不是最新版,是1.13.1,这个旧版本兼容性相对比较好
可以看到只有client版本信息
下面还显示不能连接到docker的daemon(沙箱,也就是主机),原因是docker服务还没启动,只检测到客户端
#启动服务 service docker start #设置docker随着机器一起启动 chkconfig docker on 或者 sudo systemctl start docker sudo systemctl enable docker
2 卸载:
1.查询安装过的包 yum list installed | grep docker docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo 2.删除安装的软件包 yum remove docker-engine.x86_64 -y 3.删除镜像/容器等 rm -rf /var/lib/docker
3 安装最新版
#最新版安装,必须先更新yum源,配置yum #安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 [root@bogon ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 #设置yum源 [root@bogon ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 或者 [root@bogon ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #或者直接用wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #docker-ce是社区版,免费的 [root@bogon ~]# yum install docker-ce -y #或者安装指定版本 yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y
体验docker
#进入docker世界
docker run hello-docker
docker配置加速器,可以加快从官方拉取镜像到本地
docker是国外的服务器,一般会配置加速器 #开启docker加速 vi /etc/docker/daemon.json #输入: {"registry-mirrors":["https://registry.docker-cn.com"]}
如果你是腾讯云的服务器那么请加入:{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}
#保存成功后,重启docker:service docker restart
[root@bogon ~]# service docker restart
#查看宿主机有哪些docker容器 docker ps #查看宿主机有哪些docker镜像 docker images
docker从官方拉取镜像到本地
#拉取centos镜像 docker pull centos #启动并进入容器(容器名为cent,centos为镜像名) docker run -it --name cent centos:latest /bin/bash #启动并保持容器前台进程(容器也就不会关闭),但不进入容器;it是前台交互的进程 docker run -dit --name cent2 centos
#进入已启动的docker容器---attach生产环境【不推荐使用】,多人时候一个阻塞了会造成其它人也阻塞 docker attach cent #启动完就退出并关闭 docker run -d --name cent2 centos #退出容器并关闭 exit #退出但不关闭 Ctrl+P+Q #优雅关闭cent容器(发信号后等待10s) docker stop cent #不优雅关闭【不推荐使用】 Kill cent #删除已停止的容器cent docker rm cent #重新启动容器cent,但不进入 docker start cent #重新启动容器cent并进入容器环境中交互 docker exec -it cent /bin/bash #查看当前镜像 docker images #删除镜像 docker rmi centos #强制删除镜像 docker rmi -f centos **************************************** #宿主机查看容器的日志 docker logs cent #宿主机ip ip addr #查看容器cent的ip docker inspect cent
###########docker进入已启动的容器
不推荐进入容器的方式:
通过attach进入容器的话,当使用exit退出容器的时候,对应的容器也停止运行了,所以在生产环境中很少使用所以生产环境一般不用如果是通过 attach 进入的容器,
在退出容器的时候,如果不想让容器停止运行的话, 就不能使用exit命令或者Ctrl+D快捷键的形式退出,
而是使用 Ctrl + P + Q 组合键退出容器。
推荐进入容器的方式:
【方式一】:通过容器别名进入容器:注意 -it 不能丢 docker exec -it java /bin/bash
【方式二】:通过容器ID进入容器:docker exec -it 91 /bin/bash如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是exec与attach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。
容器启动后,本机并不能直接访问到容器,但是能访问宿主机网段,所以可以把容器映射到宿主机端口,本机直接访问宿主机的该端口
docker容器文件挂载
数据挂载问题:docker不应该负责持久化信息,换句话说,每次要启动容器可以创建后运行,关闭后即可删除
也就是每次都是docker run ,而不是docker start
好处:不需要关心以前数据,也就是没有负担
docker容器运行产生的数据/文件等待,不应该放在容器内部,而是放在容器外部,也就是宿主机
volume参数创建容器数据卷
第一种:容器的文件挂载到宿主机,可以理解为宿主机和容器共享同一个文件夹
直接-v /xxx/yyy表示在容器内创建/xxx/yyy作为挂载文件夹,并挂载在宿主机默认位置
我们通过docker inspect data查看容器元数据,可看到挂载信息
在容器端添加一个文件
回主机目录查看,果然存在此文件
在主机方添加一个文件
回容器里查看,果然也同步增加了此文件
指定主机目录方式挂载文件,格式:-v path1:path2
如下命令,容器方会自动增加一个data目录
宿主机方,同样自动增加一个/opt/data目录
docker容器启动时候,如果要挂载到在宿主机的一个目录,如
这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录
容器的目录不能为相对路径,也就是不是以”/”开头
宿主机中的文件目录
如果不存在,则会自动生成;
如果存在,则直接使用