简介
Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它是内核级的虚拟化。期望达到使项目运行环境一次封装,到处运行的目的
。
利用docker创建的运行环境叫做docker容器
,容器是通过docker镜像
创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。最大的公有仓库是官方Docker Hub
。
docker安装及启动
#安装docker
yum install docker
#查看版本验证是否安装成功
docker -v 或 docker --version
#启动docker
service docker start
#关闭docker
service docker stop
#重启docker
service docker restart
docker基本操作命令(安装mysql演示)
-
首先启动docker
service docker start
-
下载镜像
docker pull mysql
默认获取最新版本,即TAG
为latest
的,如果要获取其他版本(例如5.6),则需要使用docker pull mysql:5.6
-
列出所有镜像
docker images
-
启动镜像
docker run --name myMysql -e MYSQL_ROOT_PASSWORD=sgcc -d -i -p 3306:3306 mysql
--name
指定容器的名字 这里设置的名字为myMysql 最后的mysql表示要运行的镜像名字 有tag的加上tag 如 mysql:5.6 默认为latest,可以省略.
-e
设置环境变量,这里设置密码为sgcc
-d
后台运行
-p
3306:3306 端口映射,容器内部端口(:后面)映射到主机的端口(:前面)
-i
以交互模式运行容器 -
查看存在的容器信息
docker ps -a
不加 -a 仅列出正在运行的
-
进入到容器内部进行操作
docker exec -it myMysql /bin/bash
-
mysql远程连接授权
登录mysql 使用设置的密码sgcc
mysql -uroot -p
授权
grant all privileges on *.* to 'root'@'%' with grant option;
mysql 8.0以上用这个语句授权 无需 identified BY ‘密码’
mysql 8.0以前用下面这个语句授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified BY 'sgcc' WITH GRANT OPTION;
测试连接(8.0以上会出现这样 需要修改密码)
查看用户信息
select host,user,plugin,authentication_string from mysql.user;
备注:host为 % 表示不限制ip , localhost表示本机使用 , plugin非mysql_native_password 则需要修改密码
修改密码授权(后面root表示自己更改的密码)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
再次连接测试成功
-
生成新的镜像
docker commit myMysql huangyzx/mysql:v8
我们修改配置什么的可以生成一个新的镜像
-
提交本地镜像到https://cloud.docker.com/上去
docker push huangyzx/mysql
注:
先登录docker login
注:docker commit myMysql huangyzx/mysql:v8 huangyzx/mysql:v8 镜像名里面包含了 我注册的账户名huangyzx,这里需要一致,否则无法push
-
启动/停止/重启 容器
docker start/stop/restart myMysql
myMysql为容器名 也可以是容器id
-
删除容器(保证是停止状态)
docker rm myMysql
myMysql 是容器名 也可以是容器id
-
删除镜像
docker rmi mysql:v8.0
mysql:v8.0 容器的repository:tag 也可以是image id
注:需要先删除镜像中的容器,再删除该镜像,相同imgage id 根据repository:tag