1.什么是Docker的镜像
Docker的镜像是一个只读模板,或者说是一个只读文件。在该模板中包含应用和应用运行时所需要的依赖环境。Docker的镜像采用的是分层的文件系统,每一次对镜像的修改将以“读写层”的形式增加到原来的只读文件的模板上
图2-1展示了Docker镜像的分层结构,下面将进行介绍。
内核(bootfs):用来加载Linux的内核以启动Linux环境。Docker的用户不会与这一层打交道。
根镜像:可以将其理解成操作系统,图2-1的根镜像使用的是Centos。
在根镜像之上就是叠加的每一层应用,图2-1中的MySQL、Tomcat等。
另外,在物理存储上,镜像的本质其实是磁盘上一系列文件的集合,如图2-2所示。Docker默认的镜像存储路径是\"/var/lib/docker\",也可以自定义其他路径
-
2.使用Docker默认的镜像存储路径
-
通过执行以下语句可以得知Docker镜像的存储路径,可以看出在默认情况下,Docker将拉取的镜像存储在\"/var/lib/docker\"目录下
-
[root@localhost ~]# docker info | grep "Docker Root Dir"
2.2查看镜像id
-
[root@localhost ~]# docker images
2.3使用find命令查询镜像文件可以看到刚刚拉取的镜像默认保存在/var/lib/docker/目录
- 2.4、自定义Docker的镜像存储路径
- 在实际生产环境中,Docker默认的镜像存储路径往往不能满足磁盘空间大小的要求。 可以根据以下步骤来修改这个存储路径。
-
(1)创建新的镜像存储路径“/data/docker”,该路径用于保存 Docker的镜像文件。
-
[root@localhost ~]# mkdir -pv /data/docker
-
(2)创建docker守护进程的配置文件
-
[root@localhost ~]# touch /etc/docker/dameon.json
(3)在dameon.json输入以下内容
-
[root@localhost ~]# vim /etc/docker/dameon.json { "graph":"/data/docker" }
(4)重新加载docker的服务并重启docker
-
[root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker.service
(5)重新查看docker的镜像存储路径会发现路径变成了“/data/docker”
-
[root@localhost ~]# docker info | grep "Docker Root Dir" Docker Root Dir: /var/lib/docker
三、docker镜像实战
-
访问docker宫方的公有镜像仓库
-
搜索镜像仓库中的一个镜像如mysql
-
[root@localhost ~]# docker search mysql
-
2.默认拉取的是最新版本的镜像也可以在拉取时指定版本信息
-
[root@localhost ~]# docker pull mysql:5.7.19
3.用拉取的mysql镜像创建一个容器运行mysql数据库
-
[root@localhost ~]# docker run --name my_mysql -p 2206:3306 \ > -e MYSQL_ROOT_PASSWORD=123.123 \ > -d mysql:5.7.19
-p:2206表示宿主机的端口号:3306表示容器的端口号。这里是将容器的\n3306端口映射到了宿主机的2206端口。\n\n-e:传递一个变量给容器。这里通过变量MYSQL_ROOT_PASSWORD 设置\n了MySQL的root用户的密码为 123.123。
-
4.进入MYSQL容器登陆时输入123.123密码,先查看mysql容器id
-
先查看mysql容器id 查看容器所有id号 docker ps -a
[root@localhost ~]# docker exec -it 84145e616ee7 /bin/bash root@84145e616ee7:/# mysql -u root -p
在另外一台客户端上安装mysql并使用远程登陆
-
[root@localhost ~]# mysql -h 192.168.56.42 -P 2206 -u root -p Enter password:
输入密码后,使用命令查看当前数据库
-
MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)