1 前言
1.1 docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。(百度百科)
Docker 从17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们使用社区版就可以满足开发、部署及运维需求了。
1.2 docker官网
Docker: Accelerated, Containerized Application Development
1.3 安装环境
Win10主机+VMware15.5+Centos7.9,root用户登录
如果使用其它linux系统(ubuntu),或者在物理机上安装,过程类似。
2 安装
2.1 安装准备
Docker要求CentOS系统的内核版本高于3.10,先用下边命令检查内核版本是否符合要求。
$ uname -r
更新yum包到最新版本
$ yum update
如果系统之前安装过docker,用下边命令先卸载旧的版本;如果没安装过,那么跳过下边步骤
$ yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装所需的软件包
$ yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置稳定的仓库,这里使用阿里云镜像,下载速度快
$ yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.2 安装Docker引擎
$ yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
等待一会
检查是否安装成功:显示 Docker 版本号即安装成功
$ docker -v
2.3 启动docker
$ systemctl start docker
查看docker是否启动成功
$ systemctl status docker
查看docker已安装镜像,首次安装,所以没有可用的镜像
$ docker images
那么下边我们以mysql为例,介绍在docker中如何安装镜像应用。
3 docker中安装mysql
考虑到mysql的兼容性和稳定性,这里版本不使用最新版本8.x,而是使用mysql5.7.35
3.1 mysql镜像地址
修改镜像文件拉取地址,打开/etc/docker/daemon.json,在下边添加如下内容
$ vi /etc/docker/daemon.json
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
Esc,:wq保存文件,并退出vi
3.2 拉取mysql镜像
使用docker pull 拉取docker hub仓库中mysql镜像,这里选择拉取指定版本。如果拉取mysql最新版本,则可以使用docker pull mysql
$ docker pull mysql:5.7.35 #拉取mysql5.7.35版本
$ docker pull mysql :latest #拉取mysql最新稳定版本
3.3 创建运行mysql容器
$ docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-v /mydata/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.35
参数说明:
docker run 创建一个新的容器 , 同时运行这个容器
–name mysql 启动容器的名字
-d 后台运行
-p 3306:3306 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口
–restart unless-stopped 容器重启策略,在docker重启时重启当前容器
-v /mydata/mysql/data:/var/lib/mysql 将mysql储存文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root 设置root用户的密码
mysql:5.7.35 启动哪个版本的mysql(本地镜像的版本)
\ shell 命令换行符
注意:docker run中使用参数 –v,用来挂载数据目录、配置文件、日志等。这样重启mysql实例后数据不会丢失。
查看安装和运行的镜像
$ docker images
$ docker ps
-a 查看已经创建的容器
-s 查看已经启动的容器
进入mysql
$ docker exec -it mysql /bin/bash #或者下边命令
$ docker exec -it mysql bash
3.4 登录mysql
mysql -uroot -p
3.5 mysql操作
show databases;
create database mytest;
use mytest;
create table user(id VARCHAR(20),name VARCHAR(25),age INT(4));
insert into user values('1','cc','18');
3.6 Navicat for MySQL连接mysql
4 docker常用命令一览
4.1 docker操控
systemctl start docker #启动Docker服务
systemctl stop docker #停止Docker服务
systemctl restart docker #重启Docker服务
systemctl status docker # 看Docker服务状态
systemctl enable docker #设置Docker开机启动
systemctl disable docker #取消Docker开机启动
4.2镜像操作
docker images #查看docker已安装所有镜像
docker rmi -f img_name or 镜像id #删除镜像名为img_name的镜像
docker build -t xxx:v1 . #创建镜像,标签为 xxx:v1
docker save 镜像id -o xxx.tar #打包镜像
docker load -i xxx.tar #加载镜像
4.3容器操作
docker ps -a #查看已经创建的容器
docker ps -s #查看正在运行的容器
docker run #创建运行容器,语法见3.3
docker start con_name or 容器id #启动容器名为con_name的容器
docker stop con_name or 容器id #停止容器名为con_name的容器
docker rm -f con_name or 容器id #删除容器名为con_name的容器
docker rename old_name new_name #重命名一个容器
docker logs -f con_name or 容器id #查看容器控制台打印信息
docker exec -it con_name /bin/bash #进入名为con_name的容器内部
docker kill -s KILL con_name #强制关闭名为con_name的容器