操作主机必须安装和运行docker,以公司192.168.0.206服务器为例
先可用docker images指令罗列所有docker镜像
查看有哪些docker镜像可用
[root@localhost Dockerfiles]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
dev-centos6-nginx-php5.6-redis 201602161823 7d9f7c151adf 40 hours ago 419.9 MB
dev-centos6-nginx-php5.6-redis 201602161753 930656246b34 40 hours ago 419.9 MB
dev-centos6-nginx-php5.6-redis 201602151417 fd5c52b3a9f7 2 days ago 425.2 MB
docker.io/mysql latest 596847483ae2 3 weeks ago 360.2 MB
dev-centos6-nginx-php5.6-redis latest 136648699c60 4 weeks ago 416.2 MB
dev-centos6-nginx-php5.3-redis latest 9b1345f095d0 7 weeks ago 446.6 MB
dev-centos7-nginx-php5.4-redis latest 98aa3cd33449 8 weeks ago 382 MB
docker.pepszxy.com:5000/nginx latest 813e3731b203 9 weeks ago 133.8 MB
nginx-php-redis php5.4 330efb9de8ba 10 weeks ago 454.3 MB
nginx-php latest df3875b298c2 10 weeks ago 374.2 MB
docker.io/centos 6 3bbbf0aca359 4 months ago 190.6 MB
docker.io/centos 7 ce20c473cd8a 4 months ago 172.3 MB
通过docker镜像的REPOSTORY:TAG的组合或IMAGE ID可唯一确定一个镜像,一般使用REPOSTORY:TAG居多,IMAGE ID不太好记
使用docker run 指令基于镜像启动一个容器,docker run接受许多配置参数,可通过docker run help指令查看帮助文档,通常使用的参数
解析如下:
-d 以daemon的形式运行docker 容器,而不是启动后便停止,适合类似nginx,mysql,php等需长期提供服务的容器运行
-w 指定容器的工作目录,类似用户的家目录,进入容器后会首先进入-w指定的目录,通常不指定也没关系
--name 指定容器名称,不指定名称,docker将使用任意字符代替
--restart 指定容器故障时的重启策略,推荐always参数
-p 指定端口映射的方式,-p 8090:80代表将主机的8090端口映射至容器80端口
-v 指定数据卷映射,一般用于数据持久化保存场景,比如代码目录和数据目录,-v 主机目录:容器目录表示将主机目录挂载到容器目录,容器
的实时数据操作将得到保留。删除容器不会删除数据
使用206dev-centos6-nginx-php5.6-redis:201602161823启动一个容器
[root@localhost Dockerfiles]# docker run -d --name=test.dev.dtedu.com --restart=always -w /data/web -v /home/test.dev.dtedu.com:/data/web dev-centos6-nginx-php5.6-redis:201602161823
9449fc1a56696aba66925abe7c9ae37a9f6d97cb65f1e2162d8ba1b4e7caad3c
运行成功后,通过docker ps指令可查询到启动的容器
[root@localhost Dockerfiles]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9449fc1a5669 dev-centos6-nginx-php5.6-redis:201602161823 "supervisord -n" 52 seconds ago Up 51 seconds 80/tcp test.dev.dtedu.com
有时候有更改容器名称的需求,可通过docker rename指定来实现,比如可通过下列指令将test.dev.dtedu.com容器名修改为test2.dev.dtedu.com
[root@localhost Dockerfiles]# docker rename test.dev.dtedu.com test2.dev.dtedu.com
[root@localhost Dockerfiles]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9449fc1a5669 dev-centos6-nginx-php5.6-redis:201602161823 "supervisord -n" 3 minutes ago Up 3 minutes 80/tcp test2.dev.dtedu.com