###安装/启动Docker
####在CentOS 7上安装
Docker默认已经包含在CentOS-Extra仓库中,使用以下命令安装
sudo yum install docker
####在CentOS 6.5上安装
对于CentOS 6.5,Docker是 仓库的一部分,因此需要确保已经加入EPEL的YUM源。在CentOS 6上,Docker的包名可能与桌面的docker应用冲突,因此,它的包名改为了docker-io
。
sudo yum -y remove dockersudo yum install docker-io
####启动Docker
安装Docker之后,需要启动Docker守护进程
sudo service docker start
为了让docker能够开机运行,需要使用chkconfig:
sudo chkconfig docker on
获取Docker镜像,启动Docker容器
sudo docker pull centossudo docker images centossudo docker run -i -t centos /bin/bash
###基本命令
下列命令创建一个容器简单的输出Hello world:
$ docker run ubuntu:14.04 /bin/echo 'Hello, world'Hello, world
这里docker run
命令指定了使用的镜像为ubuntu:14.04
,我们的容器就是从该镜像运行。当指定一个镜像的时候,Docker首先会在你的宿主机上查找是否存在该镜像,如果不存在的话会从下载。
接下来指定了要在容器中运行的命令是/bin/echo 'Hello, world'
,当容器启动之后,Docker会创建一个新的ubuntu 14.04的环境,然后在里面执行这个命令。当命令执行完毕之后,Docker创建的这个容器的生命周期就结束了。
下面我们创建一个交互式的容器:
$ docker run -t -i ubuntu:14.04 /bin/bashroot@af8bae53bdd3:/#
这次同样启动了ubuntu 14.04的镜像,但是这里指定了两个额外的参数-t
和-i
。参数-t
为刚才创建的容器分配一个伪终端(pseudo-tty),-i
则允许我们通过获取容器的标准输入创建一个交互式的连接。
要退出该容器,在终端输入exit
或者ctrl+D
即可,这样该容器就可以停止了
root@2e3e7e77adbd:/# exitexit
几个常用的docker命令:
docker ps
列出Containerdocker logs
显示容器的标准输出docker stop
停止运行中的容器docker version
显示当前docker客户端和守护进程的版本信息
docker
命令的子命令很多,
attach 附加到一个运行中的容器上去build 从Dockerfile构建镜像commit 从容器当前的修改创建一个新的镜像cp 从容器的文件系统复制文件/文件夹到主机路径create 创建一个新的容器diff 检查容器文件系统发生的修改events 从服务器获取实时的事件exec 在已存在的容器中运行命令export 将容器中的内容以流的方式导出为tar归档history 显示镜像的历史images 列出所有镜像import 从tar包中的内容创建一个新的文件系统镜像info 显示系统的信息inspect 返回容器低级的信息kill 杀掉一个运行中的容器load 从tar归档载入镜像login 注册或者登录到Docker注册服务器logout 从Docker注册服务器登出logs 检索容器中的日志port 查询基于NAT到PRIVATE_PORT的公开端口pause 暂停容器中所有的进程ps 列出容器pull 从Docker注册服务器拉取一个镜像或者仓库push 推送一个镜像或者仓库到Docker注册服务器restart 重启一个运行中的容器rm 删除一个/多个容器rmi 删除一个/多个镜像run 在新的容器中运行命令save 保存镜像到tar归档search 从Docker Hub搜索一个镜像start 启动一个已经停止的容器stop 停止运行中的容器tag 为仓库中的镜像添加标签top 查询容器中运行的进程unpause 取消容器的暂停状态version 显示Docker的版本信息wait 堵塞住直到容器停止,然后打印它的退出码
使用Dockerfile构建镜像:
docker build -t/ .
运行镜像:
docker run -p <本地端口> : <容器端口> -d <镜像名称> curl -i <本地ip> : <本地端口>本地端口> 本地ip> 镜像名称> 容器端口> 本地端口>
查看容器的日志(类似于tail -f
命令)
docker logs -f <容器名称>容器名称>
####例子:使用官方Nginx Docker镜像
使用之前,需要先获取官方nginx镜像
docker pull nginx
执行命令如下
docker run --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx
下面对提供的参数进行一一解释:
--name
指定了我们创建的容器名称为nginx_server-d
指定了容器在后台运行-p
则指定了将容器的80
端口映射到宿主机的8080
端口-v
参数指定了将本地的/Users/mylxsw/codes/php
目录映射到容器的/usr/share/nginx/html
目录,并且访问权限为只读
启动该容器之后,就可以通过http://localhost:8080
访问了。
更复杂一点,可以通过使用-v
参数指定nginx配置文件-v /some/nginx.conf:/etc/nginx/nginx.conf:ro
。
在指定新的nginx配置文件时,注意一定要设置nginx的
daemon off;
配置项,如果以后台模式运行的话,容器就没法跟踪nginx的进程,容器启动后就会立即结束。
如果仅仅是测试的话,可以使用--rm
选项,这样,在容器结束运行之后就可以自动删除,当然使用--rm
选项的时候不能和-d
选项同时使用。
docker run --rm --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx
参考: