1.什么是Container
container大致是这么一个东西:
- 运行image后对应的实例
- container由以下几个部分组成
- 一个Docker镜像
- 根据Docker镜像以及内核形成的linux可执行环境
通过Image创建的
在Image layer之上建立一个container layer(可读写)
类比面向对象,类和实例,容器就是实例,Image就是类
Image负责application的存储和分发,Container负责运行app
2.docker container常用命令:
container命令 | 作用 |
---|---|
attach | 将本地标准输入,输出和错误流附加到正在运行的容器 |
commit | 根据容器的更改创建新图像 |
cp | 在容器和本地文件系统之间复制文件/文件夹 |
create | 创建但不运行 |
diff | 检查容器文件系统上文件或目录的更改 |
exec | 在正在运行的容器中运行命令 |
export | 将容器的文件系统导出为tar存档 |
inspect | 显示容器的详细信息 |
kill | 杀死一个或多个正在运行的容器 |
logs | 获取容器的日志 |
ls | 显示所有容器 |
pause/unpause | 暂停/停止暂停容器 |
port | 列出端口映射或容器的特定映射 |
prune | 删除所有已经停止的容器 |
rename | 给容器重新命名 |
restart | 重新启动容器 |
rm | 删除容器 |
run | 运行容器 |
start/stop | 启动或停止容器 |
stats | 显示容器资源使用情况统计信息的实时流 |
top | 查看容器运行进程 |
update | 升级容器配置 |
wait | 阻止,直到一个或多个容器停止,然后打印退出代码 |
显示所有容器
- docker container ls 命令可以查看当前正在运行的容器
[root@localhost hello-world]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-
docker container ls -a 可以列举出所有的容器,包括正在运行的和没有运行的容器
image.png
运行docker容器
- 运行docker容器可以使用
docekr run <IMAGE STRING>
,但用这个命令运行的容器会在运行完后,容器就自动退出了,不能跟用户有交互的效果。 - 想要有交互效果可以使用
docker run -it <IMAGE STRING>
命令。
[root@localhost hello-world]# docker run -it 5e35e350aded
[root@f96ab002a980 /]#
5e35e350aded 是docker 中centos的容器id
我们可以看到,这样就相当于进入了一个操作系统里面。另起一个终端,输入docker container ls,可以看到当前正在运行的容器:
[root@localhost ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f96ab002a980 5e35e350aded "/bin/bash" 2 minutes ago Up 2 minutes jovial_lewin
-
后台运行container容器,使用 docker run -d <IMAGE STRING>
-
退出当前正在运行的容器,键入exit命令。
运行docker容器 简写
docker ps -a 命令等价于docker container ls -a
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e932971475d2 5e35e350aded "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago infallible_aryabhata
2097b496ffa7 5e35e350aded "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago eager_chaplygin
f96ab002a980 5e35e350aded "/bin/bash" 6 minutes ago Exited (127) 2 minutes ago jovial_lewin
ec7f5537703e 5e35e350aded "/bin/bash" 39 minutes ago Exited (0) 39 minutes ago vibrant_franklin
ca3d19e484fc kpioneer/hello-world "/hello" 4 hours ago Exited (13) 4 hours ago lucid_mendeleev
列举出所有container的id
-q:列出所有的id
docker container ls -aq
[root@localhost ~]# docker container ls -aq
2097b496ffa7
f96ab002a980
ec7f5537703e
ca3d19e484fc
上面这条命令的效果跟命令docker container ls -a | awk {'print$1'}
是一样的:
[root@localhost ~]# docker container ls -a | awk {'print$1'}
CONTAINER
2097b496ffa7
f96ab002a980
ec7f5537703e
ca3d19e484fc
列举出所有已退出container
[root@localhost ~]# docker container ls -f "status=exited"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2097b496ffa7 5e35e350aded "/bin/bash" 12 minutes ago Exited (0) 12 minutes ago eager_chaplygin
f96ab002a980 5e35e350aded "/bin/bash" 16 minutes ago Exited (127) 12 minutes ago jovial_lewin
ec7f5537703e 5e35e350aded "/bin/bash" 49 minutes ago Exited (0) 49 minutes ago vibrant_franklin
ca3d19e484fc kpioneer/hello-world "/hello" 4 hours ago Exited (13) 4 hours ago lucid_mendeleev
列举出所有已退出container的id
[root@localhost ~]# docker container ls -f "status=exited" -q
2097b496ffa7
f96ab002a980
ec7f5537703e
ca3d19e484fc
docker 删除某个Container的命令
docker rm <CONTAINER ID>
[root@localhost ~]# docker rm e932971475d2
e932971475d2
删除掉所有的container
docker rm $(docker container ls -aq)
[root@localhost ~]# docker rm $(docker container ls -aq)
2097b496ffa7
f96ab002a980
ec7f5537703e
ca3d19e484fc
删除掉所有已退出的container
docker rm $(docker container ls -f "status=exited" -q)
[root@localhost ~]# docker rm $(docker container ls -f "status=exited" -q)
6b1d4d788291
be8fc00a50d2
f720c86b7c09
af40e1b22328
网友评论