Docker从入门到使用

最近把家里闲置的斐讯N1又用了起来,加了一个闲置的移动因盘,瞬间空间不再有限制,可以多玩一些应用,也可以多跑跑服务了,斐讯N1相比树莓派而言性能上还是好很多的,毕竟是4核1.5G,还有2G的内存,速度什么的完全碾压树莓派,另外还有个千兆的以太网口,不过不知道是家里的路由还是其它设备的问题,网络传输的速度我一直没能跑太高。好了闲话不多说,我们回归正题,还是看看Docker怎么用。

安装

Docker的安装比较简单,一般直接用官方给出的安装脚本就可以了。

wget -qO- https://get.docker.com/ | sh

安装完成之后会有如下的提示:

    If you would like to use Docker as a non-root user, you should now consider
    adding your user to the "docker" group with something like:

    sudo usermod -aG docker major
   Remember that you will have to log out and back in for this to take effect! 

意思是说如果想用标准用户用docker的话,需要把用户加到docker组,所以我们直接运行sudo usermod -aG docker major来把当前用户加到docker组,记得还要注销重登录才有效。

安装之后我们通过如下命令开启服务,并测试服务是否正常运行:

sudo service docker start
docker run hello-world

使用

安装完成之后我们可以通过以下的方式运行docker

 docker run -i -t ubuntu:15.10 /bin/bash

上述命令中run表示运行一个镜像, -i表示交互式输入, -t表示运行一个终端, /bin/bash表示运行的命令,我们还可以通过-d让容器转入后台运行。

启动docker之后,我们可以通过docker ps查看正在运行的容器列表。
另外可以通过docker logs 2b1b7a428627查看容器的输出2b1b7a428627是PS中查到的容器的ID。

运行完成之后,我们可以通过docker stop 2b1b7a428627停止一个容器。

docker images可以列出所有本地已经拉取的镜像。

端口转发

运行docker之后一般对于网路应用我们需要把docker里面的端口映射到本地端口,可以通过-p完成这个操作:

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

其中127.0.0.1:5001是本地端口,5000是容器里面的端口。

指定名称

运行docker的时候可以通过--name给容器指定一个名称,这样后面就可以通过这个名称对容器进行管理。

目录映射

有些时候对于docker里面的数据我们希望在本地可以查看,或者本地的配置文件可以传递到docker内部,这个时候我们就需要用到目录映射,目录映射通过-v参数完成

-v $PWD/www:/www #将主机中当前目录下的www挂载到容器的/www

启动MySQL容器示例

我们可以通过如下脚本启动一个MySQL实例:

docker run -p 3306:3306 \
  --name mysql \
  -v /path/to/local/conf:/etc/mysql/conf.d \
  -v /path/to/local/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456
  -d mysql:5.6

上面命令中-e可以指定一个系统环境变量,这里通过系统环境变量的方式设置了MySQLroot账户密码。

命令索引

生命周期管理: run, start/stop/restart, kill, rm, pause/unpause, create, exec;

容器操作:ps, inspect, top, attach, events, logs, wait, export, port;

镜像仓库: login, pull, push, search

镜像管理: images, rmi, tag, build, history, save, import;


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

发表新评论