什么是Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
实验环境
VMware虚拟机、CentOS 7
实验过程
安装Docker环境
1.安装依赖的软件包
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置稳定的存储库
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装Docker Engine-Community和containerd
$ sudo yum install docker-ce docker-ce-cli containerd.io
4.启动Docker
$ sudo systemctl start docker
5.测试是否安装成功
$ sudo docker run hello-world
运行结果如下
测试Docker的基本操作
1 运行Ubuntu镜像
# docker run -it ubuntu bash
运行结果如下
2. 显示本地镜像库内容
# docker images
3. 获得帮助
# docker --help
4. 显示运行中的容器
# docker ps
5. 显示所有容器
# docker ps -a
6. 继续运行原容器
# docker restart nostalgic_haslett
# docker ps
# docker attach nostalgic_haslett
MySQL与容器化
1.获取MySQL镜像
# docker pull mysql:5.7
2. 构建Docker镜像
执行以下命令
# mkdir mydock && cd mydock
# vi dockerfile
录入以下内容
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
构建镜像
# docker build . -t hello
运行结果
3. 运行镜像
# docker run -it --rm hello -H
4. 启动MySQL
# docker run -it --net host mysql:5.7 "sh"
# mysql -h127.0.0.1 -P3306 -uroot -proot
5. 查看数据库文件
# docker exec -it mysql2 bash
/# ls /var/lib/mysql
每次启动 mysql 容器,docker 就会创建一个文件卷挂载在容器内/var/lib/mysql位置,这个卷在主机(host)的 /var/lib/docker/volumes/ 目录下,执行以下命令查看
# docker container prune -f
# docker volume prune –f
# docker volume ls
6. 创建文件卷并挂载
# docker rm $(docker ps -a -q) -f -v
# docker volume create mydb
# docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
注意这里没有暴露端口到主机!将自己定义的数据卷挂载在 /var/lib/mysql
7. 启动客户端连接服务器
# docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
/# env
/# mysql -hmysql -P3306 -uroot -proot
注意这里使用了 --link 连接两个容器,客户端容器内可以使用 mysql 这个别名访问服务器