欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > docker常用命令

docker常用命令

2024/12/21 23:42:36 来源:https://blog.csdn.net/weixin_60872974/article/details/144596460  浏览:    关键词:docker常用命令

目录

一、帮助启动类命令

(1)启动docker

(2)停止docker

(3)重启docker

(4)查看docker

(5)设置开机自启

(6)查看docker概要信息

(7)查看docker总体帮助文档

(8)查看docker命令帮助文档

二、镜像命令

(1)docker images

(2)docker search

(3)docker pull

(4)docker system df

(5)docker rmi

(6)docker commit

(7)docker build

三、容器命令

(1)docker run

(2)docker ps

(3)退出容器

① exit

② ctrl+p+q

(4)进入正在运行的容器并以命令行交互

① docker exec -it 容器ID/容器名称 bashShell

② docker attach 容器ID

(5)启动已停止运行的容器

(6)重启容器

(7)停止容器

(8)强制停止容器

(9)删除已停止的容器

(10)查看容器日志

(11)查看容器内运行的进程

(12)查看容器内部细节

(13)从容器内拷贝文件到主机上

(14)导入和导出容器

(15)容器数据卷挂载

(16)容器数据卷继承

(17)查看容器资源占用情况

(18)Docker save 

(19)Docker load

四、docker网络命令

(1)查看网络

(2)创建网络 

(3)查看网络源数据

(4)删除网络

五、Docker-compose容器编排命令



安装docker

1.卸载旧版

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \docker-selinux 

2.配置Docker的yum库

首先要安装一个yum工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

更新yum,建立缓存

sudo yum makecache fast

3.安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.启动和校验

# 启动Docker 
systemctl start docker 
# 停止Docker 
systemctl stop docker 
# 重启 
systemctl restart docker 
# 设置开机自启 
systemctl enable docker 
# 执行docker ps命令,如果不报错,说明安装启动成功 
docker ps

5.配置镜像加速

镜像地址可能会变更,如果失效可以百度找最新的docker镜像。

配置镜像步骤如下:

# 创建目录mkdir -p /etc/docker 
# 复制内容 
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://mirrors.tuna.tsinghua.edu.cn", "http://mirrors.sohu.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://ccr.ccs.tencentyun.com", "https://docker.m.daocloud.io", "https://docker.awsl9527.cn" ] } EOF 
# 重新加载配置 
systemctl daemon-reload 
# 重启Docker 
systemctl restart docker

部署容器

利用Docker快速的安装了MySQL

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,你可以叫别的

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可以宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口

  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

一、帮助启动类命令

(1)启动docker

systemctl start docker

AI助手

(2)停止docker

systemctl stop docker

AI助手

(3)重启docker

systemctl restart docker

AI助手

(4)查看docker

systemctl status docker

AI助手

(5)设置开机自启

systemctl enable docker

AI助手

(6)查看docker概要信息

docker info

AI助手

(7)查看docker总体帮助文档

docker --help

AI助手

(8)查看docker命令帮助文档

docker 命令 --helpexample:docker run --help

AI助手

二、镜像命令

(1)docker images

列出本地主机上有的镜像

docker images [OPTIONS]常用参数:-a :列出所有的镜像 (含历史映像层)-q :只显示镜像IDexample:docker images -adocker images -qdocker images -aqdocker images redis #查找镜像名为redis的镜像docker images redis:6.0.8 #查找镜像名:版本号(REPOSITORY:TAG)对应的镜像

字段解析:

  1. REPOSITORY:表示镜像的仓库源
  2. TAG:镜像的标签版本号
  3. IMAGE ID:镜像ID
  4. CREATED:镜像创建时间
  5. SIZE:镜像大小 

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

(2)docker search

去配置的镜像网站库找寻找某个镜像,比如:Docker

 
  1. docker search [OPTIONS] 镜像名字

  2. 常用参数:

  3. --limit nu #只输出查到的前nu条记录

  4. example:

  5. docker search redis

  6. docker search --limit 3 redis

  7. docker search redis --limit 3 # 放在镜像名称前面后面均可

AI助手

 

字段解析:

  1. NAME:镜像名称
  2. DISCRIPTION:镜像说明
  3. STARTS:点赞数
  4. OFFICAL:是否是官方认可的
  5. AUTOMATED:是否自动构建 

(3)docker pull

从远程库拉取镜像

