##前言
本篇为学习使用docker过程中的一些记录,学习docker的原因是希望使用docker在服务器上自动化部署本地编写的服务端程序。本文为学习笔记型文章,方便快速查阅,关于docker的安装等内容请移步官网,想系统的学习docker可以看dockerpool出的书。
PS:下文的使用环境为macos
比较好的教程
##常用命令
- 获取镜像
docker pull
,如123456789$ docker pull ubuntu:12.04Pulling repository ubuntuab8e2728644c: Pulling dependent layers511136ea3c5a: Download complete5f0ffaa9455e: Download completea300658979be: Download complete904483ae0c30: Download completeffdaafd1ca50: Download completed047ae21eeaf: Download complete
从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像
列出本地镜像
docker images
,如1234$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEnginx latest a785ba7493fd 12 days ago 132.9 MBhello-world latest 91c95931e552 7 weeks ago 910 BMac环境下启动docker
boot2docker start
mac下需要开启一个虚拟机,和其他linux系统不同列出已有的容器
docker ps
,加参数’-a’列出所有镜像查看boot2docker状态
boot2docker status
启动一个容器并运行一个镜像 如:
docker run -d -P --name web nginx
-d :让容器在命令完成后在后台继续运行
-P :The -P flag publishes exposed ports from the container to your local host; this lets you access them from your Mac.查看容器端口
docker port web
,如:123$ docker port web443/tcp -> 0.0.0.0:3277080/tcp -> 0.0.0.0:32771
容器端口80映射到host端口32771
查看VM的ip地址
boot2docker ip
在网页中访问应用的地址为
$VM ip地址 /host port
,如:
http://192.168.59.103:32771停止容器
docker stop
,如:1docker stop web
stop container name / container id
- 删除容器
docker rm
,如:1docker rm web
rm container name / container id
从dockerfile中构建镜像
docker build
如:12345# -t 镜像的名称# --rm 构建成功后,删除临时镜像(每执行一行 Dockerfile 中的命令,就会创建一个临时镜像)# “.” 是 Dockerfile 所在的路径(当前目录), 也可以替换为一个具体的 Dockerfile 的路径。docker build -t="ouruser/sinatra:v2" .或 docker build --rm -t ouruser/sinatra:v2 .推送到dockerhub
docker push
如:1docker push user/sinatra
注意创建和推送时把user替换成自己的用户名
- 进入容器控制台
docker attach
如:1docker attach name
按两次回车进入,按ctrl+p+q退出(按住ctrl,先按p再按q)
查看容器信息
docker inspect
如:1docker inspect name将本地文件挂载到container中,
-v
1docker run -v /data:/mnt -i -t rdmclin2/node /bin/bash
例如将data文件夹挂载到container中的mnt文件夹中,可以在mnt文件夹中查看,这个文件是共享的,所以两边的操作都会互相看到。
将mnt的文件拷贝到container中即可。
启动容器的终端
1docker run -t -i ouruser/sinatra:v2 /bin/bash提交修改过的container创建为image,
docker commit
1docker commit -m "Added app file and do npm insall" -a "xxxx" 6f878669e0d7 rdmclin2/node
-m
为信息,-a
为用户信息。后面的id胃container的id
- 指定端口运行image
-p
,如:1docker run -p 49160:8080 -d <your username>/centos-node-hello
在docker run 后面追加-d=true或者-d,则containter将会运行在后台模式(Detached mode)
重启一个停止的容器
docker restart
,如:1sudo docker restart containerName如何编写Dockerfile ?
$ 看这个
停止并删除所有container
12docker stop $(docker ps -a -q)docker rm $(docker ps -a -q)批量删除所有
的镜像 1docker rmi $(docker images -q --filter "dangling=true")