Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看此前提条件来验证你的 CentOS 版本是否支持 Docker 。 需要安装 64位CentOS7.x 以上的版本。
1、查看当前系统的内核版本是否高于 3.10
[root@docker-1 ~]# uname -r 3.10.0-693.el7.x86_642、 安装 Docker 服务
卸载旧版本:(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine安装所需的软件包
yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要device-mapperpersistent-data 和 lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2设置Docker的镜像仓库(阿里)
yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装最新版本的 Docker CE
yum -y install docker-ce1. 卸载 Docker 软件包
yum remove docker-ce2. 删除镜像/容器等
rm -rf /var/lib/docker1、查看镜像列表
#列出已安装的所有镜像 docker images #只显示镜像ID docker images -q这些镜像都是存储在Docker宿主机的 /var/lib/docker 目录下
2、拉取镜像
如果拉取失败,则配置国内镜像加速器(阿里):https://blog.csdn.net/qq_22049773/article/details/106322121
#不配置版本号,则默认拉取最新版本 docker pull 镜像名:版本号 docker pull mysql:5.73、删除镜像
#删除某一个镜像 docker rmi -f 镜像ID #删除所有镜像 (是 `` 反单引号 ) docker rmi -f `docker images -q` 其中 docker images -q 获取所有镜像id1、查看容器
#查看正在运行的隆起 docker ps #查看所有隆起 docker ps -a #查看最后一次运行的容器 docker ps -l #查看停止的容器 docker ps -f status=exited CONTAINER IDIMAGE COMMAND CREATEDSTATUS PORTS NAMES容器 ID镜像初始命令创建日期 容器状态端口号容器名字2、创建容器
注意:必须先有镜像,再有容器
docker pull mysql:5.7
创建容器命令:
docker run [OPTIONS] 镜像名:标签名
创建容器 [OPTIONS] 常用的参数说明:
-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与-t 同时使用 。
-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器指定一个名称 。
-d 创建一个守护式容器在后台运行,并返回容器ID; 这样创建容器后不会自动登录容器,如果加-i参数,创建后就会运行容器。
-v 表示目录映射, 格式为:-p 宿主机目录:容器目录 注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,格式为:-p 宿主机端口:容器端
创建容器,例子:
1、交互式容器
说明: 就是创建容器后,马上会启动容器,并进入容器
docker run -it --name=mysqlMaster mysql:5.7 /bin/bash
(1)退出容器:exit ,此时容器为退出停止状态
(2)退出,但不停止容器:按键盘:Ctrl + p + q ,按一次一行,则多按几次,一般是连两次即可。
2、守护式容器
说明:后台运行的容器
docker run -id --name=mysqlSalve mysql:5.7 /bin/bash
3、启动/停止容器
启动已运行过的容器: docker start 容器名称|容器id 如:docker start mysqlMaster
停止正在运行的容器(正常停止):
docker stop 容器名称|容器id 如:docker stop mysqlMaster
4、登入容器
docker exec -it 容器名称|容器id /bin/bash
如:docker exec -it mysqlMaster /bin/bash
5、删除容器
docker rm 容器名称 | 容器ID
例:docker rm mysqlMaster 注意,只能删除停止的容器
6、查看容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysqlMaster
六、拷贝宿主机与容器中的文件1、将宿主机文件拷贝到容器内
语法:
docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目录
例
docker cp /root/testCopy.txt wnd_tomcat8:/opt/
2、从容器内文件拷贝到宿主机
语法:
docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
例
docker cp wnd_tomcat8:/opt/testCopy.txt /root
docker run -id --name=wnd_tomcat8 -p 8888:8080 -v /usr/local/project:/usr/local/tomcat/webapps --privileged=true tomcat:8 /bin/bash
-p 表示地址映射, 宿主机端口号:容器运行端口号
-v 表示地址映射, 宿主机目录:容器映射目录
--privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数
1、容器保存为镜像
语法:
docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]
(1)、无目录挂载-容器保存为镜像
查看镜像是否有挂载目录:docker inspect --format='{{.Mounts}}' 容器名 例: docker commit -m=“mysql一主一从” -a="maodou" mysql-master mysql-master:1.1
docker commit -m=“mysql一主一从” -a="maodou" mysql-slave mysql-slave:1.1
(2)、有目录挂载-容器保存为镜像
问题: 如果Docker对容器挂载了数据目录, 在将容器保存为镜像时,数据不会被保存到镜像中。
原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会 被保存到新镜像中。可通过 docker inspect --format='{{.Mounts}}' 镜像名 查看是否有目录挂载.
解决:
目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的 目录映射到容器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是var/lib/mysql)
拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容 器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是var/lib/mysql)。
2、镜像备份
docker save -o mysql-master.1.1.tar mysql-master:1.1
3、镜像恢复
删除镜像:docker rmi mysql-master:1.1
恢复镜像:docker load -i mysql-master.1.1.tar
-i 输入的镜像文件
apt-get update,然后执行 apt-get install -y vim