Docker安装、Docker基本操作
一、Dokcer安装
1.安装
# 1、yum 包更新到最新,需要几分钟时间(注意:也可以直接跨过)
sudo yum update
# 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
# 3.1、方案一:使用ustc的(默认的)
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 3.2、方案二:使用阿里云(推荐使用)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4、 安装docker;出现输入的界面都按 y
sudo yum install -y docker-ce
# 5、 查看docker版本
docker -v
2.设置镜像加速器
默认的镜像是ustc,而ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
1、 编辑文件/etc/docker/daemon.json
# 执行如下命令:
mkdir /etc/docker 表示创建一个文件夹
#如果有该文件则进入编辑状态,如果没有,则创建该文件然后进入编辑状态
vi /etc/docker/daemon.json
2、在当前文件中加入阿里云的加速器
{
"registry-mirrors": ["https://7oc12mqc.mirror.aliyuncs.com"]
}
注意:[“自己的镜像加速器地址”]
注意:docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
4、重启操作
sudo systemctl daemon-reload
sudo systemctl restart docker
3.Docker启动与停止命令
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
# 启动docker服务:
systemctl start docker
# 停止docker服务:
systemctl stop docker
# 重启docker服务:
systemctl restart docker
# 查看docker服务状态:
systemctl status docker
# 设置开机启动docker服务:
systemctl enable docker
#查看防火墙状态
systemctl status firewalld.service
#停止防火墙--临时停止
systemctl stop firewalld.service
#停止防火墙-终止
systemctl disable firewalld.service
#启动防火墙
systemctl start firewalld.service
二、Docker基本操作
2.1.镜像操作
2.1.1.镜像名称
首先来看下镜像的名称组成:
- 镜名称一般分两部分组成:[repository]:[tag]。
- 在没有指定tag时,默认是latest,代表最新版本的镜像
如图:
这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。
2.1.2.镜像命令
常见的镜像操作命令如图:
常用镜像命令集:
#查看本地镜像
docker images
# 如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search 镜像名称
# 拉取镜像就是从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本
docker pull 镜像名称
# 可以按照镜像id删除镜像,命令如下:
docker rmi 镜像id
# 删除所有镜像,注意:包含着docker images -q的符号是波浪号那个键
docker rmi `docker images -q`
镜像迁移与备份命令:
其中涉及到的命令有:
docker commit 将容器保存为镜像
docker save 将镜像备份为tar文件
docker load 根据tar文件恢复为镜像
容器保存为镜像命令
#命令形式:
docker commit 现有容器名称 镜像名称
注意:该容器必须是停止状态。并且当前本地镜像中没有该镜像名称
将镜像备份成tar文件命令
#命令形式:
docker save –o tar文件名 镜像名
#-o 输出到的文件
根据tar文件恢复为镜像命令
#命令形式:
docker load -i tar文件名
#-i 输入的文件
2.2容器操作
2.2.1.容器相关命令
容器操作的命令如图:
容器保护三个状态:
- 运行:进程正常运行
- 暂停:进程暂停,CPU不再运行,并不释放内存
- 停止:进程终止,回收进程占用的内存、CPU等资源
容器,也是docker中的核心概念,容器是由镜像运行产生的运行实例。镜像和容器的关系,就如同Java语言中类和对象的关系。
Docker提供的关于容器的操作有:
查看容器
#查看正在运行的容器使用命令
docker ps
#查看所有容器使用命令
docker ps -a
创建容器
#创建并运行一个容器,处于运行状态
docker run
进入容器内部
docker exec -it 容器名称 bash
启动容器
docker start 容器名称[或者容器ID]
停止容器
docker stop 容器名称[或者容器ID]
文件拷贝
将linux宿主机中的文件拷贝到容器内可以使用命令:
#第一步, 在Linux中创建一个文件abc.txt
touch abc.txt
#第二步,复制abc.txt到nginx的容器的 /表示根目录
docker cp 文件名称 容器名称:/
#示例:
docker cp abc.txt nginx:/
#第三步, 进入nginx容器
docker exec -it nginx /bin/bash
# 第四步,查看容器 / 目录下文件 是否有该文件
ls
docker这个命令是在linux系统中安装的,所以说容器中没有docker这个命令
将文件从容器内拷贝出来到linux宿主机使用命令:
# docker cp 容器名称:容器目录 需要拷贝的文件或目录
#进入容器后创建文件cba.txt
touch cba.txt
# 退出容器
exit
# 在Linux宿主机器执行复制;将容器mycentos2的/cba.txt文件复制到 宿主机器的/root目录下
docker cp nginx:/cba.txt /root
查看容器ip地址
可以通过以下命令查看容器运行的各种数据 docker inspect 容器名称(容器ID)
# 在linux宿主机下查看 nginx 的ip
docker inspect nginxclear
删除容器
#删除指定的容器:
docker rm 容器名称(容器ID)
#删除所有容器:
docker rm `docker ps -a -q`
注意:只能删除停止状态下的容器
暂停容器:
#让一个运行的容器暂停
docker pause nginx
让一个容器从暂停状态恢复运行
docker unpause nginx
2.3数据卷(容器数据管理)
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。
这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了
2.3.1.挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:
docker run \
--name mn \
-di \
-v html:/root/html \
-p 8080:80 \
nginx
这里的-v就是挂载数据卷的命令:
-v html:/root/htm
:把html数据卷挂载到容器内的/root/html这个目录中