Docker容器

Linux【第四章】Docker基本命令讲解

本文主要是介绍Linux【第四章】Docker基本命令讲解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

docker目录

  • docker基本命令
    • 1.查看docker版本
    • 2.查看docker详细信息
    • 3.查看docker帮助命令
    • 4.启动docker
    • 5.关闭docker
    • 6.重启docker
    • 7.自启动docker
    • 8.查看docker运行状态
  • docker镜像命令
    • 1.查看当前镜像
    • 2.搜索镜像
    • 3.拉取镜像文件
    • 4.运行镜像文件
    • 5.删除镜像文件
    • 6.保存镜像文件
    • 7.加载镜像文件tar
  • docker容器命令
    • 1.查看当前运行容器列表
    • 2.查看所有容器 -----包含正在运行 和已停止的
    • 3.运行一个容器
    • 4.容器端口映射
    • 5.进入容器
    • 6.退出容器
    • 7.停止容器
    • 8.重启容器
    • 9.kill容器

docker基本命令

本文为转载 : 原文地址

1.查看docker版本

docker version

在这里插入图片描述

2.查看docker详细信息

docker info

在这里插入图片描述

3.查看docker帮助命令

docker help

在这里插入图片描述

如果忘记某一个命令的具体参数如何使用,就在后面接–help

  • 举例

查询ps的参数如何使用

docker ps --help

在这里插入图片描述

4.启动docker

systemctl start docker 

在这里插入图片描述

5.关闭docker

systemctl stop docker

在这里插入图片描述

6.重启docker

systemctl restart docker

在这里插入图片描述

7.自启动docker

systemctl enable docker

8.查看docker运行状态

有绿色说明当前正在运行中

systemctl status docker

在这里插入图片描述

docker镜像命令

1.查看当前镜像

docker images

在这里插入图片描述

2.搜索镜像

参数说明:

根据提供参数过滤查询结果
-f , --filter filter Filter output based on conditions provided

# 搜索命令
docker search 镜像名
# 比如搜索jenkins
docker search jenkins 
# 比如搜索jenkins下载数量超过5000的镜像文件
docker search -f
  • 搜索jenkins镜像文件
    在这里插入图片描述
  • 搜索start超过5000的jenkins镜像文件
    在这里插入图片描述

3.拉取镜像文件

不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本

docker pull 镜像名
# 拉去MySQL
docker pull mysql
  • 拉取mysql,需要注意的是,如果不加镜像的版本信息,则默认拉取的是最新版本
    在这里插入图片描述
  • 查看新增的mysql镜像文件
    在这里插入图片描述

我们来拉取一个带版本信息的镜像文件试试就知道了

docker官方镜像搜索

官方网址
在这里插入图片描述
版本信息
在这里插入图片描述

  • 拉取mysql镜像并且版本为5.7.37
docker pull mysql:5.7.37

在这里插入图片描述

4.运行镜像文件

# 拉取tomcat镜像
docker pull tomcat
# 不进行任何操作直接启动tomcat
docker run tomcat

在这里插入图片描述
启动tomcat镜像之后会发现,光标消失了而且什么操作都不能做,这个使用可以用 ctrl+c跳出(注:此方式虽然可以退出容器,此命令是错误的,详细请见下文的容器命令)

5.删除镜像文件

前提条件是当前的镜像文件没有被任何容器使用,就好比房子里面有人,你直接开挖土机拆迁那肯定是不行的

#删除单个镜像文件
docker rmi -f 镜像名/镜像id
# 删除最新的mysql镜像文件
docker rmi -f 5b4c624c7fe1
# 下面的可以自己试试
#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)

在这里插入图片描述

  • 强制删除镜像文件
docker images rm  镜像名/镜像ID

镜像的基础命令就到这里 下方会使用更复杂的 docker run 命令 来根据镜像启动容器

6.保存镜像文件

将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后可以在任何一台安装了docker的服务器上 加载这个镜像

