Appearance
容器操作
1 docker run
由于这个命令比较复杂,下面将以具体的步骤进行演示,首先我们要知道docker run运行的流程
用户执行docker run来启动容器的时候,docker服务端会先检查本地有没有run的镜像,如果有,那么docker直接使用这个镜像
格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):单词用两个-- 简写用一个-
- --name="容器新名字" 为容器指定一个名称;
- -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
- -P: 随机端口映射,大写P,一般不使用
- -p: 指定端口映射,小写p ,常用
- -v:挂载容器卷,做数据持久化,默认是读写权限
rw,如果只读只需要在结尾加上:ro即可
-v /宿主机绝对路径目录:/容器内目录 [:ro]
--volumes-from 父类:继承其他容器挂载容器卷,父容器即便被删除,子容器的挂载不会有变化
--privileged=true:如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。
COMMAND:
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 要退出终端,直接输入 exit,保留运行容器需要使用ctrl+p+q
2 docker inspect
docker inspect 容器ID 查看容器详细信息,查看容器内部细节
3 docker logs
查看容器日志:docker logs 容器ID
4 docker cp
容器与主机文件拷贝 :docker cp 容器ID:容器内路径 目的主机路径
注意有两种情况
- 主机上文件拷贝到容器:docker cp 主机文件路径 容器ID:容器内路径
- 容器内文件拷贝到主机:docker cp 容器ID:容器内路径 目的主机路径
bash
#将主机上bin文件拷贝到容器
ls
bin pkg
docker cp /root/go/bin 918822e6486b:/tmp/test
# 容器
ls
1.txt bin5 docker exec
进入容器命令终端 :docker exec -it 容器ID bashShell
bash
# docker exec -it 327dcdc96475 sh
/ #
/ # cd /tmp/test/
/tmp/test # ls
1.txt bin6 docker attach
进入容器启动命令终端 :docker attach 容器ID
bash
docker attach 327
cd /tmp/test/
ls
1.txt binattach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且启动新的进程,用exit退出,不会导致容器的停止。
两者使用快捷键:ctrl+p+q 退出都不会停止容器
7 docker top
查看容器内运行的进程 : docker top 容器ID
8 dockre rm
语法: docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
| 命令 | 作用 |
|---|---|
| -f | 通过 SIGKILL 信号强制删除一个运行中的容器。 |
| -l | 移除容器间的网络连接,而非容器本身。 |
| -v | 删除与容器关联的卷 |
删除所有容器:docker rm -f $(docker ps -a -q)
删除所有未运行的容器: docker container prune / docker rm $(docker ps -a -q)
删除未启动成功:docker rm $(docker ps -qf status=created)
删除退出状态: docker rm $(docker ps -qf status=exited)
9 docker kill
停止所有运行的容器 : docker kill $(docker ps -a -q)