前端学习Docker(三) - 容器
容器 #
docker run
命令会从image
文件,生成一个正在运行的容器实例。docker container run
命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取- 输出提示以后,hello world 就会停止运行,容器自动终止。
- 有些容器不会自动终止
- image 文件生成的容器实例,本身也是一个文件,称为容器文件
- 容器生成,就会同时存在两个文件: image 文件和容器文件
- 关闭容器并不会删除容器文件,只是容器停止运行
命令 #
命令 | 含义 | 案例 |
---|---|---|
run | 从镜像运行一个容器 | docker run ubuntu /bin/echo ‘hello-world’ |
ls | 列出容器 | docker container ls |
inspect | 显示一个或多个容器详细信息 | docker inspect |
attach | 要 attach 上去的容器必须正在运行,可以同时连接上同一个 container 来共享屏幕 | docker attach [OPTIONS] CONTAINER |
stats | 显示容器资源使用统计 | docker container stats |
top | 显示一个容器运行的进程 | docker container top |
update | 更新一个或多个容器配置 | |
port | 列出指定的容器的端口映射 | docker run -d -p 8080:80 nginx docker container port containerID |
ps | 查看当前运行的容器 | docker ps -a -l |
kill [containerId] | 终止容器(发送 SIGKILL ) | docker kill [containerId] |
rm [containerId] | 删除容器 | docker rm [containerId] |
start [containerId] | 启动已经生成、已经停止运行的容器文件 | docker start [containerId] |
stop [containerId] | 终止容器运行 (发送 SIGTERM ) | docker stop [containerId] docker container stop $(docker container ps -aq) |
logs [containerId] | 查看 docker 容器的输出 | docker logs [containerId] |
exec [containerId] | 进入一个正在运行的 docker 容器执行命令 | docker container exec -it f6a53629488b /bin/bash |
cp [containerId] | 从正在运行的 Docker 容器里面,将文件拷贝到本机 | docker container cp f6a53629488b:/root/root.txt . |
commit [containerId] | 根据一个现有容器创建一个新的镜像 | docker commit -a “zhufeng” -m “mynginx” a404c6c174a2 mynginx:v1 |
- docker 容器的主线程(dockfile 中 CMD 执行的命令)结束,容器会退出
- 以使用交互式启动
docker run -i [CONTAINER_NAME or CONTAINER_ID]
- tty 选项
docker run -dit [CONTAINER_NAME or CONTAINER_ID]
- 守护态(Daemonized)形式运行
docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
- 以使用交互式启动
启动容器 #
docker run ubuntu /bin/echo "Hello world"
docker run ubuntu /bin/echo "Hello world"
- docker: Docker 的二进制执行文件。
- run:与前面的 docker 组合来运行一个容器。
- ubuntu 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo “Hello world”: 在启动的容器里执行的命令
Docker 以 ubuntu 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果
- Docker attach 必须是登陆到一个已经运行的容器里。需要注意的是如果从这个容器中 exit 退出的话,就会导致容器停止
| 参数 | 含义 | | :----------------- | :----------------- | -------------------------------------------------------------------------------------------------------- | | -i --interactive | 交互式 | | -t --tty | 分配一个伪终端 | | -d --detach | 运行容器到后台 | | -a --attach list | 附加到运行的容器 | | -e --env list | 设置环境变量 | docker run -d -p 1010:80 -e username=“zhufeng” nginx \ docker container exec -it 3695dc5b9c2d /bin/bash | | -p --publish list | 发布容器端口到主机 | | -P | --publish-all |
查看容器 #
docker ps
docker -a
docker -l
docker ps
docker -a
docker -l
- -a 显示所有的容器,包括已停止的
- -l 显示最新的那个容器
字段 | 含义 |
---|---|
CONTAINER ID | 容器 ID |
IMAGE | 使用的镜像 |
COMMAND | 使用的命令 |
CREATED | 创建时间 |
STATUS | 状态 |
PORTS | 端口号 |
NAMES | 自动分配的名称 |
运行交互式的容器 #
docker run -i -t ubuntu /bin/bash
exit
docker run -i -t ubuntu /bin/bash
exit
- -t=–interactive 在新容器内指定一个伪终端或终端。
- -i=–tty 允许你对容器内的标准输入 (STDIN) 进行交互。
我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。
后台运行容器 #
docker run --detach centos ping www.baidu.com
docker ps
docker logs --follow ad04d9acde94
docker stop ad04d9acde94
docker run --detach centos ping www.baidu.com
docker ps
docker logs --follow ad04d9acde94
docker stop ad04d9acde94
kill #
docker kill 5a5c3a760f61
docker kill 5a5c3a760f61
kill 是不管容器同不同意,直接执行
kill \-9
,强行终止;stop 的话,首先给容器发送一个TERM
信号,让容器做一些退出前必须的保护性、安全性操作,然后让容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行 kill -9,强行终止
删除容器 #
- docker rm 删除容器
- docker rmi 删除镜像
- docker rm $(docker ps -a -q)
docker rm 5a5c3a760f61
docker rm 5a5c3a760f61
启动容器 #
docker start [containerId]
docker start [containerId]
停止容器 #
docker stop [containerId]
docker stop [containerId]
进入一个容器 #
docker attach [containerID]
docker attach [containerID]
进入一个正在运行中的容器 #
docker container -exec -it [containerID] /bin/bash
docker container -exec -it [containerID] /bin/bash
拷贝文件 #
docker container cp [containerID]/readme.md .
docker container cp [containerID]/readme.md .
自动删除 #
docker run --rm ubuntu /bin/bash
docker run --rm ubuntu /bin/bash
stats #
- 显示容器资源使用统计
docker container stats
docker container stats
top #
- 显示一个容器运行的进程
docker container top
docker container top
update #
- 更新一个或多个容器配置
docker update -m 500m 6d1a25f95132
docker update -m 500m 6d1a25f95132
port #
- 列出指定的容器的端口映射
docker run -d -p 8080:80 nginx
docker container port containerID
docker run -d -p 8080:80 nginx
docker container port containerID
logs #
- 查看 docker 容器的输出
docker logs [containerId]
docker logs [containerId]
版权属于: vincent
转载时须注明出处及本声明