序言

Docker 入门系列文章是根据视频教程全程实操的记录,基本上按照本系列文章操作,就能掌握 Docker 基本入门技巧。

1. 准备环境

准备 Linux 服务器,推荐 CentOS 7,64位、系统内核版本为 3.10 以上

[root@k8s-master ~]# uname -r
3.10.0-1160.53.1.el7.x86_64

2. 配置 docker 镜像源

最大的公开的镜像仓库是 Docker Hub:
https://hub.docker.com
国外的镜像源会被墙,推荐使用阿里云:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装docker

Docker 版本分为 CE(社区版,免费)和EE(企业版,安全CE)。我们安装社区版。
执行如下命令安装:

yum install docker-ce -y

如果之前安装过其他源的 docker,可能会冲突,安装失败,先卸载旧版本,执行命令:

sudo yum remove docker  docker-common docker-selinux docker-engine

启动 docker 守护进程

systemctl start docker

设置 docker 守护进程开机自动启动

systemctl enable docker

查看 docker 版本

docker --version
或者
docker -v

查看 docker 详细信息

docker info

4. docker 镜像的操作

在线搜索 docker 镜像

docker search [镜像名]

注意:
判断镜像是否是官方的:official 栏显示 OK 则是官方镜像。

关于 docker 的内核问题:
我们下载的 centos、或者 ubuntu 的 docker 镜像,没有系统内核,只有运行需要的 lib 库等软件和文件。镜像使用的内核是宿主机的内核。所以同一台宿主机上的 docker 使用的内核都是一样的,都是宿主机的内核。 所以,如果宿主机系统为 centos,想在上面使用 docker 为 ubuntu 的特性,是无法实现的。

docker 下载镜像

docker pull [镜像名]

示例:

docker pull centos

关于 docker 镜像标签:如果不手动设置标签,镜像的标签默认为 latest

[root@k8s-master ~]# docker images | grep centos
centos                                                            latest     5d0da3dc9764   5 months ago   231MB

查看本地宿主机上的所有镜像:docker images。每个镜像都有唯一的ID

[root@k8s-slave1 ~]# docker images
REPOSITORY                                           TAG       IMAGE ID       CREATED        SIZE
registry.aliyuncs.com/google_containers/kube-proxy   v1.23.4   2114245ec4d6   13 days ago    112MB
rancher/mirrored-flannelcni-flannel                  v0.16.3   8cb5de74f107   4 weeks ago    59.7MB
rancher/mirrored-flannelcni-flannel-cni-plugin       v1.0.1    ac40ce625740   5 weeks ago    8.1MB
centos                                               latest    5d0da3dc9764   5 months ago   231MB
registry.aliyuncs.com/google_containers/pause        3.6       6270bb605e12   6 months ago   683kB
kubernetesui/metrics-scraper                         v1.0.7    7801cfc6d5c0   8 months ago   34.4MB

镜像导出

docker save -o [镜像压缩包的名称] centos:latest

说明:导出的镜像默认使用 tar 包的形式。
例如:

docker save -o centos.tar centos:latest

镜像导入

docker load --input centos.tar
或者
docker load < centos.tar

删除镜像(image)和删除容器(containers)

docker rmi [镜像名或者镜像ID]

强制删除:

docker rmi -f [镜像名或者镜像ID]

注意:
如果该镜像已经启动了容器,则该命令是无法删除镜像的。系统会提示该镜像启动过那个容器,并且给出该容器的ID,删除该容器后才能删除镜像。生产环境千万不要轻易执行强制删除命令!!!

5. docker 容器的操作

启动容器并输出 Hello world

docker run centos /bin/echo "Hello world"

注意:
该命令输出的 Hello world 是容器输出的,而不是宿主机输出的。该命令方式下,容器执行完 echo 这个任务后就终止运行了。

启动容器并命名

docker run --name [自定义的容器名称] -t -i [镜像名] /bin/bash

说明:
-t 是 tty,是指分配一个伪终端。-i 是 标准输入,因为要登陆进容器内部。该命令执行时会检查指定的[镜像名]在本地是否存在,如果不存在,就会到公共仓库中去下载。然后再启动容器,接着给该容器分配一个文件系统,挂在镜像的上面。最后还要给容器分配一个 IP 地址。
示例:

docker run --name mycentos -t -i centos /bin/bash

容器退出
执行 exit 命令退出容器,容器也终止了。

再次启动容器
先执行

docker ps -a

查看之前容器启动时的名称或者 ID ,再执行

docker start [容器名]

或者

docker start [容器ID]

就能启动刚才的容器了。

关闭容器

docker stop [容器名]

或者

docker stop [容器ID]

查看容器详细配置

docker inspect [容器名]

让一个容器结束运行后自动删除

docker run --rm [镜像名] /bin/echo "hehe"

执行完该命令后,使用命令 docker ps -a 看不到刚刚运行过的用于输出 hehe 的容器

删除容器:

docker rm [容器名或者容器ID]
03-05 22:17