Appearance
运行容器
docker create
根据镜像生成一个新的容器,仅是生成容器,并没有启动。
更常用的是docker run
启停
docker start
启动一个或者多个容器,docker start CONTAINER1 CONTAINER2...
docker stop
启动一个或者多个容器,docker stop CONTAINER1 CONTAINER2...
docker kill
杀死一个或者多个容器,docker kill CONTAINER1 CONTAINER2...
docker restart
重启一个或者多个容器,docker restart CONTAINER1 CONTAINER2...
docker pause
暂停一个或者多个容器中的所有进程,docker restart CONTAINER1 CONTAINER2...
docker unpause
恢复一个或者多个容器中的所有暂停进程,docker restart CONTAINER1 CONTAINER2...
docker run
创建、启动容器并执行相应的命令。
分配名字和伪TTY (–name, -it)
docker run --name test -it debiandocker run --name test -it debian连接到STDIN/STDOUT/STDERR (-a)
-a标志告诉docker run 绑定到容器的STDIN,STDOUT或STDERR。 这使得可以根据需要操纵输出和输入。
docker run -a stdout ubuntu echo testdocker run -a stdout ubuntu echo test完整容器能力 (–privileged)
docker run -t -i --privileged ubuntu bashdocker run -t -i --privileged ubuntu bash--privileged 标志为容器提供了所有功能,它还解除了设备cgroup控制器强制执行的所有限制。 换句话说,容器几乎可以完成主机可以执行的所有操作。 此标志存在以允许特殊用例,例如在Docker中运行Docker。
设置工作目录 (-w)
docker run -w /path/to/dir/ -i -t ubuntu pwddocker run -w /path/to/dir/ -i -t ubuntu pwd-w 允许命令在给定的目录中执行,这里是 /path/to/dir/。 如果路径不存在,则在容器内创建。
挂载卷 (-v, –read-only)
docker run -v D:\docker\data:/var/data -w /var/data -i -t ubuntu pwddocker run -v D:\docker\data:/var/data -w /var/data -i -t ubuntu pwd发布或者暴露端口 (-p, –expose)
docker run -p 127.0.0.1:80:8080/tcp ubuntu bashdocker run -p 127.0.0.1:80:8080/tcp ubuntu bash这将容器的端口8080绑定到主机的127.0.0.1上的TCP端口80。还可以指定udp和sctp端口。
docker run --expose 80 ubuntu bashdocker run --expose 80 ubuntu bash这会暴露容器的端口80,而不会将端口发布到主机系统接口。
设置环境变量(-e, –env, –env-file)
可以通过-e, --env, --env-file 设置容器的环境变量
docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bashdocker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash本地已经export的环境变量,可以不用=号和值:
export VAR1=value1
export VAR2=value2
$ docker run --env VAR1 --env VAR2 ubuntu env | grep VAR
VAR1=value1
VAR2=value2export VAR1=value1
export VAR2=value2
$ docker run --env VAR1 --env VAR2 ubuntu env | grep VAR
VAR1=value1
VAR2=value2在容器上设置元数据(-l, –label, –label-file)
可以通过-l, --label, --label-file 设置容器的label:
docker run -l my-label --label com.example.foo=bar ubuntu bashdocker run -l my-label --label com.example.foo=bar ubuntu bash将容器连接到网络(–network)
docker run -itd --network=my-net busybox
docker run -itd --network=my-net --ip=10.10.9.75 busyboxdocker run -itd --network=my-net busybox
docker run -itd --network=my-net --ip=10.10.9.75 busybox从容器挂载卷(–volumes-from)
docker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwddocker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwddocker ps
列出容器,同docker container ls 默认列出运行的容器,未运行的不展示,如果需要全部列出,可以使用参数-all或者-a
docker exec
docker exec 命令在正在运行的容器中运行新命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]docker exec [OPTIONS] CONTAINER COMMAND [ARG...]docker top CONTAINER
显示容器的运行进程
docker attach [OPTIONS] CONTAINER
docker attach [OPTIONS] CONTAINERdocker attach [OPTIONS] CONTAINER将本地标准 input,output 和 error 流附加到正在运行的容器。
使用 docker attach 将终端的标准 input,output 和 error (或三者的任意组合)通过容器的ID或名称附加到正在运行的容器中。这允许您查看其正在进行的输出或以交互方式控制它,就像命令直接在您的终端中运行一样。
docker logs
注意:此命令仅适用于使用 json-file 或 journald 日志记录驱动程序启动的容器。
docker logs命令批量检索执行时存在的日志。 docker logs --follow 命令将持续从容器的 STDOUT 和 STDERR 流式传输新输出。
docker ports
列出容器的端口映射或特定映射
docker port CONTAINER [PRIVATE_PORT[/PROTO]]docker port CONTAINER [PRIVATE_PORT[/PROTO]]实例:
$ docker port test
$ docker port test 7890/tcp
$ docker port test 7890/udp
$ docker port test 7890$ docker port test
$ docker port test 7890/tcp
$ docker port test 7890/udp
$ docker port test 7890docker rm
删除一个或者多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]docker rm [OPTIONS] CONTAINER [CONTAINER...]制作镜像
详细可以参考:Dockerfile 指令详解
docker-compose
可以参考compose 文件的结构和版本