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容器
    • 10.copy文件
    • 11.查看容器日志
    • 12.容器设置开机自启

docker基本命令

本文为转载 : 原文地址

1.查看docker版本

docker version

Linux【第四章】Docker基本命令讲解_第1张图片

2.查看docker详细信息

docker info

Linux【第四章】Docker基本命令讲解_第2张图片

3.查看docker帮助命令

docker help

Linux【第四章】Docker基本命令讲解_第3张图片

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

  • 举例

查询ps的参数如何使用

docker ps --help

Linux【第四章】Docker基本命令讲解_第4张图片

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

Linux【第四章】Docker基本命令讲解_第5张图片

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镜像文件
    Linux【第四章】Docker基本命令讲解_第6张图片
  • 搜索start超过5000的jenkins镜像文件
    在这里插入图片描述

3.拉取镜像文件

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

docker pull 镜像名
# 拉去MySQL
docker pull mysql
  • 拉取mysql,需要注意的是,如果不加镜像的版本信息,则默认拉取的是最新版本
    Linux【第四章】Docker基本命令讲解_第7张图片
  • 查看新增的mysql镜像文件
    在这里插入图片描述

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

docker官方镜像搜索

官方网址
Linux【第四章】Docker基本命令讲解_第8张图片
版本信息
Linux【第四章】Docker基本命令讲解_第9张图片

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

Linux【第四章】Docker基本命令讲解_第10张图片

4.运行镜像文件

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

Linux【第四章】Docker基本命令讲解_第11张图片
启动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)

Linux【第四章】Docker基本命令讲解_第12张图片

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

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

6.保存镜像文件

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

语法:

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
# 备份我们的jenkins镜像
docker save 55860ee0cd73 -o /tmp/jenkinsbeifen.tar
  • 备份jenkins
    Linux【第四章】Docker基本命令讲解_第13张图片
  • 查看备份文件在这里插入图片描述

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

Linux【第四章】Docker基本命令讲解_第14张图片

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

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

# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
  • 查看端口,并没有发现6379
    Linux【第四章】Docker基本命令讲解_第15张图片

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

Linux【第四章】Docker基本命令讲解_第16张图片
为什么不行呢 已经确定了 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

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

Linux【第四章】Docker基本命令讲解_第17张图片
那么容器端口映射有没有什么限制呢?

有的,虽说每个容器之间,环境都是隔离的,但是宿主机每个端口都是一个,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

在这里插入图片描述

10.copy文件

将文件从宿主机copy到容器当中

# copy文件到容器
docker cp 文件名 容器名:容器位置
# copy
docker cp file_demo.txt jenkins:/var/
  • 查看容器内是否有存在文件
    在这里插入图片描述

将文件从容器内cp到宿主机

在容器内var,目录下新建一个cp.txt文件

  • 新建cp.txt文件
    在这里插入图片描述
# copy文件到宿主机
docker cp 容器名:文件名 宿主机位置 
# copy 复制到当前位置的目录
docker cp jenkins:/var/cp.txt ./

Linux【第四章】Docker基本命令讲解_第18张图片

11.查看容器日志

# 查看日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
# 查看jenkins容器日志
docker logs -f --tail=500 jenkins

Linux【第四章】Docker基本命令讲解_第19张图片

12.容器设置开机自启

启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动

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

你可能感兴趣的:(Docker,Linux,docker,linux,容器)