首页 文章 类别 VISION 关于


Docker安装及基本命令

安装/启动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 列出Container
  • docker 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

参考:

Dockerizing Applications: A “Hello world”