docker常见命令
【容器】
1.创建容器
docker create -it --name f_container centos:latest
create:关键字
centos:latest:即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像;。不存在就从公有仓库下载。
-it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端。
--name:指定生成的容器的名字,允许空,如果不指定会自动生成。
2.查看所有容器
docker ps -a
-a 指所有,不要则为当前。
3.开启容器
docker start ce4ce0f150e4
最后的是前面语句查询出来的容器Id号。或者加上查询的Name
4.进入容器
docker exec -it ce4ce0f150e4 bash
这里的docker id也可以换成name
5.一键 创建/开启/进入 容器 (重点) =》(create+start+exec)
docker run -it centos:latest /bin/bash
如果指定了端口号
docker run -it -p 7001:8001 --name f_container centos:latest /bin/bash
如果想让docker在后台以守护态的形式存在
docker run -it -d --name f_container centos:latest
加了-d表示进入守护态。此时没有 /bin/bash 也就是没进容器,所以可以通过
docker exec -it f_container bash
进入
6.退出容器
exit
7.停止容器
docker stop [docker_id]
8.复制文件
$ docker cp 宿主机绝对路径 容器id:路径
【安装常用软件】
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop unzip telnet
【docker依赖】
需要CentOS7,且不低于3.10
uname -r
查看当前CentOS版本
【更新缓存】 linux系统中
yum clean all && yum makecache
【列出可用的可安装的docker版本】
yum list docker-ce showduplicates | sort -r
【指定docker 源】
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这里的代码意思是 将阿里云服务器的docker库文件 下载到文件夹里的docker-ce.repo文件
然后需要刷新缓存,就可以利用上面的与来查看可用的docker-ce版本了
【配置仓库源】
一般仓库源都是国外的,下载速度比较慢,这边需要配置成阿里云的仓库
首选创建文件
mkdir -p /etc/docker
创建一个空文件(如果没有则创建,有则无事发生)
touch /etc/docker/daemon.json
编辑
vim /etc/docker/daemon.json
填入以下命令
{ "registry-mirrors":[ "https://8xpk5wnt.mirror.aliyuncs.com" ] }
修改之后,重启daemon
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
【查看docker进程】
ps -ef|grep docker
解析:
比如出现了以下语句
root 11462 1 0 17:33 ? 00:00:00 /usr/bin/dockerd
分别表示:
UID PID PPID C STIME TTY TIME CMD
ps:将某个进程显示出来 -A 显示所有程序。 -e 此参数的效果和指定"A"参数相同。 -f 显示UID,PPIP,C与STIME栏位。 grep命令是查找 中间的|是管道命令 是指ps命令与grep同时执行 这条命令的意思是显示有关Apachejetspeed有关的进程 UID PID PPID C STIME TTY TIME CMD 各相关信息的意义: UID 程序被该 UID 所拥有 PID 就是这个程序的 ID PPID 则是其上级父程序的ID C CPU 使用的资源百分比 STIME 系统启动时间 TTY 登入者的终端机位置 TIME 使用掉的 CPU 时间。 CMD 所下达的指令为何
【安装nginx】
docker pull nginx
搜索仓库中的nginx,会显示stars和官方official标志
docker search nginx
【显示已拉取的所有镜像】
docker image ls
或者是
docker images
【删除镜像】
docker rmi [img_id]
注意:这里是rmi,删除容器是rm。
【docker运行nginx】
docker run -d -p 80:80 nginx
-d表示以守护态后台运行,-p表示端口映射 宿主机的80端口映射容器的80端口。
此时可以直接 用 [宿主机IP]:80 来访问容器内的80端口,也就是nginx的起始页面。
【查看宿主机IP】
ip a
找到ens33对应的inet地址
【注意】
docker ps -a 是查看所有容器,包括正在运行和已经退出的容器。
而 docker ps 只显示正在运行的容器
【docker的生命周期,整个流程以及命令】
【清屏】
屏幕上满是命令,想重新展开空白屏幕。输入
clear
【查看docker的信息】
docker info
可以看到
有一个存放路径:
直接
ls /var/lib/docker
就可以看到里面的所有文件夹,然后继续使用 ls指令
最终达到镜像库里面
ls /var/lib/docker/image/overlay2/imagedb/content/sha256/ -l
里面的Id号和 docker images里面的Id号对应
【临时开启一个容器,退出后删除】
docker run -it --rm centos:7.8.2003 bash
也就是在进入命令之前加入了 --rm 命令
然后使用
exit
退出后,docker ps -a找不到下载的centos容器。
【docker 只显示镜像Id】
docker images -q
或者
docker images --format "{{.ID}}--{{.Repository}}"
使用 --format 参数
【批量删除镜像、容器】
docker rmi `docker images -aq`
容器
docker rm `docker ps -aq`
【保存镜像到某一个文件】
docker image save nginx > /opt/nginx.tgz
这里使用了 image save指令,将nginx导入到opt文件夹下的nginx.tgz压缩文件。
大于号表示重定向,本该是将结果显示在屏幕,这里重定向到压缩文件。并且是覆盖的形式,如果是 >> 则为追加的形式。
然后可以使用
ls /opt/ -l
显示出文件,如下图
【导入本地镜像】
上面已经将nginx镜像导入了/opt/nginx.tgz。现在删除nginx镜像,然后导入本地的镜像
docker image load -i /opt/nginx.tgz
【容器的运行必须至少有一个前台进程】
1.容器内的进程必须在前台运行,否则容器会退出
2.容器什么事情也不做也会挂掉,必须有一个前台进程在运行
比如
直接使用
docker run centos
会产生很多个容器,但容器内没有程序再跑,所以直接挂掉了
所以必须在run 命令后面加上-it 表示进入容器并产生交互行为。一般结尾加bash。也可以是其他,比如 ping baidu.com
docker run -it centos ping baidu.com
【实时查看容器日志】
docker logs -f [container_id]
【查看容器的具体参数信息】
docker container inspect [container_id]
container inspect 容器监视
【查看容器的端口映射】
docker port [container_id]
比如
首先运行一个nginx 容器
然后就可以查看端口映射关系
表示容器内的80端口,映射到宿主机的85端口
然后在本地使用 [host_id]:85 就可以访问到nginx的欢迎界面
【容器的自定义端口映射和随机端口映射】
上面可以看到
docker run -d --name c_nginx -p 85:80 nginx
是自定义的宿主机85对应容器80,使用的是 -p 命令。
如果想随机端口,则为
docker run -d --name c_nginx -P nginx
这里是大写命令 -P 。
【提交容器生成镜像】
想要生成自定义的镜像,比如一般最新的CentOS镜像是一个纯空壳,甚至没有vim。所以,我想要生成一个带有vim的镜像。
首先是开启一个容器
docker run -it 8b797d41a71c bash
利用最新版CentOS生成一个容器,然后进入,然后下载vim
yum install -y vim
退出容器后在
docker commit b16cbb91a754 adu/centos-vim
利用docker Commit [container_id] [u_name]/[tool_name]生成镜像
最后进入这个镜像就可以使用vim编辑txt文件,而一般的Centos镜像,进去之后是无法使用vim的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现