二十六、Docker (2)

注:阶段A和阶段B本质一样,阶段B相当于对阶段A的温故

一、Docker的常用命令 (阶段A)

1.1 帮助命令

docker version   			 #显示docker版本信息
docker info					#显示docker的系统信息,包括镜像和容器的数量
docker  --help  	 		#万能命令,帮助命令

帮助文档的地址

在这里插入图片描述

1.2 镜像命令

docker images 查看所有本地的主机上的镜像

docker images

在这里插入图片描述

解释上面命令

[root@bogon ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   15 months ago   13.3kB

# 解释:
REPOSITORY			     镜像的仓库源
TAG 				     镜像的标签
IMAGE ID            	 镜像的id
CREATED					 镜像的创建时间
SIZE 					 镜像的大小

#可选项
Options:
  -a, --all           列出所有镜像
     
  -q, --quiet         只显示镜像的id

在这里插入图片描述

官网搜索镜像

在这里插入图片描述

1. docker search docker 搜索镜像

 docker search      #docker 搜索镜像

在这里插入图片描述

官网搜索如下显示,也是一样的

在这里插入图片描述

在这里插入图片描述

# 可选项,通过搜索来过滤
docker search mysql --filter=STARS=3000     #搜索出来的镜像STARS就是大于3000的

在这里插入图片描述

2. docker pull 下载镜像

#下载镜像
docker pull mysql

在这里插入图片描述

对上面的下载进行解释:

#下载镜像  docker pull  镜像名 [:tag]
[root@bogon ~]# docker pull mysql     
Using default tag: latest    #如果不写 tag,默认就是latest  即最新的镜像
latest: Pulling from library/mysql
72a69066d2fe: Pull complete   # 分层下载,docker images的核心   联合文件系统
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest     
docker.io/library/mysql:latest    #真是地址
#等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
docker pull mysql:5.7     #拉取对应版本的镜像(这个版本官网一定是存在的,才会拉取成功)

docker images   #查看拉取下来的镜像

在这里插入图片描述

3. docker rmi #删除镜像

docker rmi 镜像对应id     #删除对应id的镜像

docker rmi -f $(docker images  -aq)   #删除所有的镜像

在这里插入图片描述

1.3 容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

docker pull centos

1.3.1 新建容器并启动

docker run [可选参数]  image

#参数说明
--name="Name"    容器名字   tomcat01  tomcat02,用来区分容器
-d				 后台方式运行
-it				 使用交互方式运行,进入容器查看内容
-p		         指定容器的端口  -p   8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p	容器端口
-p				 随机指定端口

在这里插入图片描述

exit     	#从容器中退回到主机

在这里插入图片描述

1.3.2 列出所有运行的容器

#docker ps 命令
		docker ps   #列出当前正在运行的容器
-a      #列出当前正在运行的容器+带出历史运行过的容器
-n=?    #显示最近创建的容器
-q      #只显示容器的编号

在这里插入图片描述

1.3.3 退出容器

exit   # 直接容器停止并退出

ctrl + p +q    # 容器不停止退出

在这里插入图片描述

1.3.4 删除容器

docker rm  容器id				          #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
docker rm -f $(docker ps -aq)             #删除所有的容器
docker ps -a -q | xargs docker rm         #删除所有的容器(扩展)

在这里插入图片描述

1.3.5 启动和停止容器的操作

docker start   容器id    #启动容器
docker stop   容器id     #停止当前运行的容器
docker restart 容器id    #重启容器
docker  kill   容器id    #强制停止当前运行的容器

在这里插入图片描述

1.4 常用的其它命令

1.4.1 后台启动容器

# 命令  docker run -d 镜像名
docker run -d centos

#问题 docker ps,发现 centos 停止了

#常见的坑,docker 容器使用后台运行,就必须要有有个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

在这里插入图片描述

1.4.2 查看日志

docker logs --help

docker logs -f -t --tail 容器,没有日志

在这里插入图片描述

1.4.3 查看容器中进程信息

# 命令 docker top 容器id

docker top   容器id

1.4.4 查看镜像的元数据

#  命令 docker inspect 容器id

docker inspect --help

docker inspect  容器id

在这里插入图片描述

1.4.5 进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#命令
docker exec -it  容器id  /bin/bash

在这里插入图片描述

#  docker exec  #进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach  #进入容器正在执行的终端,不会启动新的进程

在这里插入图片描述

1.4.6 从容器内拷贝文件到主机上

docker cp

[root@bogon ~]# clear
[root@bogon ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS          PORTS     NAMES
8925cb9c72f0   centos    "/bin/bash"   3 minutes ago   Up 19 seconds             heuristic_borg

#  进入docker容器内部

[root@bogon ~]# docker attach 8925cb9c72f0
[root@8925cb9c72f0 /]# cd /home 

#查看当前主机目录下

[root@8925cb9c72f0 home]# ls

# 在容器内新建一个文件

[root@8925cb9c72f0 home]# touch text.java
[root@8925cb9c72f0 home]# exit
exit
[root@bogon ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS                         PORTS     NAMES
72e46a75953e   centos    "/bin/bash"              3 minutes ago       Exited (127) 2 minutes ago               serene_dubinsky
8925cb9c72f0   centos    "/bin/bash"              3 minutes ago       Exited (0) 11 seconds ago                heuristic_borg
bb3f12a2ab0d   centos    "/bin/bash"              59 minutes ago      Exited (0) 57 minutes ago                friendly_lehmann
fa0d7faade3e   centos    "/bin/sh"                About an hour ago   Exited (130) 5 minutes ago               gifted_wozniak
94f46ccde94e   centos    "/bin/sh -c 'while t…"   About an hour ago   Exited (1) About an hour ago             nervous_nightingale
1858da512434   centos    "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                   compassionate_snyder
2d1c76e78323   centos    "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                   naughty_swanson
04c5ac20aa10   centos    "/bin/bash"              2 days ago          Exited (0) 2 days ago                    upbeat_hodgkin
[root@bogon ~]# ls
anaconda-ks.cfg

#将这个文件拷贝出来到主机上

[root@bogon ~]# docker cp 8925cb9c72f0:/home/text.java /home
[root@bogon ~]# ls
anaconda-ks.cfg
[root@bogon ~]# 

在这里插入图片描述

二、Docker的常用命令 (阶段B)

2.1 Docker镜像操作常用指令

2.1.1 搜索镜像

可使用docker search 命令搜索存放在Docker Hub中的镜像

docker search tomcat

在这里插入图片描述

列说明:

  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

2.1.2 下载镜像(截图👇)

使用命令docker pull 命令即可从Docker Registry上下载镜像。

docker pull idmcore/java8u161
  • 执行该命令后,Docker会从Docker Hub中的java仓库下载最新版本的Java镜像
  • 执行该命令后,Docker会从从指定的Docker Registry中下载标签为8的Java镜像。

2.1.3 列出本地镜像

使用docker images 命令即可列出已下载的镜像。

docker images
  • 执行该命令后,将会看到类似于如下②的表格:
  • REPOSITORY:镜像所在的仓库名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

2.1.4 保存镜像

使用docker save 即可保存镜像。
执行命令:docker save -o /java8u161.tar idmcore/java8u161

docker save -o /java8u161.tar idmcore/java8u161  #将java8u161压缩备份到根目录下面

-o 参数后面跟要把镜像保存的文件路径和名称

在这里插入图片描述

2.1.5 删除本地镜像

使用docker rmi 命令即可删除指定镜像。

执行命令1: docker rmi 5942263ae165

docker rmi 5942263ae165
  • 执行以上指令,就会删除idmcore/java8u161这个镜像

注意:已经使用镜像创建过容器的不能删除

  • 执行命令2:docker rmi -f $(docker images)
docker rmi -f $(docker images)

执行以上指令,就会删除全部镜像

在这里插入图片描述

2.1.6 加载镜像(将上面备份镜像还原)

使用docker load 即可加载镜像

docker load -i java8u161.tar

-i参数后面跟要加载的文件路径和名称

在这里插入图片描述

2.2 Docker容器操作常用指令

2.2.1 新建并启动容器(截图👇)

使用以下docker run 命令即可新建并启动一个容器。该命令是我们最常用的命令了,它有很多选项,下面列举一些常用的选项。

  • ① -i选项:表示运行容器
  • ② -d选项:表示后台运行
  • ③ -t:表示容器启动后会进入其命令行。加入it这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  • ④ -P选项:随机端口映射
  • ⑤-p选项:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
  • ⑥–name :指定容器的名称
  • ⑦ –network选项:指定网络模式,该选项有以下可选参数:
    –network=bridge: 默认选项,表示连接到默认的网桥。
    –network=host:容器使用宿主机的网络。
    –network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。
    –network=none:不配置该容器的网络,用户可自定义网络配置。

执行命令2:

docker run -it --name=java888 idmcore/java8u161 /bin/bash
  • 就能启动一个 idmcore/java8u161 容器,并进入到容器的命令行终端。在本例2个参数,含义如下:
 -t             #容器启动后会进入其命令行
 -i             #运行容器
 --name         #指定容器的名字

2.2.2 列出容器

使用docker ps 命令即可列出运行中的容器。执行该命令后,可看到类似于如下的表格。

执行命令:

docker ps  -a
  • 如需列出所有容器(包括已停止的容器),可使用-a参数;只查看已经退出的容器使用-q参数
    该表格包含了七列,含义如下:
  • ① CONTAINER_ID:表示容器ID。
  • ② IMAGE:表示镜像名称。
  • ③ COMMAND:表示启动容器时运行的命令。
  • ④ CREATED:表示容器的创建时间。
  • ⑤ STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
  • ⑥ PORTS:表示容器对外的端口号。
  • ⑦ NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。
  • 参数 -a 表示列出全部容器包括正在运行的和已经停止的
  • 参数 -q 表示只显示容器的id

在这里插入图片描述

在这里插入图片描述

2.2.3 停止容器

使用docker stop 命令,即可停止容器

执行命令:

docker stop bd7e8eeba434

其中bd7e8eeba434 是容器ID,当然也可使用docker stop 容器名称 来停止指定容器。

在这里插入图片描述

2.2.4 强制停止容器

可使docker kill 命令停止一个或更多运行着的容器。

执 行令:

docker kill 784fd3b294d7

2.2.5 启动已经停止容器

使用docker start 命令,即可启动已经停止的容器。
执行命令:

docker start c9d78b7c2bed

其中 c9d78b7c2bed 是容器ID,当然也可使用docker stop 容器名称 来启动指定容器。

2.2.6 重启容器

可使用docker restart 命令重启一个容器。该命令实际上是先执行了docker stop 命令,然后执行了docker start 命令。
执行命令:

docker restart 784fd3b294d7

2.2.7 进入容器

一些时候,我们可能需要进入运行中的容器。
使用docker exec 命令进入容器
执行命令:

docker exec -it bd7e8eeba434 /bin/bash

在这里插入图片描述

2.2.8 拷贝文件到容器

如果我们需要将文件拷贝到容器内可以使用docker cp命令

执行命令1:

docker cp bbb.txt  ava888:/root
  • 参数说明:容器名称:容器目录 需要拷贝的文件或目录
    执行以上命令即可把容器中的文件拷贝到宿主机指定目录。 (容器拷贝到容器中)

在这里插入图片描述

步骤一:

在这里插入图片描述

步骤二:

在这里插入图片描述

步骤三:

在这里插入图片描述

步骤四:

在这里插入图片描述

步骤五:

在这里插入图片描述

2.2.9 拷贝容器中的文件到本地

执行命令2:

docker cp java888:/root/bbb.txt /usr/local
  • 参数说明:需要拷贝的文件或目录 容器名称:容器目录
    执行以上命令即可把本地文件拷贝到容器指定目录。(容器拷贝到本地)

在这里插入图片描述

2.2.10 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

docker run -di -v /demoo:/root/ddd --name java81 idmcore/java8u161
  • 参数说明:创建容器 添加-v参数 后边为 宿主机目录:容器目录
    如果你共享的是多级的目录,可能会出现权限不足的提示。

在这里插入图片描述

这是因为 idmcore/java8u161 中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

docker run -di -v /demoo:/root/ddd  --privileged=true --name=java81 idmcore/java8u161

步骤一:

在这里插入图片描述

步骤二:

在这里插入图片描述

步骤三:查看是否挂在成功

在这里插入图片描述

2.2.11 删除容器

使用doker rm 命令即可删除指定容器

执行命令1:

docker rm bd7e8eeba434

删除指定容器,该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。
执行命令2:

docker rm -f $(docker ps -a -q)

删除所有的容器。

在这里插入图片描述

2.2.12 查看容器ip

我们可以通过以下命令查看容器运行的各种数据

执行命令1:

docker inspect java7

也可以直接执行下面的命令直接输出IP地址

执行命令2:

docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2

最后跟容器的名称。

在这里插入图片描述

在这里插入图片描述

停掉上面的所有容器,进一步进行总结咯✌✌

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel521-Spark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值