203 lines
6.0 KiB
Markdown
203 lines
6.0 KiB
Markdown
---
|
||
title: 三、Docker安装
|
||
date: 2021-01-06
|
||
author: ac
|
||
tags:
|
||
- Docker
|
||
categories:
|
||
- DevOps
|
||
---
|
||
|
||
**Windows上安装**
|
||
|
||
- 对于windows7或8使用docker toolbox安装
|
||
|
||
- 由于windows10(专业版)上有内置的hyper-v虚拟机可以选择docker for windows安装
|
||
|
||
docker for windows(方法1)和docker toolbox(方法2)的区别:
|
||
|
||
- docker toolbox:docker运行是需要linux内核的,为了能在非linux系统使用docker,官方早期提供的Toolbox方案就是使用虚拟机启动一个linux,然后在这个虚拟机中运行docker,免费的虚拟机当时使用最多的就是virtualbox
|
||
|
||
- docker for windows:原生版本的docker,在windows上是使用的windows10内置的hyper-v虚拟机,所以不在需要安装virtualbox,但是对系统的要求也提高了,因为hyper-v的虚拟机只有部分版本的windows10才有内置,比如家庭版的windows10就没有hyper-v组件,不能运行原生版本的docker,还是只能通过toolbox。
|
||
|
||
阿里云的镜像docker toolbox: http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
|
||
|
||
docker for windows: https://www.docker.com/get-started
|
||
|
||
**Linux上安装**
|
||
|
||
### 1.查看环境
|
||
|
||
因为Docker对系统环境有要求,如unbuntu
|
||
|
||

|
||
|
||
```shell
|
||
qiusj@u20:~$ uname -r
|
||
5.4.0-7634-generic
|
||
|
||
qiusj@u20:~$ cat /etc/os-release
|
||
NAME="Pop!_OS"
|
||
VERSION="20.04 LTS"
|
||
ID=pop
|
||
ID_LIKE="ubuntu debian"
|
||
PRETTY_NAME="Pop!_OS 20.04 LTS"
|
||
VERSION_ID="20.04"
|
||
HOME_URL="https://pop.system76.com"
|
||
SUPPORT_URL="https://support.system76.com"
|
||
BUG_REPORT_URL="https://github.com/pop-os/pop/issues"
|
||
PRIVACY_POLICY_URL="https://system76.com/privacy"
|
||
VERSION_CODENAME=focal
|
||
UBUNTU_CODENAME=focal
|
||
LOGO=distributor-logo-pop-os
|
||
```
|
||
|
||
### 2.安装(docker-ce社区版)
|
||
|
||
方式一:使用官方安装脚本自动安装
|
||
|
||
```shell
|
||
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
||
|
||
# 或使用国内daocloud 一键安装命令
|
||
$ curl -sSL https://get.daocloud.io/docker | sh
|
||
```
|
||
|
||
方式二:手动安装
|
||
|
||
```shell
|
||
# 1)卸载旧的版本
|
||
$ sudo apt-get remove docker docker-engine docker.io containerd runc
|
||
|
||
# 2)通过docker仓库安装,先安装需要的依赖环境
|
||
$ sudo apt-get update
|
||
$ sudo apt-get install \
|
||
apt-transport-https \
|
||
ca-certificates \
|
||
curl \
|
||
gnupg-agent \
|
||
software-properties-common
|
||
|
||
# 3)添加Docker官方的GPG 密钥,验证key的指纹
|
||
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
||
$ sudo apt-key fingerprint 0EBFCD88
|
||
pub rsa4096 2017-02-22 [SCEA]
|
||
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
|
||
uid [ 未知 ] Docker Release (CE deb) <docker@docker.com>
|
||
sub rsa4096 2017-02-22 [S]
|
||
|
||
# 4)添加稳定的镜像仓库
|
||
# $ sudo add-apt-repository \
|
||
# "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
||
# $(lsb_release -cs) \
|
||
# stable"
|
||
# 使用国内阿里云仓库
|
||
$ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
|
||
|
||
#访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。
|
||
$ sudo apt-get update
|
||
|
||
# 5)安装最新的docker ce 和 containerd
|
||
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
|
||
|
||
# 查看验证docker是否安装成功
|
||
$ sudo docker run hello-world
|
||
|
||
Unable to find image 'hello-world:latest' locally
|
||
latest: Pulling from library/hello-world
|
||
0e03bdcc26d7: Pull complete
|
||
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
|
||
Status: Downloaded newer image for hello-world:latest
|
||
|
||
Hello from Docker!
|
||
This message shows that your installation appears to be working correctly.
|
||
|
||
To generate this message, Docker took the following steps:
|
||
1. The Docker client contacted the Docker daemon.
|
||
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
|
||
(amd64)
|
||
3. The Docker daemon created a new container from that image which runs the
|
||
executable that produces the output you are currently reading.
|
||
4. The Docker daemon streamed that output to the Docker client, which sent it
|
||
to your terminal.
|
||
|
||
To try something more ambitious, you can run an Ubuntu container with:
|
||
$ docker run -it ubuntu bash
|
||
|
||
Share images, automate workflows, and more with a free Docker ID:
|
||
https://hub.docker.com/
|
||
|
||
For more examples and ideas, visit:
|
||
https://docs.docker.com/get-started/
|
||
|
||
# 6)设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)
|
||
sudo systemctl enable docker
|
||
sudo systemctl start docker
|
||
|
||
|
||
# 7)卸载docker(卸载依赖,删除目录:/var/lib/docker是docker的默认工作路径)
|
||
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io
|
||
$ sudo rm -rf /var/lib/docker
|
||
```
|
||
|
||
|
||
|
||
三
|
||
|
||
```shell
|
||
# 会导致docker的版本过低
|
||
yum install docker -y
|
||
systemctl start docker
|
||
|
||
# 卸载掉
|
||
yum -y remove docker*
|
||
# 添加依赖
|
||
sudo yum install -y yum-utils
|
||
# t
|
||
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
||
# 安装docker-ce
|
||
yum install docker-ce docker-ce-cli containerd.io
|
||
```
|
||
|
||
|
||
|
||
### 3.配置镜像加速
|
||
|
||
> 这里使用阿里云镜像加速。
|
||
|
||
登陆阿里云,找到容器镜像服务,找到镜像加速器。
|
||
|
||

|
||
|
||
配置使用
|
||
|
||
```shell
|
||
qiusj@u20:~$ sudo mkdir -p /etc/docker
|
||
[sudo] qiusj 的密码:
|
||
qiusj@u20:~$ sudo tee /etc/docker/daemon.json <<-'EOF'
|
||
> {
|
||
> "registry-mirrors": ["https://gbi3l7ww.mirror.aliyuncs.com"]
|
||
> }
|
||
> EOF
|
||
{
|
||
"registry-mirrors": ["https://gbi3l7ww.mirror.aliyuncs.com"]
|
||
}
|
||
qiusj@u20:~$ sudo systemctl daemon-reload
|
||
qiusj@u20:~$ sudo systemctl restart docker
|
||
```
|
||
|
||
|
||
|
||
### 4. 运行流程
|
||
|
||
在手动安装环节,我们为了验证`docker`是否安装成功运行一个`hello-world`镜像,其中`run`命令的运行流程如下图:
|
||
|
||

|
||
|
||
### 5.底层工作原理
|
||
|
||
`Docker`是一个`Client-Server`结构的系统,`Docker`的守护进程运行在主机上。通过`Socket`从客户端访问,当`DockerServer`接收到`Docker-Client`的指令后就会执行该指令。
|
||
|
||

|
||
|