docker run
-d, --detach=
false
# 后台运行容器,并返回容器ID;
-i, --interactive=
false
# 以交互模式运行容器,通常与 -t 同时使用;
-t, --
tty
=
false
# 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-u, --user=
""
# 指定容器的用户
-a, --attach=[]
# 登录容器(必须是以docker run -d启动的容器)
-w, --workdir=
""
# 指定容器的工作目录
-c, --cpu-shares=0
# 设置容器CPU权重,在CPU共享场景使用
-e, --
env
=[]
# 指定环境变量,容器中可以使用该环境变量
-m, --memory=
""
# 指定容器的内存上限
-P, --publish-all=
false
# 指定容器暴露的端口
-p, --publish=[]
# 指定容器暴露的端口
-h, --
hostname
=
""
# 指定容器的主机名
-
v
, --volume=[]
# 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[]
# 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[]
# 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[]
# 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile=
""
# 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset=
""
# 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[]
# 添加主机设备给容器,相当于设备直通
--dns=[]
# 指定容器的dns服务器
--dns-search=[]
# 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint=
""
# 覆盖image的入口点
--
env
-
file
=[]
# 指定环境变量文件,文件格式为每行一个环境变量
--expose=[]
# 指定容器暴露的端口,即修改镜像的暴露端口
--link=[]
# 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[]
# 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name=
""
# 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net=
"bridge"
# 容器网络设置:
bridge
# 使用docker daemon指定的网桥
host
# 容器使用主机的网络
container:NAME_or_ID >
# 使用其他容器的网路,共享IP和PORT等网络资源
none
# 容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=
false
# 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart=
"no"
# 指定容器停止后的重启策略:
no
# 容器退出时不重启
on-failure
# 容器故障退出(返回值非零)时重启
always
# 容器退出时总是重启
--
rm
=
false
# 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=
true
# 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
示例
使用docker镜像tomcat:latest以后台模式启动一个容器,并将容器命名为mytomcat
docker run -tid --name mytomcat tomcat:latest
使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口
docker run -tid --name mytomcat -p 8080:8080 tomcat:latest
使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到宿主机的8080端口,主机的目录
/home
映射到容器的
/home
容器暴露80端口,并指定宿主机80端口与其通信(之前是宿主机端口,之后是容器需暴露的端口)
docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest
指定容器内目录与宿主机目录共享(之前是宿主机文件夹,之后是容器需共享的文件夹),
docker run -d --name=ubuntu_server -
v
/etc/www
:
/var/www
ubuntu:latest
指定bridge网桥
docker run -it --net=my_bridge nginx
容器操作
docker create
# 创建一个容器但是不启动它
docker run
# 创建并启动一个容器
docker stop
# 停止容器运行,发送信号 SIGTERM
docker
kill
# 强制终止一个容器
docker start
# 启动一个停止状态的容器
docker restart
# 重启一个容器
docker rmi
# 删除一个容器
docker
rm
$(docker
ps
-a -q)
docker
kill
# 发送信号给容器,默认 SIGKILL
docker attach
# 连接 ( 进入 ) 到一个正在运行的容器
docker wait
# 阻塞到一个容器,直到容器停止运行
docker --restart=always
# 容器关闭之后自动启动
获取容器信息
docker
ps
# 显示状态为运行( Up )的容器
docker
ps
-a
# 显示所有容器 , 包括运行中( Up )的和退出的 (Exited)
docker inspect
# 深入容器内部获取容器所有信息
docker logs -f
# 查看容器的日志 (stdout/stderr) (-f 用于实时输出 )
docker events
# 得到 docker 服务器的实时的事件
docker port
# 显示容器的端口映射
docker
top
# 显示容器的进程信息
docker
diff
# 显示容器文件系统的前后变化
导出容器
docker
cp
# 从容器里向外拷贝文件或目录
docker
export
containe_id >
export
.
tar
# 将容器整个文件系统导出为一个 tar 包,不带 layers 、 tag 等信息
docker
export
container_id >
export
.
tar
# 导出容器保存到本地并命名为 export.tar
cat
export
.
tar
| docker
import
- imported:container
# 导入本地 tar 包作为一个镜像
docker
import
url res:tag
# 导入网络的容器作为一个镜像
镜像操作
docker images
# 显示本地所有的镜像列表
docker
import
# 从一个 tar 包创建一个镜像,往往和 export 结合使用
docker build
# 使用 Dockerfile 创建镜像(推荐)
docker commit
# 从容器创建镜像
docker rmi
# 删除一个镜像
docker load
# 从一个 tar 包创建一个镜像,和 save 配合使用
docker save
# 将一个镜像保存为一个 tar 包,带 layers 和 tag 信息
docker
history
# 显示生成一个镜像的历史命令
docker tag
# 为镜像起一个别名
镜像仓库 (registry) 操作
docker login
# 登录到一个 registry
docker search
# 从 registry 仓库搜索镜像
docker pull
# 从仓库下载镜像到本地
docker push
# 将一个镜像 push 到 registry 仓库中
# 获取 Container IP 地址( Container 状态必须是 Up )
docker inspect
id
|
grep
IPAddress |
cut
-d
'"'
-f 4
# 获取端口映射
docker inspect -f
'{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}'
id
# 获取环境变量
docker
exec
container_id
env
# 杀掉所有正在运行的容器
docker
kill
$(docker
ps
-q)
# 删除老的 ( 一周前创建 ) 容器
docker
ps
-a |
grep
'weeks ago'
|
awk
'{print $1}'
|
xargs
docker
rm
# 删除已经停止的容器
docker
rm
`docker
ps
-a -q`
# 删除所有镜像,小心
docker rmi $(docker images -q)
Dockerfile
FROM , 从一个基础镜像构建新的镜像
FROM ubuntu
MAINTAINER , 维护者信息
MAINTAINER William <wlj@nicescale.com>
ENV , 设置环境变量
ENV TEST 1
RUN , 非交互式运行 shell 命令
RUN apt-get -y update
RUN apt-get -y
install
nginx
ADD , 将外部文件拷贝到镜像里 ,src 可以为 url
ADD http:
//nicescale
.com/
/data/nicescale
.tgz
WORKDIR
/path/to/workdir
, 设置工作目录
WORKDIR
/var/www
USER , 设置用户 ID
USER nginx
VULUME <
#dir>, 设置 volume
VOLUME [‘
/data
’]
EXPOSE , 暴露哪些端口
EXPOSE 80 443
ENTRYPOINT [‘executable’, ‘param1’,’param2’] 执行命令
ENTRYPOINT [
"/usr/sbin/nginx"
]
CMD [“param1”,”param2”]
CMD [
"start"
]
还木有评论哦,快来抢沙发吧~