作者:潘吉祥
接着上次,我们继续入门docker:
容器相关命令
创建容器:(实际上是有dockercreate方法的,这样就是创建一个容器,并不会运行,run相当于create+start,新版docker推荐使用run)
docker run
但我们并不直接这样使用,会跟着各种参数进行配合使用:
-i:表示创建并运行容器
-t:表示容器启动后会进入其命令行。通常于-i一起使用:-it表示创建并运行容器,且运行之后自动进入为当前应用打开一个默认终端,这么说比较苍白,看图吧:
由图我们可以看到,相当于我们显示地运行了一台redis。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。(这个可能有些人不太理解,在这里我先简单说一下,运行在容器内的应用我们无法修改它的配置文件,即时我们能够进入容器内部,也没有可编辑的命令工具,因此我们需要用到目录映射,把容器内的文件映射到宿主机上,这样修改宿主机上的文件就间接修改而来容器内部的文件,这在实际开发中式很常用的)。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行,与-t相反。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,程序访问是通过宿主机映射端口来访问容器的。可以使用多个-p做多个端口映射
(1)交互式的方式创建容器:
docker run -it --name=容器名称镜像名称:标签 /bin/bash
效果如图:(为了效果,我使用了相同的name和镜像,docker是不能创建相同name的容器的,事实上我已经把上一个创建的容器删除了)
可以看出不同,这样的方式我们直接就进入了容器内部,@xxxxx即为创建的容器的id。
那么怎么退出容器呢,不是Ctrl+c哦,是exit:
(2)既然有交互式,就有后台式,事实上我们常用后台式:
docker run -id --name=容器名称镜像名称:标签
如图所示创建成功之后没有进入容器内部。那么当我们想要进入容器内部怎么办呢?可以用下面的命令:
docker exec -it 容器名称(或者容器ID) /bin/bash
如图我们虽然以后台的方式启动容器,但是依然可以进入容器!
查看容器:
docker ps 查看正在运行的容器
docker ps –a 查看所有的容器
启动和停止容器:
docker stop 容器id或者容器名
docker start 容器id或者容器名
拷贝文件:
docker cp 需要拷贝的文件或目录容器名称:容器目录->把宿主机的文件拷贝到容器里
docker cp 容器名称:容器目录需要拷贝的文件或目录->从容器中拷贝文件到宿主机
目录映射示例:
我们可以在创建容器的时候通过 -v参数,将宿主机的目录文件与容器内的目录文件进行映射,这样我们就可以通过修改宿主机目录文件从而去影响容器。
格式:创建容器 –v 宿主机的目录:容器的目录
如:docker run -id -v/usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest
ps(如果你共享的是多级的目录,可能会出现权限不足的提示。这是因为CentOS7中的安全模块selinux把权限禁掉了,我们可以添加参数 --privileged=true 来解决映射目录没有权限的问题)
查看容器的数据:
docker inspect 容器名称(容器ID)
信息有很多,这里是它的端口和ip.
删除容器:(注意删除之前要先停掉要删除的容器,否则会删除失败)
docker rm 容器名称(容器ID)
至此docker的基本操作大家已经有所了解了,不过初学者还是可能不太明白,下面通过实际部署开发必须的MySQL示例来为大家展示:
(在此之前要记得先启动docker:systemctlstart docker)
MySQL部署:
1.拉取MySQL镜像
docker pull centos/mysql-57-centos7
可以看到首先我已经获取到了MySQL的镜像文件
2.通过镜像文件创建容器:(后台运行)
docker run -di --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7
注意:
-p 前面的端口是宿主机的端口,后面的是容器内部MySQL的默认端口。宿主机的端口可以任意,只是用来映射容器内部的MySQL的,不过通常都是写成一致的。
-e 表示添加容器的环境变量,MYSQL_ROOT_PASSWORD参数表示登录MySQL的root用户的密码。
由图看到我们的MySQL容器已经启动了,接下来我们就可以连接它了:
连接名任意;ip地址写宿主机的ip;端口是宿主机映射容器的端口,即冒号前面的端口;使用配置的root用户和密码。
可以看到已经成功连接了,是不是有种神奇的感觉?如果你想在其它机器上使用这个MySQL容器,只需要复制运行即可!
今天的东西有些可能需要理解,初学者还是自己动手亲自实践一下吧!
docker入门教程,关注不迷路哦!
END
【推荐阅读】
原创 | 全网最实在的docker入门教程一
阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力
最后放出我的视频号,以短视频方式分享技术
欢迎关注
明天见