docker pull 镜像名字[:TAG]example:docker pull redis:6.0.8docker pull ubuntu # 没有指定版本即拉取最新版 即默认为 ubuntu:latest

(4)docker system df

查看镜像/容器/数据卷所占的空间

docker system df

AI助手

(5)docker rmi

删除本地有的镜像

 
#删除单个docker rmi 镜像ID #删除镜像,如果此时镜像上面有容器正在运行,会报错无法删除docker rmi -f 镜像ID #强制(forced)删除镜像#删除多个docker rmi -f 镜像名1:TAG 镜像名2:TAG#删除全部(慎用)docker rmi -f $(docker images -qa)#首先docker images -qa会列举本地所有的镜像的ID,然后作为一个集合送入rmi一个个删除

(6)docker commit

 Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。我们进行扩展后提交到本地成为一个新的镜像

 
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]example:docker pull ubuntu # 从镜像仓库拉取基础ubuntu镜像(支持扩展),原始的默认Ubuntu镜像是不带着vim命令的#外网联通的情况下,在容器内安装vim命令apt-get updateapt-get -y install vim#安装完成后,commit我们自己的新镜像docker commit -m="ubuntu-add-vim" -a="zjy" a4b1b1cc54f0 atguigu/myubuntu:1.3

提交结果,可以明显的看到SIZE变大了

 

(7)docker build

 通过Dcokerfile构建镜像

docker build -t 新镜像名字:TAG . # 注意 TAG后面有个空格,有个点example:docker build -t centosjava8:1.5 .

三、容器命令

(1)docker run

新建启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用参数:--name=NAME #为容器指定名字为NAME,不使用的话系统自动为容器命名-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);-i:以交互模式运行容器,通常与 -t 同时使用;-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互,一般连用,即-it);-P: 随机端口映射,大写P-p: 指定端口映射,小写pexample:以ubuntu为例,启动后要交互先声明交互模式,其次交互得需要一个终端,因此参数为-itdocker run -it ubuntu /bin/bash指定名称docker run -it --name=myubuntu ubuntu /bin/bash

启动守护式容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,
我们可以过 -d 指定容器的后台运行模式。

docker run -d 容器名example:docker run -d redis:6.0.8docker run -d ubuntu
 

注意

上面的docker run -d ubuntu 执行后,使用docker ps -a进行查看,会发现容器已经退出

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start。但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用, 这样的容器后台启动后,会立即自杀,因为它觉得他没事可做了.

最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,类似centos、ubuntu

(2)docker ps

docker ps [OPTIONS]常用参数:-a :列出当前所有正在运行的容器+历史上运行过的-l :显示最近创建的容器。-n nu:显示最近nu个创建的容器。-q :静默模式,只显示容器编号。example:docker ps -aqdocker ps -n 3docker ps -l

(3)退出容器

① exit

run进去容器,exit退出,容器停止

② ctrl+p+q

run进去容器,ctrl+p+q退出,容器不停止

(4)进入正在运行的容器并以命令行交互

① docker exec -it 容器ID/容器名称 bashShell
② docker attach 容器ID
example:#容器IDdocker exec -it c32f612cc218 /bin/bashdocker attach c32f612cc218#容器名称docker exec -it wizardly_booth /bin/bashdocker attach wizardly_booth

区别 

exec 是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的停止。

attach 直接进入容器启动命令的终端,不会启动新的进程。用exit退出,会导致容器的停止。

推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。

(5)启动已停止运行的容器

docker start 容器ID或者容器名

AI助手

(6)重启容器

docker restart 容器ID或者容器名

(7)停止容器

docker stop 容器ID或者容器名

(8)强制停止容器

docker kill 容器ID或容器名

(9)删除已停止的容器

#删除一个docker rm 容器IDdocker rm -f 容器ID #强制删除#删除多个docker rm -f $(docker ps -a -q)或docker ps -a -q | xargs docker rm

(10)查看容器日志

docker logs 容器ID

(11)查看容器内运行的进程

docker top 容器ID

(12)查看容器内部细节

docker inspect 容器ID

(13)从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径example:#以ubuntu为例,我们在/tmp目录下通过touch a.txt创建a文本,将其复制到本机download目录下docker cp 958443b97285:/tmp/a.txt /download

(14)导入和导出容器

export 导出容器的内容留作为一个tar归档文件[对应import命令]

import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

