docker 容器常用命令
有镜像才能创建容器
docker pull centos
docker pull ubuntu
新建+启动容器
docker run [OPTIONS] IMAGES [COMMAND][ARG]
OPTIONS说明(常用):
有一些是减号,有一些是两个减号
--name=“容器新名字” 为容器指定一个名称
-d: 后台运行容器并返回容器id,也即启动守护进程(后台运行)
-i: 以交互模式运行容器,通常与-t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i使用;
也即启动交互式容器(前台有为终端,等待交互);
-P:随机端口映射,大写P
-p:指定端口映射,小写p
启动交互式命令:docker run -it ubuntu /bin/bash
-i:交互操作
-t:终端
centos:centos镜像
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互shell,因此用的/bin/bash
退出终端,直接输入exit
查看当前所有正在运行的容器
docker ps[OPTIONS]
OPTIONS说明(常用):
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个才创建的容器
-q:静默模式,只显示容器编号
退出容器
两种退出方式:
1.exit:run进去容器,exit退出,容器停止
2.ctrl+p+q:run进去容器,ctrl+p+q退出容器不停止
启动已停止运行的容器
docker start 容器id或容器名
重启容器
docker restart 容器id或容器名
停止容器
docker stop 容器id或容器名
强制停止容器
docker kill 容器id或容器名
删除已停止的容器
docker rm 容器id
一次性删除多个:
1.docker rm -f $(docker ps -a -q) 不要用
2.docker ps -a -q|xargs docker rm
启动守护式容器(后台服务器)
docker run -d
运行:docker run -d contos
然后:docker ps -a 进行查看,发现容器已经退出
重点说明:docker容器后台运行,就必须有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出
解决方案:将运行的程序以前台进程的形式进行,常见就是命令模式,表示我还有交互操作,不中断
redis示例:
前台交互式启动:docker run -it redis:6.0.8
后台守护式启动: docker run -d redis:6.0.8
查看容器日志
docker logs 容器id
查看容器内运行的进程
docker ps 容器id
查看容器内部细节
docker inspect 容器id
进入正在运行的容器并以命令交互
docker exec -it 容器 ID /bin/bash
重新进入:docker attach 容器ID
上述两个区别:
1.attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
2.exec是在容器中打开新的终端,并且客户启动新的进程,用exit退出,不会导致容器停止
推荐使用docker exec ,因为退出容易,不会停止容器运行
redis实例,测试:
进入redis服务
docker exec -it 容器ID /bin/bash
docker exec -it 容器ID redis-cli
一般用-d后台启动的程序,再用exec进入对应的实例
从容器内拷贝文件到主机上
容器->主机
docker cp 容器ID:容器内路径 目的主机路径
公式:docker cp 容器ID:容器内路径 目的主机路径
导入和导出容器
export 导出容器的内容留作为一个tar归档文件[对应import命令]
import 从tar包的内容创建一个新文件系统再导入镜像[对应export]
例:
docker export 容器ID>文件名.tar
cat 文件名.tar|docker import - 镜像用户/镜像名:镜像版本号