Docker常用命令+详解

认识Docker

Docker是什么

Docter是一个用于构建、运行和管理容器的软件框架

利用Docter可以快速传送、测试和部署代码

容器是什么

可以将容器看成一个盒子,把软件软件依赖的各项服务统一的打包到容器中。

对于开发:不用考虑跨平台的细节问题

对于测试:不用纠结测试环境和开发环境是否一致

对于运维:不用关心各种语言的细节

搭建Docker环境

可以购买ubuntu + docker配置的云服务器

Docker的技术体系

Docker本质是一个C/S软件,docker发送指令,dockerhost接收和执行指令。

仓库:存放镜像

镜像:启动容器

容器:运行软件

Docker常用命令

免sudo操作

如果使用docker命令提示权限不足,可以选择在命令前加上sudo,或者可以执行一下免sudo操作。

命令如下:

bash 复制代码
sudo groupadd docker              # 创建新用户组
sudo usermod -aG docker $USER     # 当前用户加入用户组
newgrp docker                     # 刷新用户组权限

列出所有Docker命令

docter --help

查看某个命令的详解

命令 --help

给出该命令及其参数使用的详解

如:

docker image --help

docker image ls --help

1. 镜像

所有的镜像命令及其说明

docker image --help

XML 复制代码
Commands:
 build       根据Dockerdfile 构建镜像
 history     查看镜像构建步骤
 import      把一个容器的文件系统,导入为镜像
 inspect     查看镜像信息
 load        导入镜像
 ls          查了镜像
 prune       删除未使用镜像
 pull        从仓库拉取镜像
 push        把镜像推送到仓库
 rm          删除镜像
 save        导出镜像
 tag         给镜像打tag,

常见命令举例

XML 复制代码
docker image pull hello-world                     # 从仓库种拉取镜像
docker image ls                                   # 查看本地所有的镜像
docker image tag hello-world:latest abc:b.0.0.1   # 为镜像设置名字和tag
docker image rm hello-world:latest                # 根据名字删除镜像
docker image rm d2c94e258dcb                      # 根据id 删除镜像
docker image save abc:v.0.0.1 -o abc.img          # 导出镜像
docker image load -i abc.img                      # 导入镜像
  1. 从仓库中拉取镜像hello-world

docker image pull hello-world

解释:docker image pull 镜像名

  1. 查看本地所有镜像

docker image ls

  1. 为hello-world镜像设置名字和tag

docker image tag hello-world:latest abc:b.0.0.1

解释:hello-world:latest 是被设置镜像的名字和tag,中间用**:** 隔开,如下图所示:

后面的abc:v.0.0.1是设置的新的名字和tag,中间用 : 隔开

命令执行后使用docker image ls命令查看结果如下:

可以看到多了一个名为abc、tag为v.0.0.1 且 镜像ID和hello-world相同的镜像

  1. 根据镜像名删除hello-world镜像

docker image rm hello-world:latest

解释:hello-world:latest 表示要删除的镜像名:镜像tag

如果要删除的是最新的版本,也可以只写docker image rm hello-world

命令执行后使用docker image ls命令查看结果如下:

  1. 根据镜像ID删除镜像abc

docker image rm d2c94e258dcb

解释:rm后面填写要删除的镜像ID

注意:正在运行或者有多个相同ID的镜像无法直接通过此方法删除。如果仍然要删除可以在rm后添加-f参数

  1. 导出名为abc的镜像(先将hello-world和abc镜像重新创建)

docker image save abc:v.0.0.1 -o abc.img

解释:docker image save 镜像名:镜像tag -o 导出的文件名(自拟,随意起名,如:aaa)

最后使用docker image rm -f d2c94e258dcb删除hello-world和abc两个镜像

  1. 将上一步导出的abc.img导入到镜像中

docker image load -i abc.img

解释:docker image load -i 要导入的文件名

2. 网络

默认情况下,容器之间是不联网的

如果容器直接需要通信,需要使用同一个网络

所有的网络命令及其说明

docker network --help