docker export 容器ID > 文件名.tarcat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号example:#以ubuntu为例docker export 958443b97285 > abcd.tarcat abcd.tar | docker import - atguigu/ubuntu:3.7 # 注意 - 左右有分别有一个空格

(15)容器数据卷挂载

将docker容器内的数据保存进宿主机的磁盘中

/var/lib/docker/volumes这个目录就是默认的存放所有容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data

docker volume create

创建数据卷

docker volume ls

查看所有数据卷

docker volume rm

删除指定数据卷

docker volume inspect

查看某个数据卷的详情

docker volume prune

清除数据卷

# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷 第一个参数是数据卷的名字,后面为容器内目录
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx# 2.然后查看数据卷
docker volume ls
# 结果
DRIVER    VOLUME NAME
local     29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local     html# 3.查看数据卷详情
docker volume inspect html
# 结果
[{"CreatedAt": "2024-05-17T19:57:08+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}
]# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html# 6.打开页面,查看效果# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash

# 运行一个带有容器卷存储功能的容器实例docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:[OPTION] 镜像名OPTION:rw 可读可写(read + write)ro 容器实例内部被限制,只能读取不能写,仅读(read only)example:docker run -it --privileged=true --name=u1 -v /tmp/docker_data:/tmp/dockertest:ro ubuntu /bin/bashdocker run -it --privileged=true --name=u2 -v /tmp/docker_data:/tmp/dockertest ubuntu /bin/bash # 不写OPTION默认rw

挂载后可通过【docker inspect 容器ID】查看是否挂载成功

(16)容器数据卷继承


docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntuexample:# 新创建u3容器继承u2容器的数据卷挂载,此时u2就算stop也不影响u3docker run -it --privileged=true --volumes-from u2 --name u3 ubuntu

(17)查看容器资源占用情况

 显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等。

docker stats [OPTIONS] [CONTAINER...]OPTIONS:--all , -a :显示所有的容器,包括未运行的。--format :指定返回值的模板文件。--no-stream :展示当前状态就直接退出了,不再实时更新。--no-trunc :不截断输出。example:docker statsdocker stats mynginx # 容器名docker stats af7928654200 # 容器ID

 

 字段解析:

  1. CONTAINER ID 与 NAME: 容器 ID 与名称。
  2. CPU % 与 MEM %: 容器使用的 CPU 和内存的百分比。
  3. MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。
  4. NET I/O: 容器通过其网络接口发送和接收的数据量。
  5. BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。
  6. PIDs: 容器创建的进程或线程数。

注意:
docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能,如果现象要实现监控数据持久化并以图表等形式展现,可以使用CIG,即CAdvisor监控收集+InfluxDB存储数据+Granfana展示图表

(18)Docker save 

docker save 命令用于将 Docker镜像 保存成 tar 包。

docker save [OPTIONS] IMAGE [IMAGE...]docker save 镜像名:版本号 -o 打包压缩存放位置OPTIONS:docker save -o, --output 将归档文件输出到的文件。example:docker save 67fa590cfc1c -o haicoder_centos.tar //打包到当前目录下

(19)Docker load

docker load 命令用于从 tar 归档文件或者标准输入流载入镜像。docker load 命令的相对应的命令为 docker save

docker load [OPTIONS]OPTIONS:-i 指定导出的文件。-q 精简输出信息。docker load -i haicoder_centos.tar // 将归档的镜像文件,载入到镜像

  

四、docker网络命令

 

(1)查看网络

docker network ls

AI助手

(2)创建网络 

docker network create xxx网络名字

AI助手

(3)查看网络源数据

docker network inspect  XXX网络名字

(4)删除网络

docker network rm XXX网络名字

五、Docker-compose容器编排命令

docker-compose -h # 查看帮助docker-compose up # 启动所有docker-compose服务docker-compose up -d # 启动所有docker-compose服务并后台运行docker-compose down # 停止并删除容器、网络、卷、镜像。docker-compose exec yml里面的服务id # 进入容器实例内部docker-compose exec docker-compose.yml文件中写的服务id /bin/bashdocker-compose ps # 展示当前docker-compose编排过的运行的所有容器docker-compose top # 展示当前docker-compose编排过的容器进程docker-compose logs yml里面的服务id # 查看容器输出日志docker-compose config # 检查配置docker-compose config -q # 检查配置,有问题才有输出docker-compose restart # 重启服务docker-compose start # 启动服务docker-compose stop # 停止服务

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com