转载自:http://www.itmuch.com/docker/05-docker-command-containers/
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数:
-d
容器运行于前台还是后台,默认为false,表示后台运行
-i
以交互模式运行容器,通常与 -t 同时使用
-t
为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name
为容器指定一个名称
-h, --hostname=""
指定容器的主机名
-e
指定环境变量,容器中可以使用该环境变量(-e key=”value”)
--env-file
指定环境变量文件,文件格式为每行一个环境变量
-a
登录容器(必须是以docker run -d启动的容器)
-v
挂载存储卷到容器的某个目录,-v 主机目录:容器目录
-p
指定容器暴露的端口, -p 主机端口:容器端口
--link
指定容器间的关联
-P
随机端口映射
--restart="no"
指定容器停止后的重启策略: no容器退出时不重启, on-failure容器故障退出(返回值非零)时重启, always容器退出时总是重启
常用启动容器指令:
docker run --name mydocker -it centos /bin/bash
注意进入容器后,不要使用CTRL+C退出,这样会导致整个容器退出。用CTRL+P+Q退出当前容器。
进入容器
- 使用
docker attach
命令进入容器。很多场景下,使用docker attach
命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。
docker exec -it 容器ID/容器name /bin/bash
列出容器
使用docker ps
命令即可列出运行中的容器。如需列出所有容器(包括已停止的容器),可使用-a参数。
参数:
--all, -a
列出所有容器,包括未运行的容器,默认false,只展示运行的容器
--filter, -f
根据条件过滤显示内容
--format
通过Go语言模板文件展示镜像
--last, -n
显示最近创建n个容器(包含所有状态)
--latest, -l
显示最近创建的容器(包含所有状态),默认false
--no-trunc
不截断输出,默认false
--quiet, -q
静默模式,只展示容器的编号,默认false
--size, -s
显示总文件大小,默认false
停止容器
使用docker stop
命令,即可停止容器。可指定容器ID或则容器名称。
也使用docker kill
命令强制停止一个或更多运行着的容器。
启动已停止的容器
使用docker run
命令,即可新建并启动一个容器。对于已停止的容器,可使用docker start
命令来启动。docker start -i <container>
:启动一个container并进入交互模式(相当于先start,再attach)
重启容器
可使用docker restart
命令来重启容器。该命令实际上是先执行了docker stop
命令,然后执行了docker start
命令。
持久化容器为镜像
通过容器生成新的镜像,运行中的镜像称为容器。
可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。
不过使用docker commit <container-id> <image-name>[:tag]
命令可以把一个正在运行的容器变成一个新的镜像。
删除容器
使用docker rm
命令即可删除指定容器。该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f
参数。
删除所有的容器:docker rm -f $(docker ps -a -q)
或docker ps -a -q | xargs docker rm
导出容器
docker export
将容器导出成一个压缩包文件。
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda
导入容器
使用docker import
命令即可从归档文件导入内容并创建镜像。
docker import nginx2.tar nginx
补充:以下是docker的工作流程图: