Skip to content

容器操作 ​

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:容器内路径 目的主机路径

注意有两种情况

  1. 主机上文件拷贝到容器:docker cp 主机文件路径 容器ID:容器内路径
  2. 容器内文件拷贝到主机:docker cp 容器ID:容器内路径 目的主机路径
bash
#将主机上bin文件拷贝到容器
ls
bin  pkg
docker cp /root/go/bin 918822e6486b:/tmp/test 

# 容器
ls
1.txt  bin

5 docker exec ​

进入容器命令终端 :docker exec -it 容器ID bashShell

bash
# docker exec -it 327dcdc96475 sh
/ # 
/ # cd /tmp/test/
/tmp/test # ls
1.txt  bin

6 docker attach ​

进入容器启动命令终端 :docker attach 容器ID

bash
docker attach 327              
cd /tmp/test/
ls
1.txt  bin

attach 直接进入容器启动命令的终端,不会启动新的进程,用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)