Docker:CentOS7中安装与使用Docker

本文详细介绍了在CentOS7系统中安装和使用Docker的全过程,包括设置Docker镜像源、启动与停止Docker服务、常用命令、容器创建与管理、Docker Compose的使用以及如何部署MySQL、Tomcat、Redis等应用。同时,还涵盖了Dockerfile的编写和私有镜像仓库的搭建与管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker的安装与启动

Docker可以运行在MAC、Windows、CentOS、DEBIAN、UBUNTU等操作系统上,提供社区版和企业版 。

  • 安装在windows系统时,要求windows系统是win10专业版;
  • 安装在Linux系统中时,要求Linux是64位的。如果使用CentOS系统,建议使用CentOS7(因为Docker对CentOS7的支持不太好)

下面,在CentOS7.6-64Bit系统下安装Docker。

(这里用的腾讯云服务器!)

目标:在线安装docker,并使用命令启动、停止docker

实现步骤

  1. 修改yum源为ustc; 使用其他厂商的镜像服务器也可以,常用的如Aliyun
  2. 安装docker;
  3. 修改docker的镜像源为ustc;
  4. 使用docker命令操作docker

这是在线安装,需要联网才行,而且网速要好(下载速度不低于1M/s)。

安装Docker

以下在root用户下执行。

# 1、yum 包更新到最新
yum update

# 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依
赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

# 3、 设置yum源(以下2选1即可)
# 3.1、方案一:使用ustc的(推荐)		这个网站的连接不需要翻墙
yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 3.2、方案二:使用阿里云(可能失败)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 4、 安装docker;出现输入的界面都按 y
yum install -y docker-ce

# 5、 查看docker版本
docker -v

设置镜像源

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

国内比较好用的几个镜像源 :

Docker 官方中国区:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://y0qd3iq.mirror.aliyuncs.com

需要给Linux系统添加一个配置文件:/etc/docker/daemon.json

# 新建目录及文件
$ mkdir /etc/docker # 创建目录
$ vim /etc/docker/daemon.json # 创建docker的配置文件
# 如果系统刚安装时,没有vim工具,可以使用vi指令。或者安装vim
$ sudo yum install vim

# 在daemon.json文件中添加如下内容
{ 
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

# 重启docker服务(docker内运行的所有容器都会停止,这就相当于windwos系统重启,应用程序都会被关闭。)
$ sudo systemctl restart docker

# 验证镜像源配置是否成功
$ docker info|grep Mirrors -A 1	# 会看到配置镜像源信息

如果使用ustc镜像源下载镜像比较慢的话,可以考虑换成阿里云的。

Docker的启动与停止

# 启动docker服务:
systemctl start docker

# 启动docker服务(docker的守护进程)后,运行docker的hello-world程序,来验证是否成功安装并启动
docker run hello-world

# 停止docker服务:
systemctl stop docker

# 重启docker服务:
systemctl restart docker

# 查看docker服务状态:
systemctl status docker

# 设置开机启动docker服务:
systemctl enable docker

1. Docker常用命令

这是docker本身的指令,跟Linux系统的版本就没有关系了!

  • **从这开始,均使用的是guest用户进行的操作。 $符号开关,表示当前用户是非root用户。

先修改一下/etc/sudoers文件的配置内容,给guset赋予能够执行一切指令的权限:

1568293291412

1.1 一些通用命令

# 获取有关Docker版本的信息
$ docker -v

# 获取所有可用Docker命令的列表
$ docker

1.2 镜像相关命令

查看镜像

# 查看当前系统可用的镜像
$ docker images

搜索镜像 + 拉取镜像

# 在线搜索镜像
$ docker search 镜像名称
$ docker search centos

# 拉取镜像
# 就是从Docker仓库下载镜像到本地,镜像名称格式为 “名称:版本号”,如果版本号不指定则是最新的版本
$ docker pull centos:7

删除镜像

要求所删除的镜像不能被任何的容器正在使用,否则需要先删除容器,再删除镜像。

# 查看当前宿主机可用的镜像
$ sudo docker images	# 普通用户只用docker images指令是没权限查看镜像列表的

# 删除镜像
$ sudo docker rmi centos	# 使用名称删除镜像
$ sudo docker rmi 镜像id	   # 按照镜像id删除镜像

# 删除所有镜像
$ sudo docker rmi `docker images -q`	# 反单引

1.3 容器相关命令

容器,也是docker中的核心概念,容器是由镜像运行产生的运行实例。镜像和容器的关系,就如同Java语言中类和对象的关系。 (镜像是类,容器就是对象)

Docker提供的关于容器的操作有:

  • 查看容器
  • 创建容器
  • 启动容器
  • 停止容器
  • 文件拷贝
  • 目录挂载
  • 查看容器ip地址
  • 删除容器

查看容器

# 查看正在运行过的容器
$ sudo docker ps
#查看所有容器
$ sudo docker ps -a

创建容器

可以基于已有的镜像来创建和启动容器,创建与启动容器使用命令:

语法格式:$ sudo docker run [参数列表] 使用的镜像名称或ID /bin/bash

参数说明:

-i:表示运行容器

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

–name :为创建的容器命名。

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

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。

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

交互式容器

什么是交互式容器?启动容器之后会直接进入容器的命令行终端,如果退出容器,则容器停止运行。

命令行终端进入容器中时,使用exit命令退出容器。

# 先查询当前主机中可用的镜像
$ sudo docker images

# 拉取一个镜像;这一步不是每次启动容器都要做的,如果主机中已有此镜像,就无需再拉取了
$ sudo docker pull centos

# 创建并启动名称为 mycentos7_inter 的交互式容器;下面指令中的镜像名称 centos 也可以使用镜像id
# /bin/bash  表示进入容器后,shell脚本(指令)使用的解析器
$ sudo docker run -it --name=mycentos7_inter centos /bin/bash

参数说明:

-i:表示运行容器

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

–name :为创建的容器命名。

创建容器成功后就直接进入了容器,Linux指令中显示的用户标识也跟着变了

[root@030d34106602 /]# 一进入容器,默认是拥有的root用户权限

想要退出当前容器,执行exit指令。

是否创建成功,可以通过$ docker ps$ docker ps -a查看容器。

守护式容器

对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。(docker本身就有一个守护进程,也就是可以在后台运行的进程,它的作用就是保持docker程序处于运行之中。)

命令如下(同一主机中的容器间名称不能重复):

# 创建并启动守护式容器
$ sudo docker run -di --name=mycentos7_daemon centos

# 登录进入容器,命令为:(exit退出时,守护式容器不会停止)
$ sudo docker exec -it container_name (或者 container_id) /bin/bash
$ sudo docker exec -it mycentos7_daemon /bin/bash

参数说明:

-i:表示运行容器

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

–name :为创建的容器命名。

-d:分离模式,在后台运行命令。在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。

然后登录进容器

再使用exit指令退出守护式容器,再用docker ps查看正在运行的容器,可以看到上面启动的守护式容器,还在运行中。

那么问题来了? 我要怎么退出一个守护式容器呢??–>看下面“停止容器”

停止与启动容器

要回到宿主机中来执行docker命令(容器中是没有安装docker的)

# 停止正在运行的容器:docker stop 容器名称或者ID
$ sudo docker stop mycentos7_daemon

# 停止守护式容器后,再查看正在运行的容器中,看看守护式容器有没有被停止
$ sudo docker ps

# 启动已运行过的容器(QQQQ: 没有运行的过的容器,能否用这种方式启动?):docker start 容器名称或者ID
$ sudo docker start mycentos7_daemon

文件拷贝

  • 将linux宿主机中的文件拷贝到容器中

    语法:docker cp 需要拷贝的文件或目录 容器名称:容器目录

# 在主机根目录下,创建一个文件abc.txt
$ sudo touch a.txt

# 在主机目录下,执行指令。
# 复制a.txt到 mycentos7_daemon 容器的 / 目录下		要保证容器已启动
$ sudo docker cp a.txt mycentos7_daemon:/

# 进入 mycentos7_daemon 容器
$ sudo docker exec -it mycentos7_daemon /bin/bash

# 查看容器 / 目录下文件
$ sudo ll

参数说明:

-i:表示运行容器

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

  • 将文件从容器内拷贝出来到linux宿主机中
    语法:docker cp 容器名称:容器目录 需要拷贝的文件或目录
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值