一个计算机技术爱好者与学习者

0%

好好学Docker:Docker入门篇

1. 容器简介

奔驰车生产好之后,经过集装箱封装,从纽约运送到了上海,开箱后奔驰车可以跑在上海的大街上。
软件在环境A开发好之后,经过集装箱封装,从环境A运送到了环境B,开箱后软件可以跑在环境B。
这种软件集装箱技术,就是容器技术,英文叫做 Linux Container。

容器技术的主要优点是轻量虚拟化(良好的隔离性、高资源利用率)、快捷和可移植性。

起初,容器技术做的最好的就是Docker,Docker也几乎就是容器的代名词,后来CoreOS、Mesos、Containerd也都相继发展壮大。为了统一容器标准,OCI(Open Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准,标准主要包括image镜像标准和runtime运行时标准。

2. Docker简介

Docker是一个开源的容器引擎(管理容器的工具),可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

应用场景:开发环境搭建、自动化构建、自动化测试、自动化部署。

Docker系统有两个程序:docker服务端和docker客户端。
其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

Docker优点:
Build, Ship and Run.
Build once, run anywhere.

参考文档:

3. Docker安装

3.1. centos7安装docker

参考文档Install Docker Engine on CentOS

1、安装yum-utils

1
yum install yum-utils

2、添加docker-ce源

1
2
3
4
# 官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云源,国内更快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、更新yum包

1
yum makecache fast

4、查看docker版本

1
2
yum list | grep docker
yum list docker-ce --showduplicates | sort -r

看到如下内容:

1
2
3
4
5
6
7
8
9
docker-ce.x86_64            3:23.0.1-1.el7                     docker-ce-stable
docker-ce.x86_64 3:23.0.1-1.el7 @docker-ce-stable
docker-ce.x86_64 3:23.0.0-1.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
...
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable

5、安装指定版本docker

1
2
3
4
yum install docker-ce # 安装最新版
yum install docker-ce-20.10.9 # 安装指定版本(不推荐,可能架构不匹配)
# yum install <softname>-<version>.<arch>
yum install docker-ce-3:20.10.9-3.el7.x86_64 # 安装指定版本(推荐)

6、启动docker-ce并设置开机启动

1
2
systemctl start docker
systemctl enable docker

3.2. ubuntu18安装docker

参考文档Install Docker Engine on Ubuntu

注意:ubuntu不要使用snap安装docker,否则配置和其他系统不一致很麻烦。

1、删除自带的老版本

1
sudo apt-get remove docker docker-engine docker.io containerd runc

2、安装依赖

1
2
3
4
5
6
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release

3、添加docker官方GPG key

1
2
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

4、建立仓库

1
2
3
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5、查看docker版本

1
2
3
sudo apt-get update
#sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
apt-cache madison docker-ce | awk '{ print $3 }'

6、安装指定版本docker

1
2
VERSION_STRING=5:20.10.13~3-0~ubuntu-bionic
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin

3.3. ubuntu18升级docker

1
2
3
4
5
6
systemctl stop docker
apt update
apt madison docker-ce
apt madison docker-ce-cli
apt install docker-ce=5:24.0.2-1~ubuntu.18.04~bionic
apt install docker-ce-cli=5:24.0.2-1~ubuntu.18.04~bionic

3.4. win10安装docker

参考文档:《Win10安装配置Docker》

3.5. centos7降级安装docker

1
2
3
4
5
6
7
8
9
docker version
yum list docker-ce --showduplicates | sort -r
systemctl stop docker
systemctl stop docker.socket
systemctl stop containerd
version=19.03.15
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-cli-${version} docker-ce-selinux-${version} containerd.io
systemctl start containerd
systemctl start docker

4. helloworld

4.1. 运行容器

国际惯例,先跑一个helloworld。

1
2
docker pull busybox:1.25
docker run busybox:1.25 echo "helloworld"

4.2. docker pull说明

docker pull busybox:1.25 从镜像仓库下载一个名称为 busybox:1.25 的镜像。
等价于 docker pull docker.io/busybox:1.25 ,这是因为docker默认的镜像仓库就是 docker.io

4.3. docker run说明

docker run busybox:1.25 echo "helloworld"
busybox:1.25 镜像作为模板启动一个容器,容器中运行echo程序,参数为”helloworld”。
容器启动后,输出了 helloworld ,然后就停止了。这是因为,1号进程(echo进程)停止了,容器也随之停止。

docker镜像运行起来,便会生成一个docker容器。docker容器可以理解为在沙盒中运行的进程,这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell环境等等。
这个沙盒默认不会运行任何程序,我们需要指定一个程序在启动容器时运行。这个程序对应的进程是该容器的1号进程,当该进程结束的时候,容器也会完全停止。

5. Docker常用命令

参考《Docker常用命令》

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-docker-start/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~