Docker概述
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
下面的图片比较了容器技术和传统的虚拟化技术的对比,可见容器时在操作系统的基础上实现虚拟化,传统的虚拟化技术还需要一层guest OS系统做为基础实现。
Docker的安装
官方文档:https://docs.docker.com/get-docker/
Docker的安装文档清晰明了可以直接去按照他给的步骤一步一步来。
卸载旧版本以及残留
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
设置docker的yum软件仓库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
设置docker开机自启并启动
sudo systemctl enable --now docker
运行一个docker的测试镜像来验证docker的安装
[root@docker ~]# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:10d7d58d5ebd2a652f4d93fdd86da8f265f5318c6a73cc5b6a9798ff6d2b2e67
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/
Docker的命令
镜像的管理
搜索/检索
docker search 镜像名称
[root@docker ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16597 [OK]
bitnami/nginx Bitnami nginx Docker Image 121 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 39
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 17 [OK]
rancher/nginx-ingress-controller 10
ibmcom/nginx-ingress-controller Docker Image for IBM Cloud Private-CE (Commu… 4
bitnami/nginx-ldap-auth-daemon 3
bitnami/nginx-exporter 2
circleci/nginx This image is for internal use 2
默认从dockerhub进行搜索镜像
下载/拉取
docker pull 名称:版本
[root@docker ~]# docker pull nginx:1.21.6
1.21.6: Pulling from library/nginx
c229119241af: Pull complete
2215908dc0a2: Pull complete
08c3cb2073f1: Pull complete
18f38162c0ce: Pull complete
10e2168f148a: Pull complete
c4ffe9532b5f: Pull complete
Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Status: Downloaded newer image for nginx:1.21.6
docker.io/library/nginx:1.21.6
如果不加版本的话则拉取latest版本即最新版本
镜像列表
docker images
docker image ls
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.21.6 12766a6745ee 10 days ago 142MB
rancher/mirrored-flannelcni-flannel v0.17.0 9247abf08677 5 weeks ago 59.8MB
rancher/mirrored-flannelcni-flannel-cni-plugin v1.0.1 ac40ce625740 2 months ago 8.1MB
registry.aliyuncs.com/google_containers/kube-apiserver v1.23.0 e6bf5ddd4098 4 months ago 135MB
registry.aliyuncs.com/google_containers/kube-controller-manager v1.23.0 37c6aeb3663b 4 months ago 125MB
registry.aliyuncs.com/google_containers/kube-scheduler v1.23.0 56c5af1d00b5 4 months ago 53.5MB
registry.aliyuncs.com/google_containers/kube-proxy v1.23.0 e03484a90585 4 months ago 112MB
registry.aliyuncs.com/google_containers/etcd 3.5.1-0 25f8c7f3da61 5 months ago 293MB
registry.aliyuncs.com/google_containers/coredns v1.8.6 a4ca41631cc7 6 months ago 46.8MB
registry.aliyuncs.com/google_containers/pause 3.6 6270bb605e12 7 months ago 683kB
五列数据分别代表镜像名称、镜像版本、镜像id、拉取时间、镜像大小
镜像标签
docker tag [imagesID] 改后名称:改后tag
[root@docker ~]# docker tag nginx:1.21.6 mynginx:1.21.6
[root@docker ~]# docker images |grep nginx
mynginx 1.21.6 12766a6745ee 10 days ago 142MB
nginx 1.21.6 12766a6745ee 10 days ago 142MB
镜像删除
docker rmi 镜像id
[root@docker ~]# docker rmi mynginx:1.21.6
Untagged: mynginx:1.21.6
镜像导出
docker save 镜像id/镜像名 > 名字.tar
[root@docker ~]# docker save nginx:1.21.6 > nginx-v1.21.6.tar
[root@docker ~]# ls
nginx-v1.21.6.tar
镜像导入
docker load < 包名
[root@docker ~]# docker rmi nginx:1.21.6
Untagged: nginx:1.21.6
Untagged: nginx@sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Deleted: sha256:12766a6745eea133de9fdcd03ff720fa971fdaf21113d4bc72b417c123b15619
Deleted: sha256:3ea962f6f388096ab9798790d363fc6f9c779c924a5eddf5c699d8da080114f7
Deleted: sha256:091a2aef7242e42505b69f1ad027d6a442cfce2403e260ac914f0fd6cc2d275f
Deleted: sha256:4e72a31f1cd6fd655cc0826c91e886967b6e965e13ac21f31f9f66c27a3b7732
Deleted: sha256:e3d1cdf9772a260b3e81a22c1940d63ac45dfe67720f78f00ca73834d9498934
Deleted: sha256:af40da71a8618ea9cbcdc333d5e60bd5b6df820f0d07a55f7c9a1c21fd930095
Deleted: sha256:608f3a074261105f129d707e4d9ad3d41b5baa94887f092b7c2857f7274a2fce
[root@docker ~]# docker load < nginx-v1.21.6.tar
608f3a074261: Loading layer [==================================================>] 83.9MB/83.9MB
ea207a4854e7: Loading layer [==================================================>] 62MB/62MB
33cf1b723f65: Loading layer [==================================================>] 3.072kB/3.072kB
5c77d760e1f4: Loading layer [==================================================>] 4.096kB/4.096kB
fac199a5a1a5: Loading layer [==================================================>] 3.584kB/3.584kB
ea4bc0cd4a93: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: nginx:1.21.6
[root@docker ~]# docker images |grep nginx
nginx 1.21.6 12766a6745ee 10 days ago 142MB
容器的管理
创建容器