前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Linux 篇】Docker 启动和停止的精准掌舵:操控指南

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

作者头像
意疏
发布2024-11-25 15:36:56
发布2024-11-25 15:36:56
27500
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数: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. 搜索镜像
代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 docker]# docker search tomcat

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

3. 拉取镜像

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

命令:docker pull 镜像名称

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 docker]# docker pull jwilder/nginx-proxy

下载一个nginx的镜像,需要注意:如果下载的时候,不指定版本,会下载最新版本

刚刚下载的镜像通过docker images就可以查看

代码语言:javascript
代码运行次数:0
复制
[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 加载镜像

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 dockerTar]# docker load -i centos.tar 
3. 查看镜像
代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 dockerTar]# docker images
4. 启动容器
代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 dockerTar]# docker run -it --name=mycentos7 centos:7 /bin/bash

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

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

代码语言:javascript
代码运行次数:0
复制
[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

代码语言:javascript
代码运行次数:0
复制
[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

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 dockerTar]# docker exec -it mycentos7_2 /bin/bash

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

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 dockerTar]# docker exec -it mycentos7_2 /bin//bash

关闭容器 换一个窗口

停止与启动容器

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

1. 停止单个容器

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

代码语言:javascript
代码运行次数:0
复制
docker stop [容器名称或容器ID]

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

代码语言:javascript
代码运行次数:0
复制
docker stop my_docker

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

代码语言:javascript
代码运行次数:0
复制
docker stop abc666
2. 启动单个容器

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

代码语言:javascript
代码运行次数:0
复制
docker start [容器名称或容器ID]

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

代码语言:javascript
代码运行次数:0
复制
docker start my_docker

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

代码语言:javascript
代码运行次数:0
复制
docker start abc666
3.文件拷贝

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
复制
[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

代码语言:javascript
代码运行次数:0
复制
[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

进入目录随便输入一些数据,退出保存

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

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 ~]# docker exec -it mycentos7_3 /bin/bash

进入容器查看目录

代码语言:javascript
代码运行次数:0
复制
[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)

代码语言:javascript
代码运行次数:0
复制
[root@CentOS02 myDocker]# docker inspect mycentos7_3

在linux宿主机下查看mycentos7的ip

通过inspect可以查看的信息太多,如果想单纯有针对性的查看某个信息,也可以直接执行下面的命令直接输出IP地址

先执行命令再进行下面ifconfig

代码语言:javascript
代码运行次数:0
复制
[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)

结语

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

我是意疏 下次见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【Linux 篇】Docker 启动和停止的精准掌舵:操控指南
  • 前言
    • docker基本命令
    • 常用命令
    • 容器的相关命令
    • 创建后台容器
    • 停止与启动容器
    • 删除容器
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档