虽然已经安装了docker很久了,但在以前都没有认真的去学习使用过,只是大概的了解了一下原理就放下不管了,在本周的项目中,潘老师要求我们使用docker来使用数据库,趁此机会,总算是成功的掌握了docker的基本用法。
什么是docker
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。
程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
上面的解释引自阮一峰的博客,就我的理解来说docker就是一个特别轻量级的虚拟机,然后以端口映射的方式让本机访问它的应用程序,从而避免在本机进行繁琐的开发环境配置。
docker必知必会
下面是使用docker过程中必用的一些命令,放到这里当然不是因为他们容易记,而是为了以后方便查阅。
当然要记住下面这些也不难,通过后面的实战示例再加上一两次自己的熟悉基本就能记住了。
- docker help 查看帮助,help应该是所有命令行程序最重要的命令了
- docker pull 从Docker Hub中拉取或者更新指定镜像。
-
docker run
- -d 标识是让 docker 容器在后台运行。
- -p 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上。
- -it 使用交互模式
- --name 定义一个容器的名字,如果在执行docker run时没有指定Name,那么deamon会自动生成一个随机数字符串当做UUID。
- -e 设置环境变量,或者覆盖已存在的环境变量。
- –link 连接运行的容器
例如:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
含义:容器的名字为mysql,将容器的3306端口映射到本机的3306端口,mysql数据库的密码为password ,运行的镜像为mysql/mysql-server:latest
-
docker ps
- -a 查看已经创建的容器
- -s 查看已经启动的容器
- docker start con_name 启动容器名为con_name的容器。
- docker stop con_name 停止容器名为con_name的容器。
- docker rm con_name 删除容器名为con_name的容器。
- docker rmi img_name 删除镜像名为img_name的镜像。
- docker exec -it con_name bash 以bash启动该容器
在docker中使用mysql
接下来我将会在docker中新建并启动一个mysql容器,然后以本地访问。
拉取官方镜像
docker pull mysql:5.7.21
创建一个容器并运行
docker run --name mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD=test -d mysql:5.7.21
容器的名字为mysql,将容器的3306端口映射到本机的3309端口,mysql数据库的密码为test ,容器在后台运行,运行的镜像为mysql:5.7.21
查看一下容器的运行状态
docker ps
本地访问试试
没有任何问题
想要直接对容器进行操作?
使用下面的命令就可以了
docker run -it --link mysql:mysql --rm mysql:5.7.21 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -p'
这就直接进入了容器的mysql中。
黄庭祥教了我另一个方法,可以理解为上一步方法的分步执行
首先进入容器
docker exec -it mysql bash
可以发现这个容器和我们的linux基本一样,各种基础的命令都能执行
在容器中启动mysql
mysql -uroot -p -h localhost
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。