一、常用命令
1、查询容器
sudo docker ps //通过该命令来查询容器信息
sudo docker ps -a //查看本机上所有存在的容器
sudo docker ps -qa //查询所有容器的ID
sudo docker ps | grep xxx //筛选查看正在运行容器中与xxx相关的信息
| :管道符,前一个命令的结果作为后一个命令的输入
2、创建与删除
(1)、创建
sudo docker create -it ubuntu:18.04 //新建容器
sudo docker run ubuntu /bin/echo 'Hello world' //新建并启动容器
sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" //守护态运行(-d)
sudo docker run -it ubuntu /bin/bash //启动一个bash终端,允许用户进行交互 (pwd、ps、ls、exit)
//特权模式下运行容器
sudo docker run -it --name ubuntu0702 -v /home:/home -v /sys/:/sys/ --network host --privileged --ipc=host enflame:ubuntu_base
(2)、删除
sudo docker rm ce554267d7a4 //只能删除终止/退出状态的容器
3、容器是暂停、重启、启动
(1)、暂停
sudo docker pause test //暂停容器(不知如何正确使用,似乎有问题)(unpause来恢复暂停状态)
(2)、终止1
docker stop //用来终止一个运行中的容器,(先发送SIGTERM信号,等待一段超时后(10s),发送SIGKILL信号,)
docker container prune //此时执行该命令,自动清除掉所有处于停止状态的容器
(3)、终止2
docker kill //直接发送SIGKILL信号来强行终止容器
(4)、启动与重启
sudo docker start ID //处于终止状态的容器,通过该命令重新启动:
sudo docker restart ID //命令会将一个运行态的容器先终止,然后再重新启动:
4、进入容器
sudo docker attach nostalgic_hypatia //进入后台运行的容器进行操作(多窗口同步attach到同一个容器时,所有窗口会同步显示)
sudo docker exec -it 243c32535da7 /bin/bash //进入容器与容器交互
sudo docker exec -it ubuntu0701 /bin/bash
挂起容器
ctrl + p + q
5、复制文件
sudo docker cp data test:/tmp/ //将本地的路径data复制到test容器的/tmp路径下
sudo docker cp x86_64-linux-rel_3.4.20250620.tar.gz ubuntu0701:/test/
6、查看容器信息
sudo docker container inspect great_pasteur //查看容器详情
sudo docker top test //查看容器内进程
sudo docker stats //显示CPU、内存、存储、网络等使用情况的统计信息
二、其他命令
1、查看输出
sudo docker logs dff22e94d5ef -details //查看容器的输出
2、查看端口映射
sudo docker container port test //查看test容器的端口映射情况
3、查看变更
sudo docker container diff test //查看容器内系统文件的变更
4、导出容器到文件
sudo docker export -o test_for_run.tar ce5
sudo docker export e81 >test_for_stop.tar //分别导出ce554267d7a4容器和e812617b41f6容器到文件test_for_run.tar文件和test_for_stop.tar文件
5、导入容器(文件导入成镜像)
sudo docker import test_for_run.tar - test/ubuntu:v1.0 //将test_for_run.tar文件导入到系统中
docker load //导入镜像存储文件到本地镜像库
docker import //导入容器快照到本地镜像库
容器是镜像的一个运行实例
镜像是静态的只读文件,
容器带有运行时需要的可写文件层,
同时,容器中的应用进程处于运行状态
虚拟机是模拟运行的一整套操作系统
(包括内核、应用运行态环境和其他系统环境)和跑在上面的应用
Docker容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境
// 一、创建容器
create、start、run、wait和logs子命令
1、新建容器
sudo docker create -it ubuntu:latest
sudo docker ps -a //查看本机上所有存在的容器
create和run支持的选项十分复杂
与容器运行模式相关、与容器环境配置相关、与容器资源限制和安全保护相关
2、启动容器
sudo docker start af(没运行成功,回头再看吧,先放这里)
sudo docker ps //可以查看到运行的容器
3、新建并启动容器
sudo docker run ubuntu /bin/echo ‘Hello world’
本地直接运行命令
/bin/echo ‘hello world’
(下面这部分不必纠结,以后再学习)
❑ 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
❑ 利用镜像创建一个容器,并启动该容器;
❑ 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
❑ 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
❑ 从网桥的地址池配置一个IP地址给容器;
❑ 执行用户指定的应用程序;
❑ 执行完毕后容器被自动终止。
启动一个bash终端,允许用户进行交互
sudo docker run -it ubuntu /bin/bash
root@af8bae53bdd3:/#
pwd
ls
ps //查看进程
exit //退出
man docker -run //查看更多命令
对于所创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出。
这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了。
4、守护态运行
需要让docker以守护态运行(添加-d来实现)
$ sudo docker run -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 1; done”
ce554267d7a4c34eefc92c5517051dc37b918b588736d0823e4c846596b04d83
sudo docker ps //通过该命令来查询容器信息
5、查看容器输出
sudo docker logs dff22e94d5ef -details
// 二、停止容器
pause/unpause、stop和prune命令
1、暂停容器
$ sudo docker run --name test --rm -it ubuntu bash
$ sudo docker pause test
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
893c811cf845 ubuntu "bash" 2 seconds ago Up 12 seconds (Paused) test
unpause //用来恢复暂停状态
2、终止容器
(1)、
docker stop //用来终止一个运行中的容器,(先发送SIGTERM信号,等待一段超时后(10s),发送SIGKILL信号,)
docker container prune //此时执行该命令,自动清除掉所有处于停止状态的容器
(2)、
docker kill //直接发送SIGKILL信号来强行终止容器
docker ps -qa //查询所有容器的ID
(3)、
sudo docker start ID //处于终止状态的容器,通过该命令重新启动:
(4)、
sudo docker restart ID //命令会将一个运行态的容器先终止,然后再重新启动:
// 三、进入容器
1、attach命令
使用-d参数,容器启动后进入后台,用户无法看到容器中的信息,也无法操作。
如需要进入容器操作,推荐通过attach或exec命令。
sudo docker run -itd ubuntu //运行容器
sudo docker ps //查看运行的容器
sudo docker attach nostalgic_hypatia //进入容器进行操作
(注意)
attach命令的不便之处:多窗口同步attach到同一个容器时,所有窗口会同步显示。(某窗口阻塞,其他窗口无法操作)
几个重要的选项
❑ --detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是CTRL-p CTRL-q;
❑ --no-stdin=true|false:是否关闭标准输入,默认是保持打开;
❑ --sig-proxy=true|false:是否代理收到的系统信号给应用进程,默认为true。
2、exec命令
sudo docker exec -it 243c32535da7 /bin/bash
可以看到会打开一个新的bash终端,在不影响容器内其他应用的前提下,用户可以与容器进行交互。
进一步地,可以在容器中查看容器中的用户和进程信息
root@243c32535da7:/# w
root@243c32535da7:/# ps -ef
比较重要的参数(后面再详细看,先放这里)
❑ -d, --detach:在容器中后台执行命令;
❑ --detach-keys=“”:指定将容器切回后台的按键;
❑ -e, --env=[]:指定环境变量列表;
❑ -i, --interactive=true|false:打开标准输入接受用户输入命令,默认值为false;
❑ --privileged=true|false:是否给执行命令以高权限,默认值为false;
❑ -t, --tty=true|false:分配伪终端,默认值为false;
❑ -u, --user=“”:执行命令的用户名或ID。
通过指定-it参数来保持标准输入打开,并且分配一个伪终端。通过exec命令对容器执行操作是最为推荐的方式
四、删除容器
删除处于终止或退出状态的容器
不能删除运行中的容器,加上-f,Docker会先发送SIGKILL信号给容器,终止其中的应用,之后强行删除。
主要支持的选项
❑ -f, --force=false:是否强行终止并删除一个运行中的容器;
❑ -l, --link=false:删除容器的连接,但保留容器;
❑ -v, --volumes=false:删除容器挂载的数据卷。
sudo docker ps -a //查看处于终止状态的容器
sudo docker rm ce554267d7a4 //删除
// 五、导入和导出容器
将容器从一个系统迁移到另一个容器
1、导出容器
导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。
通过-o(或者重定向)选项来指定导出的tar文件名
sudo docker ps -a //查看所有的容器
sudo docker export -o test_for_run.tar ce5
sudo docker export e81 >test_for_stop.tar //分别导出ce554267d7a4容器和e812617b41f6容器到文件test_for_run.tar文件和test_for_stop.tar文件
ls //查看一下文件
之后,可将导出的tar文件传输到其他机器上,
然后再通过导入命令导入到系统中,实现容器的迁移
2、导入容器
导出的文件可以通过import命令导入变成镜像。
通过-c选项,在导入的同时执行对容器进行修改的Dockerfile指令。
sudo docker import test_for_run.tar - test/ubuntu:v1.0 //将test_for_run.tar文件导入到系统中
sudo docker images
docker load //导入镜像存储文件到本地镜像库
docker import //导入容器快照到本地镜像库
二者区别
容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态)
而镜像存储文件将保存完整记录,体积更大
此外,从容器快照文件导入时可以重新指定标签等元数据信息
// 六、查看容器
inspect、top、stats子命令。
1、查看容器详情
sudo docker container inspect ubuntu
2、查看容器内进程
sudo docker top test
3、查看统计信息
sudo docker stats
显示CPU、内存、存储、网络等使用情况的统计信息
支持的选项
❑ -a, -all:输出所有容器统计信息,默认仅在运行中;
❑ -format string:格式化输出信息;
❑ -no-stream:不持续输出,默认会自动更新持续实时结果;
❑ -no-trunc:不截断输出信息。
// 七、其他容器命令
cp、diff、port和update
1、复制文件
sudo docker cp data test:/tmp/ //将本地的路径data复制到test容器的/tmp路径下
2、查看变更
sudo docker container diff test //查看容器内系统文件的变更
3、查看端口映射
sudo docker container port test //查看test容器的端口映射情况
4054

被折叠的 条评论
为什么被折叠?



