Docker
Docek是一种容器技术。容器是一种轻量级、可移植、自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行。
使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。
Docker安装
安装docker会用到一下命令
//更新apt-get
apt-get update
//安装docker
apt-get install docker.io
//配置加速器
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com",
"https://ytji6dx6.mirror.aliyuncs.com"
]
}
EOF
//重启daemon
systemctl daemon-reload
//重启docker
systemctl restart docker
安装截图如下
第一步:更新apt-get命令
第二步:安装docker
第三步:配置加速器
第四步:重启daemon和Docker
Docker基本使用
docker运行
docker run -p 3306:3306 --name mymysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
说明:
docker run
:docker从镜像启动一个容器命令
--name
:这是docker run命令的参数,给要启动的容器起个名字
-p
:端口映射,前面的是宿主端口号,后面的是容器端口号
-v
:挂载宿主机目录到镜容器里,前面的是宿主机目录,后面的是容器目录,那么后面的目录为什么是/var/lib/mysql呢?执行docker inspect -f {{.Config.Volumes}} bob-mysql
就可以看到了
-e
——指的是环境变量,在启动MySQL镜像时,可以传入一个或多个环境变量修改MySQL实例的配置。这里一定要注意的是启动容器的数据目录已经包含了数据库,这时环境变量就不起作用了。
MySQL镜像支持一下环境变量
MYSQL_ROOT_PASSWORD
—— 设置MySQL root用户的密码MYSQL_DATABASE
—— 指定在镜像启动时创建的数据库名称,如果同时指定了MYSQL_USER
,MYSQL_PASSWORD
,则会授予该用户对这个数据库ALL的权限(GRANT ALL)MYSQL_USER
,MYSQL_PASSWORD
—— 创建一个用户并设置它的密码MYSQL_ALLOW_EMPTY_PASSWORD
—— 设置为yes
允许容器启动时root用户密码留空MYSQL_RANDOM_ROOT_PASSWORD
—— 为root用户生成随机密码(使用pwgen
)MYSQL_ONETIME_PASSWORD
—— 设置root用户初始化完后过期,强制登录时修改密码。注意这个功能只支持MySQL 5.6+
查看镜像版本
docker version
镜像下载
docker pull mysql:5.6
说明:
- 这里
mysql:5.6
是镜像名称和版本号,若是不确定版本,可以使用docker pull mysql
则直接下载最新的版本
查询镜像
docker image ls
删除镜像
docker rmi mysql
查看运行的容器
docker ps
说明:
docker ps -a
:显示所有的容器
docker ps
:显示运行的容器
更多命令使用方法docker ps --help
进入容器
docker exec -it id /bin/bash
查看容器日志
# 退出容器
docker logs -f id
容器停止/启动
docker stop/start id
删除容器
docker rm 容器id
仓库登录
docker login
镜像构建
# 使用Dockerfile创建名为 yucy/mysql的镜像
docker build --rm=true -t yucy/mysql
镜像打tag
# 将镜像ubuntu:16.04标记为 yucy/ubuntu:V1 镜像
docker tag ubuntu:16.04 yucy/ubuntu:V1
镜像推送
docker push 注册用户名/镜像名
安装问题解决
第一次安装virtualbox的时候,没有设置虚拟电脑的保存路径,导致C盘爆满,具体可参考Docker学习:virtualbox安装和配置,下面是另外一个很纠结的问题,直到今天才解决!!!
第一次使用docker pull mysql
时,一直提示no matching manifest for unknown in the manifest list entries
在网上查找了很多资料,有解决方法是windows上配置daemon.json
中增加配置"experimental": true
,可是本机是linux虚拟机,在json文件中增加了这个配置选项,再次pull
镜像仍是出错。
后来反复查看虚拟机ios文件和docker
的安装要求,发现是虚拟机的版本问题,重新安装ubuntu-16.04.6-server-amd64的虚拟机,问题圆满解决?。出现这个文件主要是因为虚拟机安装时的版本选择的是64位的,可是加载的iso文件却是32位的,所以出现了上面的问题。