如何通过docker运行容器
本文以mysql为例,记录如何在docker hub上查找对应的镜像,并运行。
查找镜像
在docker hub中找到mysql的官方镜像(https://hub.docker.com/_/mysql),其实可以直接在控制台使用docker search mysql 查找mysql镜像,直接run,但是很多配置信息没办法找到。所以建议先看一下官网里的配置教程,里面讲述了很多如何配置mysql的docker命令。
基本启动命令
通过命令启动对应的容器,其中,docker run说明要启动某一个镜像,OPTIONS 是你在启动时给容器配置的参数。具体有什么参数可以通过docker run --help查看。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
官方提供的最基本的命令拉取并运行mysql,下面是官方提供的最基础的启动命令,直接运行就可以启动一个mysql的容器。
图中红框的就是我们在启动时配置的容器属性(OPTIONS ),例如,--name 代表后面红框是这个容器名称。假如我们在一个docker 中启动了两个mysql,我们可以通过--name 来区分每个容器(例如 some-mysql 分别为mysql1,mysql2)。mysq:tag则代表我们要启动的镜像名称和版本号,没有指定tag则会运行最新的镜像。如果我们本地没有对应的版本镜像,那么docker会先从仓库中拉取对应的镜像,再启动。
自定义容器属性。
我们在使用一个软件时,往往会修改对应的配置文件(例如mysql暴露的端口,角色和密码)。那么在docker上运行对应的容器,我们可以在启动时就指定对应的配置信息。
指定配置文件
在docker hub的帮助文档中,往往会说明运行容器的配置文件所在位置。我们可以通过命令,让容器在启动时使用我们准备的配置文件。
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
如果没有配置文件,我们同样可以通过命令的方式指定对应的属性,例如指定表的默认编码为 UTF-8(utf8mb4):
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
转存docker数据
一般在官网文件中,都有说明如何将docker的数据转存到主机系统上,例如对于mysql来说,可以运行以下命令,:
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
进入容器
当我们需要进入运行的容器进行操作时(例如登录容器中的mysql),那我们要先要进入容器,首先,通过docker ps查看正在运行的容器信息:
然后使用docker exec -it 容器id /bin/bash进入容器:
docker exec -it 83df0be493c /bin/bash
之后就相当于在本机上操作一样了。
上一篇: DockerFile