###安装/启动Docker
####在CentOS 7上安装
Docker默认已经包含在CentOS-Extra仓库中,使用以下命令安装
sudo yum install docker
####在CentOS 6.5上安装
对于CentOS 6.5,Docker是 EPEL 仓库的一部分,因此需要确保已经加入EPEL的YUM源。在CentOS 6上,Docker的包名可能与桌面的docker应用冲突,因此,它的包名改为了docker-io
。
sudo yum -y remove docker
sudo yum install docker-io
####启动Docker
安装Docker之后,需要启动Docker守护进程
sudo service docker start
为了让docker能够开机运行,需要使用chkconfig:
sudo chkconfig docker on
获取Docker镜像,启动Docker容器
sudo docker pull centos
sudo docker images centos
sudo 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首先会在你的宿主机上查找是否存在该镜像,如果不存在的话会从Docker Hub下载。
接下来指定了要在容器中运行的命令是/bin/echo 'Hello, world'
,当容器启动之后,Docker会创建一个新的ubuntu 14.04的环境,然后在里面执行这个命令。当命令执行完毕之后,Docker创建的这个容器的生命周期就结束了。
下面我们创建一个交互式的容器:
$ docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#
这次同样启动了ubuntu 14.04的镜像,但是这里指定了两个额外的参数-t
和-i
。参数-t
为刚才创建的容器分配一个伪终端(pseudo-tty),-i
则允许我们通过获取容器的标准输入创建一个交互式的连接。
要退出该容器,在终端输入exit
或者ctrl+D
即可,这样该容器就可以停止了
root@2e3e7e77adbd:/# exit
exit
几个常用的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 <your username>/<image name> .
运行镜像:
docker run -p <本地端口>:<容器端口> -d <镜像名称>
curl -i <本地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
参考: