【Linux 篇】Docker 启动和停止的精准掌舵:操控指南

发布于:2024-11-28 ⋅ 阅读:(32) ⋅ 点赞:(0)


【Linux 篇】Docker 启动和停止的精准掌舵:操控指南

💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

前言

docker是一个开源的应用容器引擎,基于go语言开发。docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以是实现虚拟化。相互之间不会有任何接口,容器的开销性能极低
本文我们来介绍docker的使用方法

docker基本命令

操作描述 命令
启动docker systemctl start docker
停止docker systemctl stop docker
重启docker systemctl restart docker
查看docker状态 systemctl status docker
开机启动 systemctl enable docker
查看docker概要信息 docker info
查看docker帮助文档 docker --help
1. 帮助手册

指令: docker --help
在这里插入图片描述
在这里插入图片描述

2. 指令介绍
操作命令 操作描述
cp 在本地文件系统和容器之间进行文件或者文件夹拷贝
exec 登录一个容器,使命令行操作正在运行的容器
images 镜像的集合查询
ps 容器列表
pull 下载镜像
restart 重启一个或多个容器
rm 删除一个或多个容器
rmi 删除一个或多个镜像
run 创建一个容器并运行起来
save 导出镜像到一个文件(tar)中
search 搜索镜像
start 启动一个或多个已经停止的容器
stop 停止一个或多个正在运行的容器

常用命令

镜像的相关命令

1. 查看镜像

[root@CentOS02 docker]# docker images

REPOSITORY :镜像名称
TAG :镜像标签
IMAGE ID :镜像ID
CREATED :镜像的创建日期(不是获取该镜像的日期)
SIZE :镜像大小

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

2. 搜索镜像
[root@CentOS02 docker]# docker search tomcat

在这里插入图片描述

在这里插入图片描述
NAME :仓库名称
DESCRIPTION :镜像描述
STARS :用户评价,反应一个镜像的受欢迎程度
OFFICIAL :是否是官方
AUTOMATED:自动构建,表示该镜像有docker Hub自动构建流程创建

3. 拉取镜像

拉取镜像就是从docker仓库下载镜像到本地,镜像名称格式化为【名称:版本号】,如果版本号不指定则是最新版本

命令:docker pull 镜像名称

[root@CentOS02 docker]# docker pull jwilder/nginx-proxy

下载一个nginx的镜像,需要注意:如果下载的时候,不指定版本,会下载最新版本
在这里插入图片描述
刚刚下载的镜像通过docker images就可以查看

[root@CentOS02 docker]# docker images

在这里插入图片描述

4. 删除镜像

可以按照镜像id删除镜像,命令如下:docker rmi 镜像ID
[root@CentOS02 docker]# docker rmi 6cd25f82a14b删除多个镜像

在这里插入图片描述

删除单个镜像(-f 强制删除):docker rmi -f 镜像ID
删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除所有镜像:docker rmi -f $(docker images -qa)

5. 从Docker Hub拉取

docker hub是Docker官方维护的一个公共仓库,其中已经包括了数量超过2650000的镜像;大部分需求都可以通过在Docker Hub中直接下载镜像来实现。

下载tomcat 直接粘贴
[root@CentOS02 ~]# docker pull tomcat
在这里插入图片描述

容器的相关命令

1. 查看容器

查看正在运行的容器 docker ps
查看所有容器 docker ps -a查看所有的容器 也就是相当于all
查看最后一次运行的容器 docker ps -l
查看停止的容器 docker ps -f status=exited

2. 创建与启动容器

什么是宿主机?

就是主机,这个概念是相对子机而言的,比如你安装有虚拟机的话,那么相对于虚拟机而言,你正在使用的计算机就是宿主机,虚拟机是你安装在主机上的,必须在主机上才能运行,主机就是一个宿主机。

创建容器常用的参数:
创建容器命令:docker run

-i :表示运行容器

-t :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端

–name:为创建的容器命名

-v :表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上修改,然后共享到容器上。

-d :在run后面加上-d参数,则会创建一个守护容器在后台运行

-p :表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

(1)交互式创建容器

docker run -it --name=容器名称:标签 /bin/bash

比如:docker run -it --name=mycentos centos:7 /bin/bash 下面用到

docker run :表示创建容器
-it : 表示运行容器并进入它的命令行
–name=mycentos : 给当前容器命名

centos:7 :使用该镜像创建

/bin/bash :放在镜像后面的是命令,这里我们希望有一个交互式的shell. 因此用的就是/bin/bash

在software中新建dockerTar 新建software
在这里插入图片描述
需要执行yum -y install lrzsz命令进行安装。
安装rz进行上传文件
先上传 centos.tar
加载镜像

[root@CentOS02 dockerTar]# docker load -i centos.tar 

在这里插入图片描述

3. 查看镜像
[root@CentOS02 dockerTar]# docker images

在这里插入图片描述

4. 启动容器
[root@CentOS02 dockerTar]# docker run -it --name=mycentos7 centos:7 /bin/bash

在这里插入图片描述
创建好容器,并且已经进入到容器内部了,可以直接观察前面中括号里面的内容发现,跟容器之前的不一样了,

并且通过dir命令,会发现,其实容器内部也是一个centos,我们可以把每个容器都看成一个小电脑或者服务器

[root@2aa51717d3b5 /]# dir

在这里插入图片描述

5. 查看容器

重新开了一个新的会话,查看刚刚创建的容器是否已经有了

查看正在运行的容器 docker ps

[root@CentOS02 ~]# docker ps

在这里插入图片描述

6. 退出当前容器

: exit 退出
在这里插入图片描述
在这里插入图片描述
退出之后 ,容器也退出了,没有删除

创建后台容器

//docker run -id --name=mycentos2 cnetos:7

1. 守护式方式创建容器

创建一个守护式容器;
如果对于一个长期运行的容器来说,我们可以创建一个守护式容器。

命令如下(容器名称不能重复):守护容器可以理解成在后台运行的容器

守护式容器和交互式容器的创建方式区别:
① -it 换成-id
② 去掉后面的 /bin/bash

docker run -id --name=容器名称 镜像名称:标签
比如:docker run -id --name=mycentos7_2 centos:7

[root@CentOS02 dockerTar]# docker run -id --name=mycentos7_2 centos:7

在这里插入图片描述
通过docker ps查看容器已经是运行的状态
在这里插入图片描述

2. 进入守护式容器

docker exec -it 容器名称(或者容器ID)/bin/bash
比如:docker exec -it mycentos7_2 /bin/bash

[root@CentOS02 dockerTar]# docker exec -it mycentos7_2 /bin/bash

在这里插入图片描述
已经进入到容器内部了,如果现在退出exit,然后查看容器的docker ps是否还在后台运行
在这里插入图片描述
在这里插入图片描述

[root@CentOS02 dockerTar]# docker exec -it mycentos7_2 /bin//bash

在这里插入图片描述
关闭容器
换一个窗口
在这里插入图片描述

停止与启动容器

先通过docker ps 查看正在运行的容器

1. 停止单个容器

如果你要停止一个正在运行的 Docker 容器,可以使用以下命令:

docker stop [容器名称或容器ID]

docker stop [容器名称或容器ID]
例如,有一个名为 my_docker的容器,要停止它,可以执行:

docker stop my_docker

或者如果知道容器的 ID(假设容器 ID 是 abc123def456),则可以这样执行:

docker stop abc666
2. 启动单个容器

要启动一个已经停止的 Docker 容器,可以使用以下命令:

docker start [容器名称或容器ID]

比如要启动之前停止的名为 my_container 的容器:

docker start my_docker

若通过容器 ID 启动(假设容器 ID 为 abc123def456):

docker start abc666
3.文件拷贝

我们需要在容器内部安装一个软件,软件首选需要有安装包,我们就需要把安装包拷贝到容器内。我们通常的操作是先把文件上传到宿主机,然后我们在将文件从宿主机拷贝到容器内的某个目录下面进行安装。

将linux宿主机中的文件拷贝到容器内可以使用命令

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

docker cp 需要拷贝到的文件或目录 容器名称:容器目录
例如:docker cp anacods-ks.cfg mycentos2:/usr/local

拷贝一个文件到mycentos2的/usr/local/文件下面,拷贝完成之后,删除文件,然后在mycentos2拷贝过来

在~目录下面就有此文件
创建文件

[root@localhost ~]# touch anaconda-ks1.cfg

[root@CentOS02 ~]# docker cp anaconda-ks1.cfg mycentos7:/root/mytest

在这里插入图片描述

4. 目录挂载

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

创建容器 添加-v参数 后边为 宿主机目录:容器目录, 例如:

创建并启动容器 mycentos7,并挂载linux中/root/myDocker/ 目录到容器的/root/myDocker;
也就是在linux中的/root/myDocker/中操作相当于对容器相应目录操作

docker run -di --name=容器的名字 -v /root/myDocker:/root/myDocker centos:7

[root@CentOS02 ~]# docker run -id --name=mycentos7_3 -v /root/myDocker/:/root/myDocker centos:7

[root@localhost ~]# docker exec -it mycentos7_3 /bin/bash

[root@219d0ac1a7a1 /]# cd /root/
[root@219d0ac1a7a1 ~]# ll
total 4
-rw-------. 1 root root 3416 Nov 13  2020 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jun  3 11:14 myDocker

在这里插入图片描述
通过docker ps 查看正在运行的容器,在创建容器并且进行目录挂载,然后再通过docker ps查看刚刚创建的容器是否已经创建
[root@localhost ~]# cd /root/myDocker/
[root@localhost myDocker]# ll
总用量 0
在这里插入图片描述

进入到myDocker 目录,通过dir查看是否有文件,通过vim test,创建一个文件,进入test文件,随便输入一些数据
[root@CentOS02 ~]# cd /root/myDocker/
[root@CentOS02 myDocker]# vi test
hellolinux
在这里插入图片描述
进入目录随便输入一些数据,退出保存

登录容器,查看刚刚输入的内容

[root@CentOS02 ~]# docker exec -it mycentos7_3 /bin/bash

进入容器查看目录

[root@f26442fb12c0 /]# cd /root/
[root@f26442fb12c0 ~]# cd myDocker/
[root@f26442fb12c0 myDocker]# ll
total 4
-rw-r--r--. 1 root root 9 Jun 27 06:07 test
[root@f26442fb12c0 myDocker]# cat test 
dskjkkll

在这里插入图片描述

如果你共享的是多级目录,可能会出现权限不足提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true
来解决挂载的目录没有权限问题

5. 查看容器ip地址

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

docker inspect 容器名称 (容器ID)

[root@CentOS02 myDocker]# docker inspect mycentos7_3

在linux宿主机下查看mycentos7的ip
在这里插入图片描述
通过inspect可以查看的信息太多,如果想单纯有针对性的查看某个信息,也可以直接执行下面的命令直接输出IP地址

先执行命令再进行下面ifconfig

[root@f26442fb12c0 ~]# yum -y install net-tools


ifconfig

删除容器

1. 删除指定的容器

docker rm 容器名称(容器ID)
docker rm mycentos7

2、删除容器的时候,如果容器在运行,会报错,必须先停止容器

2. 查看正在运行的容器

docker ps
删除正在运行的容器
docker rm mycentos7
停止容器
docker stop mycentos7

3. 查看所有的容器

查看所有的容器,看看是否有mycentos7
docker ps -a
删除mycentos7容器
docker rm mycentos7
删除完之后,在查看mycentos7容器是否还存在
docker ps -a

也可以使用-f参数进行强制删除:docker rm -f 容器名称(容器ID)


在这里插入图片描述

结语

意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
logo 我是意疏 下次见!