运行镜像并启动Bash shell: docker run -i -t ubuntu bash
在容器里安装vim:apt-get update && apt-get install vim
查看当前系统中容器的列表 [包括正在运行的和已经停止的]:docker ps [-a]
为容器指定一个名称:docker run --name bob_the_container -i -t ubuntu bash
强制删除容器:docker -f rm [容器id/容器name]
启动容器并进行会话:docker attach [容器id/容器name]
后台运行镜像:docker run --name daemon_dave -d ubuntu
监控容器的日志:docker logs -f [容器id/容器name]
监控容器的日志加时间戳:docker logs -ft [容器id/容器name]
监控容器的最新日志:docker logs --tail 0 -f [容器id/容器name]
查看容器内部运行的进程:docker top [容器id/容器name]
显示一个或多个容器的统计信息/状态:docker stats ...[容器id/容器name]
容器内部额外启动新进程:docker exec -t -i daemon_dave /bin/bash
停止容器:docker stop [容器id/容器name]
显示最后x个容器,不论这些容器正在运行还是已经停止:docker ps -n x
自动重启容器:docker run --restart=always --name daemon_dave -d ubuntu sh -c "while true; do echo hello world; sleep 1; done"
>--restart=on-failure:5 当容器退出代码为非0时,Docker会尝试自动重启该容器,最多重启5次。
获得更多的容器配置信息:docker inspect ...[容器id/容器name]
选定容器配置查看结果:docker inspect --format='{{ .State.Running }}' ...[容器id/容器name]
强制删除所有容器:docker rm -f `docker ps -a -q`
-------------------------拉取镜像
列出所有镜像:docker images
从Docker Hub拉取镜像:docker pull ubuntu:12.04
列出指定镜像:docker images ubuntu
在Docker Hub上查找镜像:docker search puppet
-------------------------构建镜像
刚创建的容器的ID:docker ps -l -q
提交镜像:docker commit -m"[提交信息]" -a"[作者]" 4aab3ce3cb76 [仓库]/[镜像名]:[Tag]
-------------------------用Dockerfile构建镜像
Dockerfile文件
```
# Version: 0.0.1
FROM ubuntu:14.04
MAINTAINER James Turnbull "[email protected]"
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' >/usr/share/nginx/html/index.html
EXPOSE 80
```
RUN:指定镜像被构建时要运行的命令
CMD ["/bin/bash", "-l"]:是指定容器被启动时要运行的命令,在Dockerfile中只能指定一条CMD指令,使用docker run命令可以覆盖CMD指令。
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]:docker run命令行中指定的任何参数都会被当做参数,再次传递给ENTRYPOINT指令中指定的命令。如果在启动容器时不指定任何参数,则在CMD指令中指定的-h参数会被传递
WORKDIR /opt/webapp/db:容器内部设置一个工作目录,WORKDIR可多次使用,后续的ENTRYPOINT和/或CMD指定的程序会在这个目录下执行。
ENV RVM_PATH /home/rvm/:ENV指令用来在镜像构建过程中设置环境变量。
USER nginx:USER指令用来指定该镜像会以什么样的用户去运行。
VOLUME ["/opt/project"]:这条指令将会为基于此镜像创建的任何容器创建一个名为/opt/project的挂载点。
LABEL location="New York" type="Data Center" role="Web Server":LABEL指令以label="value"的形式出现。可以通过docker inspect命令来查看Docker镜像中的标签信息。
.dockerignore文件
```
.git
node_modules
```
构建一个新镜像:docker build -t="[仓库]/[镜像名]:[Tag]" .
>`.`告诉Docker到本地目录中去找Dockerfile文件,可以指定一 个Git仓库的源地址来指定Dockerfile的位置
docker build -t="jamtur01/static_web:v1" [email protected]:jamtur01/docker-static_web
略过缓存功能:docker build --no-cache -t="jamtur01/static_web" .
探求镜像是如何构建过程:docker history 22d47c8cb6e5
启动镜像:docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"
启动镜像并将80端口绑定到宿主机的8080端口上:docker run -d- p 8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"
查看容器的端口映射:docker port [容器id/容器name]
对外公开80端口和在Dockerfile中通过EXPOSE指令公开的所有端口:docker run -d -P --name static_web jamtur01/static_web nginx -g "daemon off;"