序言
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]