XML 复制代码
Commands:
 connect     让容器加入指定的网络
 create      创建网络
 disconnect  让容器退出指定的网络
 inspect     查看指定网络信息
 ls          列出所有网络
 prune       移除未使用的网络
 rm          移除指定的网络

常见命令举例

XML 复制代码
docker network create abc_net # 创建网络
docker network rm abc_net     # 删除网络
  1. 创建网络,网络名为abc_net

docker network create abc_net

解释:docker network create 网络名

  1. 删除网络abc_net

docker network rm abc_net

解释:docket network rm 网络名

3. 容器(重要)

所有的容器命令及其说明

XML 复制代码
Commands:
 attach     将本地的输入输出,附加到容器中
 commit     根据容器及其修改,创建新的镜像
 cp         容器和服务器之间,文件传输
 create     创建新的容器(不运行)
 diff       Inspect changes to files or directories on a container's filesystem
 exec       在运行中的容器里,执行命令
 export     把容器的文件系统,导出
 inspect    查看容器信息
 kill       强行停止运行中的容器
 logs       显式容器的执行日志
 ls         列出容器
 pause      Pause all processes within one or more containers
 port       List port mappings or a specific mapping for the container
 prune      Remove all stopped containers
 rename     Rename a container
 restart    重启容器
 rm         删除容器
 run        创建并启动(重要)
 start      启动容器
 stats      查看容器状态
 stop       停止容器
 top        Display the running processes of a container
 unpause    Unpause all processes within one or more containers
 update     Update configuration of one or more containers
 wait       Block until one or more containers stop, then print their exit codes

常用的命令:

创建容器:create

启动容器:start

停止容器:stop

删除容器:rm

创建并启动容器:run = create + start

重启容器:restart = stop + start

常见命令举例

  1. run命令-创建并执行容器

(1)先添加一个mysql镜像,命令如下:docker image pull mysql:5.7

(2)对mysql:5.7镜像启动为容器

docker container run --name abc_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

XML 复制代码
docker container run 
--name abc_mysql                   # 容器的名字(自定义)
-e MYSQL_ROOT_PASSWORD=123456      # 需要传递的参数
mysql:5.7                          # 镜像名

参数部分语法(更多的参数在后面的步骤):-e 参数名=参数内容

若参数有多个,则需要传入多个-e,如:-e a=1 -e b=2

出现如下内容说明容器已执行

  1. stop、kill命令-停止容器

上面的状态无法通过ctrl+c停止,若想停止容器,可以开启新的窗口执行如下命令:

(1)停止容器:docker container stop abc_mysql

(2)强制停止容器:docker container kill abc_mysql

任意一个都可以停止容器

  1. ls - 查看所有容器

docker container ls -a

解释:-a表示查看所有容器

  1. start - 开启容器

docker container start abc_mysql

  1. 删除此容器

docker container rm abc_mysql

若此容器正在运行可以使用-f参数:

docker container rm abc_mysql -f

  1. 使用更多参数的run命令
XML 复制代码
docker container run             
--name abc_mysql                               # 容器名
-e MYSQL_ROOT_PASSWORD=123456                  # 容器参数
-p 3306:3306                                   # 端口映射(如果此容器需要网络连接则添加)
-d                                             # 后台运行
--volume /home/ubuntu/data:/var/lib/mysql      # 将容器和主机的文件进行映射
--volume /home/ubuntu/conf:/etc/mysql/conf.d   # 将容器和主机的文件进行映射
mysql:5.7                                      # 指定镜像
  1. 在容器内执行命令

docker container exec abc_mysql ls /etc/mysql

解释:docker container exec 容器名 命令

相关推荐
追风赶月、22 分钟前
【Linux】线程概念与线程控制
linux·运维·服务器
工业3D_大熊27 分钟前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
szc176730 分钟前
docker 相关命令
java·docker·jenkins
CP-DD35 分钟前
Docker 容器化开发 应用
运维·docker·容器
Stark-C38 分钟前
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
macos·docker·策略模式
老司机张师傅1 小时前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since811921 小时前
[ruby on rails] 安装docker
后端·docker·ruby on rails
努力的悟空2 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
吴半杯3 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗3 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