wow's Studio.

Docker-quick-start

Word count: 730Reading time: 3 min
2021/04/09 Share

Docker quick start

概述


为什么出现?

产品的开发和上线,两套环境。

环境配置费时费力。。。

Docker提供的解决方案:集装箱

为什么流行?

轻巧的虚拟化技术(相对于VM)

  • VM: 原生镜像,隔离需要开启多个虚拟机,几个G,几分钟;

虚拟硬件,运行完整的操作系统,然后在这个操作系统上安装运行软件。

  • docker: 镜像只包含最核心的环境,几个M,秒级启动;

容器内的应用运行在宿主os,容器没有自己的内核,也不虚拟化自己的硬件。每个容器之间相互隔离,都有自己的文件系统,互不影响。

Docker安装


基本组成

  • 镜像(image)

类似模板,可以通过这个模板创建容器服务;

通过一个镜像可以创建多个容器;

  • 容器(container)

可以理解为一个建议的Linux系统,独立运行一个或一组应用;

  • 仓库(repository)

存放仓库的地方;

安装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) # 删除所有镜像

容器命令

1

CATALOG
  1. 概述
    1. 为什么出现?
    2. 为什么流行?
  2. Docker安装
    1. 基本组成
    2. 安装docker
    3. 阿里云镜像加速配置
  3. 底层原理
    1. Docker是怎么工作的?
    2. Docker为什么比VM轻便?
  4. Docker常用命令
    1. 帮助命令
    2. 镜像命令
    3. 容器命令