之前我们讲述了 docker是什么,并且如何进行安装,接下来我们说一说一些常见的docker基础命令和常见操作
docker常用命令
帮助启动类
启动docker:
systemctl start docker
常规的进行docker的启动
停止docker:
systemctl stop docker
此提示并非错误,这是docker的被访问自动唤醒机制,如果继续执行docker的相关命令,docker服务就会自动启动,不想docker被访问唤醒就在执行完systemctl stop docker后继续执行systemctl stop docker.socket
重启docker:
systemctl restart docker
查看docker状态:
systemctl status docker
输出可能会类似于:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-07-23 08:00:00 UTC; 1h 30min ago
Process: 1234 ExecStart=/usr/bin/dockerd (code=exited, status=0/SUCCESS)
Process: 5678 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 9101 (dockerd)
CGroup: /system.slice/docker.service
└─9101 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jul 23 08:00:00 server.example.com systemd[1]: Starting Docker Application Container Engine...
Jul 23 08:00:00 server.example.com dockerd[1234]: time="2024-07-23T08:00:00Z" level=info msg="Loading containers: start."
Jul 23 08:00:00 server.example.com dockerd[1234]: time="2024-07-23T08:00:00Z" level=info msg="Loading containers: done."
Jul 23 08:00:00 server.example.com systemd[1]: Started Docker Application Container Engine.
在这个示例中:
- Loaded 显示服务是否被加载和配置为自动启动。
- Active 显示服务是否正在运行。
- Main PID 显示 Docker 服务的主进程 ID。
- CGroup 显示 Docker 服务的控制组信息。
- 日志 显示服务启动时的日志信息。
通过这些信息,你可以了解 Docker 服务的运行状况和可能遇到的问题。
开启启动:
systemctl enable docker
查看docker概要信息:
docker info
查看docker总体帮助文档:
docker --help
会展示一些docker的额外服务参数信息 相信有经验的人都明白这个help是干嘛的 像是 composer gorm大部分工具都会有自己的使用说明书一样
查看docker命令帮助文档:
docker 具体命令 --help
上述的指令基本是基于docker本身的一些操作命令
接下来说一些日常开发中会用到的重点
docker的镜像命令
1 镜像名称
镜像的名称组成:
镜名称一般分两部分组成:repository:tag。
在没有指定tag时,默认是latest,代表最新版本的镜像
比如我们想搜索下载mysql的镜像 镜像就包含了需要的 仓库名称和版本
2 镜像命令
docker images #查看镜像
从服务器拉取镜像拉取镜像
docker pull 镜像名 #拉取最新版本的镜像
docker pull 镜像名:tag #拉取镜像,指定版本
推送镜像到服务
docker push 镜像名
docker push 镜像名:tag
docker save -o 保存的目标文件名称 镜像名 #保存镜像为一个压缩包
docker load -i 文件名 #加载压缩包为镜像
从Docker Hub查找/搜索镜像
docker search [options] TERM
docker search -f STARS=9000 mysql #搜索stars收藏数不小于10以上的mysql镜像
删除镜像。当前镜像没有被任何容器使用 才可以删除
docker rmi 镜像名/镜像ID #删除镜像
docker rmi -f 镜像名/镜像ID #强制删除
docker rmi -f 镜像名 镜像名 镜像名 #删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f $(docker images -aq) #删除全部镜像,-a 意思为显示全部, -q 意思为只显示ID
docker image rm 镜像名称/镜像ID #强制删除镜像
给镜像打标签【有时候根据业务需求 需要对一个镜像进行分类或版本迭代操作,此时就需要给镜像打上标签】
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
案例1 下载镜像
我们这里使用nginx举例
从DockerHub中拉取一个nginx镜像并查看
首先去镜像仓库搜索nginx镜像,比如DockerHub:
通过命令:docker images 查看拉取到的镜像
案例2--保存、导入镜像
需求:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
1)利用docker xx --help命令查看docker save和docker load的语法
例如,查看save命令用法,可以输入命令:
2)docker save -o [保存的目标文件名称] [镜像名称]
便于测试指令 我生成一个docker_study文件夹
3)使用docker load加载镜像
先删除本地的nginx镜像:
然后运行命令,加载本地文件:
docker load -i nginx.tar
docker容器命令
docker容器的启动需要镜像的支持。
容器保护三个状态:
运行:进程正常运行
暂停:进程暂停,CPU不再运行,并不释放内存
停止:进程终止,回收进程占用的内存、CPU等资源
docker容器常用的命令
docker ps #显示正在运行的容器
docker ps -a #-a,--all 显示全部容器,包括已停止的(默认只显示运行中的容器)
容器怎么来? docker run 创建并运行一个容器,处于运行状态。
--name 给要运行的容器起的名字; -p 将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口; -d 表示可后台运行容器 (守护式运行)。具体样例见下
docker run --name containerName -p 80:80 -d nginx
docker pause 容器名/容器ID #让一个运行的容器暂停
docker unpause name #让一个容器从暂停状态恢复运行
docker stop name #停止一个运行的容器(杀死进程、回收内存,仅剩文件系统)
docker start name #让一个停止的容器再次运行
docker restart name #重启容器
docker stop与docker kill的区别:都可以终止运行中的docker容器。类似于linux中的kill和kill -9这两个命令,docker stop与kill相似,docker kill与kill -9类似
docker kill 容器名 #杀掉一个运行中的容器
docker rename 容器名 新容器名 #更换容器名
删除容器
docker rm 容器名/容器ID #删除容器
docker rm -f CONTAINER #强制删除
docker rm -f 容器名 容器名 容器名 #删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f $(docker ps -aq) #删除全部容器
docker logs 容器名 #查看容器运行日志
docker logs -f 容器名 #持续跟踪日志
docker logs -f --tail=20 容器名 #查看末尾多少行
进入容器执行命令,两种方式 docker exec 和 docker attach,推荐docker exec
方式一 docker exec。
docker exec -it 容器名/容器ID bash
方式二 docker attach,推荐使用docker exec
docker attach 容器名/容器ID
从容器退到自己服务器中(不能用ctrl+C)
exit #直接退出。未添加-d(持久化运行容器)时,执行此参数 容器会被关闭
ctrl+p+q #优雅退出。无论是否添加-d参数,执行此命令容器都不会被关闭
案例--创建并运行一个容器
创建并运行nginx容器的命令:
docker run --name containerName -p 80:80 -d nginx
命令解读:
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口。宿主机端口可以任意,只要没有被占用,容器内端口取决于应用本身
-d:后台运行容器,一般都会加
nginx:镜像名称,例如nginx,没写标签tag 默认最新版本
这里的-p参数,是将容器端口映射到宿主机端口。
默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。
现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:
案例--进入容器,修改文件
需求:进入Nginx容器,修改HTML文件内容,添加“高级开发欢迎您”
提示:进入容器要用到docker exec命令。
步骤:
1)进入容器。进入我们刚刚创建的nginx容器的命令为:
docker exec -it mn bash
docker exec -it mr redis-cli
命令解读:
docker exec :进入容器内部,执行一个命令【exit 从容器内部退出】
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称name
bash:进入容器后执行的命令,bash是一个linux终端交互命令。之前的cd ls都是bash命令的一部分; redis-cli 直接连接redis
修改index.html的内容
容器内没有vi命令,无法直接修改,我们用下面的命令来修改:
sed -i -e 's#Docker 测试nginx修改文件内容#g' -e 's#
评论 (0)