windows下docker学习记录

docker安装:直接在官网上选择windows版本下载安装即可,如果下载完不能安装,则会提示你到 https://www.docker.com/products/docker-toolbox 下载toolbox去安装。


装完docker,虚拟机的数据默认放在c盘,可通过如下方式修改:

在控制面板中->管理工具->Hyper-V 管理器->Hyper-V设置->修改虚拟硬盘的路径。

windows下docker学习记录_第1张图片


安装完毕后,可以尝试执行命令:

查看版本:docker version

windows下docker学习记录_第2张图片

查看详细信息:docker info


windows下的docker由于用到虚拟机,因此需要打开BIOS的虚拟化技术。


运行第一个hello-world:

docker run hello-world

windows下docker学习记录_第3张图片

看到这里就说明成功了。

其实第一次跑本机是没有的,所以会执行下载的过程,而下载的过程有时会比较漫长,等不了的话可以去阿里云注册个账号,

然后在开发者平台
https://dev.aliyun.com/search.html 这里查找相应的镜像,在右边会有个加速地址可以获取

windows下docker学习记录_第4张图片

获取到一个url链接后先复制着,然后在设置这里(如下图)粘贴后apply即可。

windows下docker学习记录_第5张图片


其他版本可以查看这里:docker使用阿里云Docker镜像库加速 


搭建Mysql:

执行命令进行搜索(可选):docker search mysql

执行命令:docker pull mysql

等待下载完成即可用命令查看:docker images

接下来创建容器:docker run -p 3307:3306 --name mymysql  -v F:\docker_ws\mysql\data:/var/lib/mysql  -v F:\docker_ws\mysql\logs:/var/log/mysql  -v F:\docker_ws\mysql\conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

其中"-p 3307:3306" 即是将容器内的3306端口映射到本机的3307端口

“--name mymysql” 即是为容器取个名字

“-v F:\docker_ws\mysql\data:/var/lib/mysql”即是将数据保存在本机的data目录,如果没有指定,则默认保存在容器内,那么容器一旦关闭也就意味着数据丢失

“-v F:\docker_ws\mysql\logs:/var/log/mysql”即是将日志保存在本机的logs目录,可不写

“-v F:\docker_ws\mysql\conf:/etc/mysql/conf.d”即是将conf.d目录挂载到本机的conf目录,可不写

“-e MYSQL_ROOT_PASSWORD=root ” 即是为root用户指定密码

“-d mysql:latest”即是指定mysql的镜像,冒号后面可以跟版本号,这里用latest

其中-d 是在后台运行的意思。

如无意外,回车后会给出一串字符串即为刚刚创建的容器id,此时可以用命令docker ps 查看下容器的信息(不包含已经停止运行的,如果要查看所有,则执行docker container ls -a)

有的时候创建容器失败是因为同名的问题,此时你需要手动执行 "docker stop 容器id"和“docker rm 容器id”,这样就完全把同名的容器删除了,再创建就没有问题了。


容器启动成功后就可以测试连接到数据库,可以用navicat,如果本机已有mysql命令,则执行

mysql -P3307 -uroot -p

回车输入密码即可进到mysql,如果提示

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

则有可能是容器刚刚启动,数据库的初始化还没完成,等待一段时间后再连接就可以了。


如果想进入到容器内,则执行

docker exec -it containerName bash
其中containerName需要替换为容器的名称。

 如果想查看容器的日志,则执行

docker logs containerName


如果想备份容器内的数据库,则执行

docker exec containerName sh -c "exec mysqldump --databases test -uroot -p"$MYSQL_ROOT_PASSWORD"" > ./databases-test.sql


如图是将名为test的数据库备份到all-databases.sql中。


如果想知道路径的映射,则执行

docker inspect -f '{ {.Config.Volumes}}' containerID

其中containerID是容器id。

你可能感兴趣的:(docker)