win10安装 docker

本文详细介绍了Docker的基本概念,包括镜像、容器和仓库,以及如何在Windows环境下安装Docker,配置镜像加速,拉取和运行镜像,特别演示了通过Docker搭建MySQL环境的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker基本概念

docker包含三个基本概念:
镜像(Image)
容器(Container)
仓库(Repository)
理解了这三个概念,就理解了docker的整个生命周期了!

Docker镜像

Docker镜像(Image)就是一个只读的模板。
Docker镜像可以用来创建Docker容器。

Docker镜像和Docker容器的关系,类似于java中class类与对象之间的关系。

Docker提供了一个很简单的机制来创建镜像或者更新已有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

容器

Docker利用容器(Container)来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看成是一个简易版的Linux环境(包括ROOT用户权限、进程空间、用户空间、网络等)和运行在其中的应用程序。

Registry

Registry是集中存放镜像文件的场所。
仓库(Repository)是对于其中的镜像进行分类管理。

一个Registry中会有多个Repository。
一个Repository中会有多个不同tag的Image。

比如名称为centos的Repository仓库下,有tag为6或者7的Image镜像。

Registry分为公有(public)和私有(private)两种形式。
最大的公有Registry是Docker Hub,存放了数量庞大的镜像供用户下载使用。
国内的公开Registry包括USTC、网易云、DaoCloud、AliCloud等,可以供大陆用户更稳当快捷的访问。
用户可以在本地创建一个私有Registry。

用户创建了自己的镜像之后就可以使用push命令将它上传的公有Registry或者私有Registry中,这样下次在另一台机器上使用这个镜像的时候,只需要从Registry上pull下来运行就可以了。

安装

docker官网下载

首先在docker网站上注册一个账户,然后下载。
Docker for windows下载地址

国内下载地址

对于Windows 10以下的用户,推荐使用Docker Toolbox
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
对于Windows 10以上的用户 推荐使用Docker for Windows
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

文档

安装文档英文版
建议读一下英文版 。

开启Hyper-v

安装需要开启Hyper-V,如果是win10家庭版的话,可以需要升级win10专业版。可到某宝购买专业版的key。

CPU虚拟化

控制面板-程序-windows功能
在这里插入图片描述

安装过程

安装时会有360报黑客新建帐号登录提示,这个还不太清楚,建议点允许。
360报docker黑客行为

docker安装成功

在这里插入图片描述

登录

docker登录

安装是否成功

E:\>docker --version
Docker version 18.09.0, build 4d60db4

Hello-world

拉取helloWorld镜像

E:\>docker pull hello-world
Using default tag: latest
Error response from daemon: 
Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: 
net/http: TLS handshake timeout

发现下载不来

配置镜像加速

Docker可以配置的国内镜像有很多可供选择,比如说:阿里云,网易蜂巢,DaoCloud,Docker中国区官方镜像等,这些都是可以提供给大家随意选择的不错的镜像仓库。

阿里云docker镜像加速
建议不要加端口号

{
  "registry-mirrors": [
    "https://xxx.mirror.aliyuncs.com:443"
  ],
  "insecure-registries": [],
  "debug": true,
  "experimental": true
}

里面的xxx是的你阿里云镜像加速地址。
再次下载,下载成功。

E:\>docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf1
Status: Downloaded newer image for hello-world:latest

运行hello-world

E:\>docker run hello-world
Hello from Docker!

docker 命令

docker镜像命令

查找镜像

E:\>docker search centos
NAME     DESCRIPTION      STARS               OFFICIAL            AUTOMATED
centos          The official build of CentOS.              5020             [OK]

拉取镜像

拉取镜像也就是把镜像下载到本地

E:\>docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a02a49cb5d: Extracting [=========>     ]  69.07MB/75.17MB

列出镜像

列出本地镜像

E:\>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              1e1148e4cc2c        38 hours ago        202MB
mysql               5.6                 a876cc5d29e4        3 weeks ago         256MB

删除镜像

docker rmi <image id>

docker容器

启动容器

运行交互式的容器
这里的"1e1148e4cc2c"是上面docker images列出来的镜像的 ID

E:\>docker run -i -t 1e1148e4cc2c /bin/bash
[root@33bab162592 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  
opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@33bab162592 /]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@33bab162592 /]# exit
exit
E:\>

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。

以交互方式启动容器:docker run -it --name 容器名称 镜像 /bin/bash
以守护进程方式启动容器:docker run -d --name 容器名称 镜像

停止容器

docker stop 容器名称或者容器ID

重启容器

docker start 容器名称或者容器ID

删除容器

删除指定容器:docker rm 容器名称或者容器ID

删除所有容器:docker rm ‘docker ps -a -q’

查看容器

docker ps :查看正在运行的容器
docker ps -a:查看历史运行过的容器
docker ps -l:查看最近运行过的容器

Docker 应用

windows下载docker搭建mysql

下载mysql镜像 docker pull mysql,docker run运行。

docker run -d --rm --name ecMysql 
-v D:\docker\mysql:/var/lib/mysql 
-v D:\docker\mysqlConf:/etc/mysql/conf.d 
-e MYSQL_ROOT_PASSWORD=123456 
-p 3307:3306 mysql 
--character-set-server=utf8mb4 
--collation-server=utf8mb4_unicode_ci

添加:–character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci 防止中文乱码
参数解释:
-d 后台运行
–rm windows下stop后自动rm在stop ps中的镜像,linux下次参数不能使用
–name 给镜像起别名
-v 本地目录:镜像目录
-e 给镜像设置环境变量 MYSQL_ROOT_PASSWORD=123456这句为设置密码为123456
-p 暴露端口 格式– 本地端口:镜像端口
docker run [参数] 镜像名

进入mysql


E:\>docker ps -a
CONTAINER ID        IMAGE    COMMAND   CREATED             STATUS     PORTS  NAMES
a4df   mysql:5.6   "do…"   5 seconds ago    Up 3 seconds  0.0.0.0:3307->3306/tcp   ecMysql

E:\>docker exec -it ecMysql /bin/bash
root@a4d15abc185:/# mysql -u root -P 3307 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

设置一个用户,方便远程登录

use mysql
select Host,User from user;
grant all on *.* to 'ddff'@'%' identified by 'ddgg2018';

添加远程访问账户
前面已经暴露端口,直接使用Navicat连接操作即可,当然你也可以用命令行 ,ip:127.0.0.1 用户名:ddff 密码:ddgg2018

参考资料

菜鸟教程 - docker教程

window下搭建Docker的Mysql环境

docker 命令教程

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。 一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在docker之上,长期维护且有大量的用户,社区也十分活跃,接下来我们看看docker的故事。 环境管理复杂 - 从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。 云计算时代的到来 - AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思 路变化提供了可能性。 虚拟化手段的变化 - cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速 LXC的移动性 - LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。 VM技术和容器技术对比 VM技术和容器技术对比 面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值