管理docker容器

上一篇介绍了安装和启动一个容器,并通过端口绑定成功访问到启动的nginx服务。
然而围住一想,还是什么也做不了:
1.nginx的根目录在哪,我们怎么更改它,怎么让它访问我们想它它访问的文件?
2.nginx的配置文件在哪。怎么加一个服务?或者怎么修改配置文件?

带着这些疑问往下说

一,绑定本地目录到容器目录
和绑定端口一样,子可以绑定本地的目录到容器中,这样可以在本地编辑文件,通过容器中的服务来访问。
首先把昨天创建的容器删除

$ docker rm webserver
webserver

重新生成并启动容器

$ docker run -d -p 80:80 -v /web:/var/www/html –name webserver nginx
289bce1943a57011e7f9cf7f2925390aa0e7b874a9e9930c17429a7dc78f346f

通过-v命令,可以把本地的目录绑定到容器中,上面命令是把本地的 /web目录绑定到/var/www/html。
为什么要绑定到/var/www/html目录,好吧,后台看配置文件的时候会看到,当然可以绑定到别的目录,到时候改nginx的配置文件即可。

通过绑定后,就可以在你本地 /web下加任务你想加html文件,就可以通过浏览器访问了。就和编辑你本地的服务器文件一样。

二,登录到容器
运行起来的nginx容器,其它就是一个linux系统,当然也可以登录上去。
通过命令

$ docker exec -u root -it webserver bash
root@289bce1943a5:/#

就可以登录到正在运行的webserver容器了。命令行也已经切换到了容器里面。
-u 是指定登录的用户名
webserver 是当前运行的容器实例
bash 是登录上去运行的命令

登录上去后,这就是一个linux系统,可以查看系统信息

# uname -a
Linux 289bce1943a5 4.9.8-moby #1 SMP Wed Feb 8 09:56:43 UTC 2017 x86_64 GNU/Linux

可以

apt-get update

还可以

apt-get install XXX

不过安装软件前先apt-get update

当然也可以登录上去后运行任何命令,比如 ls 命令

docker exec -u root -it webserver ls
bin  boot  dev     etc  home  lib     lib64  media  mnt  opt     proc  root  run  sbin  srv  sys  tmp  usr  var

这条命令的意思是登录到webserver容器上执行 ls 命令,执行完后就退出了

三,修改容器上的文件
1,直接在服务器上修改
既然已经登录到容器上了,就像使用linux系统一样,怎么改都可以。
但当你很高兴地打出vi /etc/nginx/nginx.conf的时候,会发现

vi /etc/nginx/nginx.conf
bash: vi: command not found

啥?vi都没有,是的,vi也没有,这是一个相当干净的系统。
你只有自己装个vim再修改

apt-get update
apt-get install vim

安装完成后就可以用vi /etc/nginx/nginx.conf来修改配置文件了

2.在本地和容器间拷贝文件

docker的拷贝命令

docker cp <container>:/path/to/file.ext .

这个命令和scp命令有点像

现在拷贝webserver容器中的/etc/nginx/nginx.conf文件 到当前目录

docker cp web:/etc/nginx/nginx.conf .

拷贝下来后,在你本地修改这个配置文件

修改完成后,再拷贝到容器中
拷贝当前目录下的nginx.conf文件到web容器的/etc/nginx/目录下

docker cp nginx.conf sebserver:/etc/nginx/

同理也可以用这种方式修改其它的文件和文件夹

好了,有时候光有了nginx还不行,还需要php,mysql等等。
下一篇打算写写如何打造真正的开发环境