语法:

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
# 备份我们的jenkins镜像
docker save 55860ee0cd73 -o /tmp/jenkinsbeifen.tar
  • 备份jenkins
    在这里插入图片描述
  • 查看备份文件在这里插入图片描述

7.加载镜像文件tar

加载从其他地方移植过来的镜像文件

语法

docker load -i 镜像保存文件位置

# 加载jenkins容器
docker load -i /tmp/jenkinsbeifen.tar
  • 加载容器
    在这里插入图片描述

docker容器命令

1.查看当前运行容器列表

docker ps

在这里插入图片描述

2.查看所有容器 -----包含正在运行 和已停止的

docker ps -a

在这里插入图片描述

3.运行一个容器

语法

# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  
# --name 给要运行的容器 起的名字  /bin/bash  交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash 

我们拿redis举例,拉去并运行redis容器

  • 创建并运行容器
#1. 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash

在这里插入图片描述

  • 查看容器
    在这里插入图片描述

这个时候我们看到了
redis 使用了6379 端口 那么我们在关闭防火墙或开启了安全组的情况下 是否可以进行访问呢?

# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
  • 查看端口,并没有发现6379
    在这里插入图片描述

赶紧使用 redis desktop manger 连接测试一下

在这里插入图片描述
为什么不行呢 已经确定了 docker 中 redis 容器已经是在运行中 且占有端口 6379啊?

因为:占用的6379端口 仅仅是在容器中内部本身的端口,与宿主机的6379端口并无联系,我们通过宿主机Ip:6379访问此redis示例,那自然是找不到的哟!

默认情况下,我们是无法通过宿主机(安装docker的服务器)端口来直接访问容器的 ,因为docker容器自己开辟空间的端口与宿主机端口没有联系…

如果外部想要访问容器,那必须得让容器中的端口与宿主机的端口建立联系绑定起来,这个正式的概念叫做容器端口映射

有了端口映射,我们就可以将宿主机端口与 容器端口绑定起来,比如 我们建立宿主机的 6379端口与容器redis 6379端口绑定起来,那么再访问宿主机 Ip:6379 就可以访问到对应容器了!

4.容器端口映射

接下来 进行 容器端口映射演示

首先停止容器

docke stop 容器id/容器名
# 停止redis
docker stop redis001

然后删除容器

# 删除容器
docker rm -f fb4e089b9a67

端口映射语法

-p 宿主机端口:容器端口

还是使用前方的 redis 镜像 尝试 将 6379端口 映射到服务器的8888 如果成功了的话 那么咱们访问服务器的8888端口就会访问到咱们的 docker 中 的容器 redis002

-p 8888:6379 解析
将容器内部的 6379端口与docker 宿主机(docker装在哪太服务器 那台服务器 就是其数组机)8888 端口进行映射
那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了

docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash

在这里插入图片描述
那我们重新再连接一下发现就成功了

在这里插入图片描述
那么容器端口映射有没有什么限制呢?

有的,虽说每个容器之间,环境都是隔离的,但是宿主机每个端口都是一个,8888端口被redis002容器绑定了,那么其他所有的容器都不可以使用8888这个端口了!!!

5.进入容器

方式一:

# 语法
docker exec -it 容器名/容器ID /bin/bash

#进入 前面的 redis001容器   
docker exec -it redis001 /bin/bash
  • 进入容器
    在这里插入图片描述

方式二:

docker attach 容器名/容器ID
# 进入redis
docker attach redis001
  • 进入容器
    在这里插入图片描述

6.退出容器

#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit
# 优雅提出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
  • 直接退出
    在这里插入图片描述
  • 优雅退出
    在这里插入图片描述

7.停止容器

docker stop 容器ID/容器名
# 停止redis001
docker stop redis001

在这里插入图片描述

8.重启容器

docker restart 容器ID/容器名
# 重启redis001
docker restart redis001

在这里插入图片描述

9.kill容器

docker kill 容器名/容器id

# 杀掉redis002容器
docker kill redis002

在这里插入图片描述

这篇关于Linux【第四章】Docker基本命令讲解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!