目录
一、理论讲解
1.什么是Docker的镜像
Docker的镜像是一个模板,或者说其是一个只读文件。在该模板中包含应用和应用运行时所需要的依赖环境。Docker的镜像采用的是分层的文件系统,每一个对镜像的修改将以“读写层”的形式增加到原来的只读文件的模板上。
- 内核(bootfs):用来加载Liunx的内核以启动Linux环境。Docker的用户不会与这一层直接打交道。
- 根镜像:可以将其理解成操作系统,图2-1中的MySQL、Tomcat等。
- 在根镜像之上就是叠加的每一层,图2-1中的MySQL、Tomcat等。另外,在物理存储上,镜像的本质其实是磁盘上一系列文件的集合,如图2-2所示。
二、镜像存储路径。
1.使用Docker默认的镜像存储路径
(1)查看Docker镜像的存储路径。
[root@localhost ~]# docker info | grep "Docker Root Dir"
(2)查看镜像的ID,这里是0e55fd86a138。
[root@localhost ~]# docker ps -a
(3)切换到“/var/lib/docker”目录下。
[root@localhost ~]# cd /var/lib/docker/
(4)执行“find”命令查找镜像文件。
[root@localhost docker]# find . -name 0e55fd86a138*
2.自定义Docker的镜像存储路径。
(1)创建新的镜像存储路径“/data/docker”。
[root@localhost ~]# mkdir -p /data/docker
(2)创建Docker守护进程的配置文件。
[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# vim daemon.json 添加以下内容
{
"greph": "/data/docker"
}
(3)重新加载Docker的服务,并重启Docker。
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker.service
(4)重新查看Docker的镜像存储路径。
[root@localhost docker]# docker info | grep "Docker Root Dir"
三、Docker镜像实战。
1.【实战】使用Docker公有镜像仓库。
(1)搜索镜像仓库中的一个镜像,如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表示容器的端口号。这里是将容器的
3306端口映射到了宿主机的2206端口。
- -e:传递一个变量给容器。这里通过变量MYSQL_ROOT_PASSWORD 设置
了MySQL的root用户的密码为 123.123。
(4)进入MySQL容器,登录时输入“123.123”密码。
[root@localhost ~]# docker exec -it 01988a60925b /bin/bash 进入容器
root@01988a60925b:/# mysql -uroot -p 登录数据库
(5)执行以下命令允许root用户远程登录。
mysql> grant all privileges on *.* to root@"%" identified by "123.123"
with grant option;
(6)客户端操作,使用MySQL客户端登录。
[root@localhost ~]# yum -y install mysql
[root@localhost ~]# mysql -h 192.168.112.50 -P 2206 -u root -p
Enter password: