Docker基础知识

176 阅读3分钟

1.docker是什么?

它是一种容器技术,里面装载了软件和所需要的环境,解决了软件跨环境报错的问题。

2.安装docker

  1. 更新yum包:yum update
  2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置国内的yum源,加快下载速度: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

3.docker架构

  1. 镜像:相当于是root的文件系统
  2. 容器:镜像和容器的关系就类似于类和对象,镜像是静态的,而容器是由镜像创建出来的,是动态的,可以启动,停止,删除等
  3. 仓库:可以用来存放镜像

4.配置镜像加速器

  1. 登录阿里云,找到容器镜像服务,并把配置镜像加速器的代码粘贴执行
  2. 查看是否配置成功:/etc/docker/daemon.json ,出现配置代码即成功

1.png

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["[https://4ir4oh3j.mirror.aliyuncs.com](https://4ir4oh3j.mirror.aliyuncs.com/)"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

5.docker的命令

  1. docker服务相关的命令:

systemctl start|stop|disable|restart|enable|status docker

  1. docker镜像相关的命令:
  • 查看docker镜像的版本:docker image inspect 镜像名:latest|grep -i version
  • 查看本地所有镜像:docker images
  • 查看本地镜像的id:docker images -q
  • 搜索镜像:docker search 镜像名称
  • 拉取镜像:docker pull 镜像名称:版本号(镜像版本号可以到:Docker Hub Container Image Library | App Containerization查询)
  • 删除镜像:docker rmi 镜像id
  1. docker容器相关的命令
命令作用参数说明
docker ps [-aq]查看容器-a:查看所有容器;-q:只查看容器id
docker run [-it] [-id] [--name=容器名] 镜像:版本号创建并启动容器-i:保持容器运行;-t:为容器重新分配一个伪输入终端;-d:以后台模式运行容器。需要使用docker exec进入容器;—name:为容器命名(-it创建的容器称为交互式容器,退出后容器会关闭。-id创建的容器称为守护式容器,退出后,容器不会关闭 )
docker exec -it 容器名 /bin/bash进入容器退出后,容器不会关闭
docker start 容器名称启动容器
docker stop 容器名称停止容器
docker rm 容器名称删除容器
docker inspect 容器名称查看容器具体信息
docker rm docker ps -aq删除所有容器-a:显示所有容器;-q:显示容器id

6.docker容器的数据卷

  1. 数据卷是什么?

数据卷是宿主机中的一个文件或目录

  1. 数据卷的作用?

数据卷的目录和容器的目录绑定后,会实现数据同步,相当于备份了数据,一旦容器被破坏,里面的数据丢失,还可以通过挂载相应的数据卷找回

  1. 注意事项:

一个数据卷可以被多个容器挂载

一个容器也可以绑定多个数据卷

  1. 配置数据卷

创建容器并启动时配置数据卷:

docker run … -v 宿主机目录(或文件):容器目录(或文件)

注意:

  • 目录必须是绝对路径
  • 如果目录不存在,则会自动创建
  1. 配置数据卷容器(只需要设置容器目录,数据卷目录会自动分配,简化了操作):

创建数据卷容器c1并启动:

docker run -it -v /volume --name=c1 centos:7

创建容器c2并启动时配置数据卷c1:

docker run -it --volumes-from c1 --name=c2 centos:7

7.Dockerfile

容器转为镜像:docker commit 容器id 镜像名称:版本号

压缩镜像文件:docker save -o 压缩文件名称.tar 镜像名称:版本号

解压镜像文件:docker load -i 压缩文件名称

dockerfile是什么?

就是一个文本文件,里面包含了多条指令

制作centos镜像

  1. 新建文本文件
  2. 复制粘贴下面的代码
FROM centos:7
MAINTAINERguanghui <2285190802@qq.com>
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash

参数说明:

  • FROM:定义父镜像
  • MAINTAINER:定义作者信息
  • RUN:执行安装命令
  • WOEKDIR:定义默认的工作目录
  • CMD:定义容器启动执行的命令
  1. 构建镜像:docker build -f 文件路径 -t 镜像名:版本号 .

8.Docker Compose

服务编排:按照一定规则批量管理容器

  1. Dokcer Compose是什么?

一个服务编排的工具

  1. 安装
# 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
  1. 创建yml文件
database: 
	image: mysql:5.6
	ports:
		- "3306:3306"
web:
	image: php-mysql-app
	ports:
		- "80:80"

注意:每个key的”:“和-后面要有空格

  1. 同时创建并运行:docker-compose up –d

9.Docker私有仓库

  1. 私有仓库搭建
# 1、拉取私有仓库镜像
docker pull registry
# 2、启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器,输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功
# 4、修改daemon.json
vim /etc/docker/daemon.json
# 在上述文件中添加一个对象,保存退出。此步用于让docker信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器的真实ip
"insecure-registries":["私有仓库服务器ip:5000"]
# 5、重启docker服务
systemctl restart docker
docker start registry
  1. 上传镜像
# 1、标记镜像为私有仓库的镜像(这里使用centos版本为7的镜像做演示)
docker tag centos:7 私有仓库服务器IP:5000/centos:7
# 2、上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7

上传成功后,发现repositories里面已经有内容了

2.png

  1. 拉取镜像

docker pull 私有仓库服务器ip:5000/镜像名称:版本号