目录
docker介绍和安装
官方网站:Docker: Accelerated, Containerized Application Development
下载docker引擎地址:Install Docker Engine | Docker Documentation
安装步骤
1、卸载原来安装过的docker软件,如果没有安装则可以不用卸载
2、安装yum相关的工具,下载docker-ce.repo文件
3、安装docker-ce软件
4、启动docker服务
5、设置docker服务开机启动
6、测试(安装nginx镜像)
一、docker容器
二、docker镜像
来源:默认从docker官方的网站去下载
https://hub.docker.com/
安装mysql镜像
三、docker仓库
虚拟化:virtualization : 模拟出来的,虚拟的,部署真实的
虚拟化技术:
vmware:workstation 入门级的产品
docker:容器技术的经典代表
kubernetes:(k8s)它是管理容器运行时集群的软件
k8s是建立在docker之上的软件
docker和k8s都是使用go语言的软件
只要是与k8s相关的技术都叫做云原生相关的技术
容器在Linux系统里就是对应一个进程
容器就是运行镜像的地方,在背后就是起到一个进程来运行这个镜像
容器可以理解为一个虚拟机,虚拟机内是不是可以运行许多的软件
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
containerd engine 是容器引擎
docker 是一个容器管理的软件
docker-ce 是服务器端软件 server
docker-ce-cli 是客户端软件 client
docker-compose-plugin 是compose插件,用来批量启动很多容器,在单台机器上
containerd.io 是底层用来启动容器的
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看docker版本
sudo systemctl start docker
docker 启动的每一个容器背后就是一个linux进程
下面我们先下载一个nginx的镜像,并对将其打开(设置nginx镜像的端口,名称等信息)
docker run 是启动容器的命令
-d 表示在后台运行 daemon 守护进程
-p 8090:80 表示指定端口的映射, DNAT模式,访问本机的8090端口,会转发到docker容器的container的80端口去。
--name sc-nginx 是指定容器的名字
最后的nginx 表示的是镜像的名字(填写已经下载号的镜像)
查看启动的docker容器进程 (建议关闭防火墙,然后重启docker服务)
打开浏览器,查看nginx的网页
是一个镜像的可运行的实例,可以使用 Docker REST API 或者 CLI 命令行工具来操作容器,容器的本质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
镜像是打包好的软件 :程序代码、基础系统、依赖关系的软件包、系统库、工具
需要人为去制作。
是一个只读模板,带有创建 Docker 容器的说明,一般来说的,镜像会基于另外的一些基础镜像并加上一些额外的自定义功能来组成。比如,你可以构建一个基于 Centos 的镜像,然后在这个基础镜像上面安装一个 Nginx 服务器,这样就可以构成一个属于我们自己的镜像了。
因此,凡是你想的到的软件,都有一个镜像,我们直接启动镜像就可以了,获得这个软件
docker 容器启动软件,颠覆了我们传统的软件安装方式
docker info命令 :可以查看许多docker容器的信息,是整个docker容器信息的汇总
Dockerfile 是制作docker镜像的文件,可以理解为一个配方文件
安装mysql5.7.39版本的镜像
查看docker镜像:
启动mysql镜像:
如果我们的docker容器启动镜像的时候出现了问题:
我们需要查看docker 日志查找问题:(docker logs +序列号/镜像名称)
docker 删除镜像
docker 删除容器
获取两个mysql容器,用来互相连接
[root@mysql ~]# docker run -d --name sc-mysql-1 -p 33060:3306 -e MYSQL_ROOT_PASSWORD='123456' mysql:5.7.35
ac7d2604419784772c11d000922d3e221cb22395f2ddcf5fefde8f7ec7bfa4bc
[root@mysql ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac7d26044197 mysql:5.7.35 "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 33060/tcp, 0.0.0.0:33060->3306/tcp, :::33060->3306/tcp sc-mysql-1
6efbccb9090a nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp sc-nginx
[root@mysql ~]# docker run -d --name sc-mysql-2 -p 33061:3306 -e MYSQL_ROOT_PASSWORD='123456' mysql:5.7.35
f3d9f1f6a31b5937620282af8e3d2d87bd2acb849bba9f0c43f9ad1cf616be2d
[root@mysql ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3d9f1f6a31b mysql:5.7.35 "docker-entrypoint.s…" 9 seconds ago Up 8 seconds 33060/tcp, 0.0.0.0:33061->3306/tcp, :::33061->3306/tcp sc-mysql-2
ac7d26044197 mysql:5.7.35 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 33060/tcp, 0.0.0.0:33060->3306/tcp, :::33060->3306/tcp sc-mysql-1
6efbccb9090a nginx "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp sc-nginx
[root@mysql ~]#
进入mysql容器里
docker exec 进入容器里面、执行命令 execute
-it 表示开启一个终端、交互式进入
[root@mysql ~]# docker exec -it sc-mysql-1 bash
root@ac7d26044197:/#
登录mysql
使用Navcat远程连接mysql容器
就是集中存放镜像的地方(像是镜像的集市,可以下载别人制作的镜像)
官方仓库docker hub官网(https://hub.docker.com/)
registry 是用来存储 Docker 镜像的仓库,Docker Hub 是 Docker 官方提供的一个公共仓库,而且 Docker 默认也是从 Docker Hub 上查找镜像的,当然你也可以很方便的运行一个私有仓库,当我们使用 docker pull 或者 docker run 命令时,就会从我们配置的 Docker 镜像仓库中去拉取镜像,使用 docker push 命令时,会将我们构建的镜像推送到对应的镜像仓库中,registry 可以理解为用于镜像的 github 这样的托管服务。