Docker quick start
概述
为什么出现?
产品的开发和上线,两套环境。
环境配置费时费力。。。
Docker提供的解决方案:集装箱
为什么流行?
轻巧的虚拟化技术(相对于VM)
- VM: 原生镜像,隔离需要开启多个虚拟机,几个G,几分钟;
虚拟硬件,运行完整的操作系统,然后在这个操作系统上安装运行软件。
- docker: 镜像只包含最核心的环境,几个M,秒级启动;
容器内的应用运行在宿主os,容器没有自己的内核,也不虚拟化自己的硬件。每个容器之间相互隔离,都有自己的文件系统,互不影响。
Docker安装
基本组成
类似模板,可以通过这个模板创建容器服务;
通过一个镜像可以创建多个容器;
可以理解为一个建议的Linux系统,独立运行一个或一组应用;
存放仓库的地方;
安装docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 1、卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2、需要的安装包 sudo yum install -y yum-utils # 3、设置镜像的仓库 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4、安装docker sudo yum install docker-ce docker-ce-cli containerd.io
|
阿里云镜像加速配置
底层原理
Docker是怎么工作的?
Docker是一个CS架构的系统,Docker的守护进程运行在服务器上,客户端通过socket访问;
Docker-Server接收到Docker-Client的指令就会执行这个命令。
Docker为什么比VM轻便?
- Docker比VM有着更少的抽象层;
- Docker利用的是宿主机的内核,VM需要Guest OS;当创建一个新的容器时,docker不需要像虚拟机一样重新加载一个OS内核,避免引导;
Docker常用命令
帮助命令
1 2 3
| docker version # 显示docker版本信息 docker info # docker详细信息,包括镜像和容器的数量 docker [命令] --help # 帮助命令
|
镜像命令
docker images
1 2 3
| # 可选项 -a # 列出所有镜像 -q # 只显示镜像id
|
docker search [镜像名] 搜索镜像
1 2
| # 可选项 --filter=STARS=3000 # 搜索STARS大于3000的镜像
|
docker pull [镜像名] 下载镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # 下载镜像 docker pull 镜像名[:tag] [git@Artemis docker]$ sudo docker pull mysql [sudo] password for git: Using default tag: latest # 不设置tag,默认下载latest latest: Pulling from library/mysql f7ec5a41d630: Pull complete # 分层下载,docker images的核心,后面会涉及到联合文件系统 9444bb562699: Pull complete 6a4207b96940: Pull complete 181cefd361ce: Pull complete 8a2090759d8a: Pull complete 15f235e0d7ee: Pull complete d870539cd9db: Pull complete 5726073179b6: Pull complete eadfac8b2520: Pull complete f5936a8c3f2b: Pull complete cca8ee89e625: Pull complete 6c79df02586a: Pull complete Digest: sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38 # 签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址
|
docker rmi [镜像id/镜像名] 删除镜像
1 2 3
| # 删除镜像 [git@Artemis docker]$ sudo docker rmi -f e73346bdf465 # 删除指定的镜像 [git@Artemis docker]$ sudo docker rmi -f $(docker images -aq) # 删除所有镜像
|
容器命令