介绍:什么是Docker
Docker 是一种开源的应用容器引擎,它允许开发人员将应用及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 的主要优势在于它提供了一种快速、一致的部署环境,简化了应用的分发、测试和部署过程。它使得开发者可以轻松地在不同的环境中运行相同的应用,无论是在本地开发环境、测试环境还是生产环境。
Docker 包含以下几个核心概念:
1. **镜像(Images)**:Docker 镜像是容器的基础。镜像包含了文件系统和应用运行所需的所有内容,可以看作是容器的“蓝图”。
2. **容器(Containers)**:容器是镜像运行时的实例。当一个镜像被启动时,它会变成一个或多个容器。
3. **仓库(Repositories)**:仓库是集中存放镜像文件的地方。Docker Hub 是最知名的公共仓库,用户可以在其中找到并下载各种官方和社区提供的镜像。
4. **Dockerfile**:这是一个文本文件,包含了构建 Docker 镜像的指令。通过 Dockerfile,可以自动化镜像的创建过程。
5. **守护进程(Docker Daemon)**:这是 Docker 的后台运行进程,负责接收 Docker 命令、管理 Docker 容器等。
6. **客户端和服务器(Client-Server)**:Docker 客户端通过命令行接口与 Docker 守护进程通信,而 Docker 守护进程则可以在本地或远程服务器上运行。
Docker 通过这些概念和工具,为开发者和系统管理员提供了一种高效的方式来打包、分发和运行应用。它已经成为云计算和微服务架构中不可或缺的一部分。
实际操作:
Docker官网镜像网站:[**https://hub.docker.com/**](https://hub.docker.com/)
去查看如何使用aliyun的docker镜像库
**国内比较好的镜像源:网易蜂巢、aliyun和daocloud**
Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。Docker 使用 UnionFS 来将这些层联合到单独的镜像中。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。
镜像搜索
公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供用户使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。
镜像名称:仓库名称+镜像分类+tag名称(镜像版本)
```
docker.io/library/nginx:v1
docker.io/library/nginx:latest
daocloud.io/library/nginx
```
镜像ID:64位的id号,一般我们看到的是12位的我们称之为短ID,只要我们每个ID号不冲突就可以了
在下载镜像前,可以使用docker search命令搜索远端官方仓库中的共享镜像
```
[root@docker1 ~]# docker search lamp
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mattrayner/lamp A simple LAMP docker image running the prere… 328 [OK]
linode/lamp LAMP on Ubuntu 14.04.1 LTS Container 182
tutum/lamp Out-of-the-box LAMP image (PHP+MySQL) 150
```
获取镜像
```
[root@docker1 ~]# docker pull nickistre/centos-lamp
Using default tag: latest
latest: Pulling from nickistre/centos-lamp
f9f73d801f05: Pull complete
31a920671517: Pull complete
21c34a1a7bde: Pull complete
dc05bf237fc1: Pull complete
001edf96df50: Pull complete
273de3312284: Pull complete
09e0c479c5d6: Pull complete
3274b3252b64: Pull complete
8affd66070d7: Pull complete
b3d0f4e847ac: Pull complete
1b0c18851735: Pull complete
557b86c40b14: Pull complete
bdf3abef29b4: Pull complete
8fab0cd5d21a: Pull complete
4f198432c128: Pull complete
Digest: sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Status: Downloaded newer image for nickistre/centos-lamp:latest
```
查看镜像信息
```
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
[root@docker1 ~]# docker inspect 0b8d
[
{
"Id": "sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44",
"RepoTags": [
"nickistre/centos-lamp:latest"
],
"RepoDigests": [
"nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d"
],
"Parent": "",
"Comment": "",
"Created": "2018-04-13T21:01:31.472818372Z",
"Container": "25f7679db9909e1a5f63456ad2297c5eaaa8ca4c4f02991e678fc38af39e8762",
"ContainerConfig": {
"Hostname": "25f7679db990",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"22/tcp": {},
"443/tcp": {},
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"supervisord\" \"-n\"]"
],
"ArgsEscaped": true,
"Image": "sha256:23865469389846bddf3e091a0484f8e28cad879295c6f8e3a839b05137c079fc",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": {}
},
"DockerVersion": "17.06.1-ce",
"Author": "Nicholas Istre <nicholas.istre@e-hps.com>",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"22/tcp": {},
"443/tcp": {},
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"supervisord",
"-n"
],
"ArgsEscaped": true,
"Image": "sha256:23865469389846bddf3e091a0484f8e28cad879295c6f8e3a839b05137c079fc",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": [],
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 546979929,
"VirtualSize": 546979929,
"GraphDriver": {
"Data": {
"DeviceId": "16",
"DeviceName": "docker-8:3-152393378-6d89a9f2382f92c4106f1cdaa58acd6ca9c4d095c87aef69f5b6f6072e03d716",
"DeviceSize": "10737418240"
},
"Name": "devicemapper"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e",
"sha256:244de8069fbc70a188607a8dddab80ad8866a4e0bcb0b24f12aef0130ba307f2",
"sha256:988e3cb5a27b1efc0c85c3d9b34b25322de3ce13267d647a869f9150cd3c3f7f",
"sha256:38556f5b76216ba7518d1da1f2ea0c7ac147203833976c5a701fb36d71e17ec6",
"sha256:e6eea089f108513a9af6006efe53cff5ef762bc4be503ce8eaa1c6c726cae2ed",
"sha256:07d45adf0b976b610bfbbc6f9cc30a133d18f69262a9446bc280f542bd17d743",
"sha256:a0753067e202b570fa8c70f86ae2e0510f82f2271a0d5c1db5cbb4f9a9210cc3",
"sha256:9b9518d71f0ef4b967d786f7f40943658362af00b5e9f91f43053619b75bf07b",
"sha256:11ed4ddf1f28ad2857c7b3f17eee8c349fd9011042cf563807493bbddb2f3f46",
"sha256:fa3e2c4d1489e48588c4a08443edb471234a481dd52b341b211909d35e5787ca",
"sha256:f874a4141753cd042dbdcfc0acb48c8239de9a1d42b4902defe79ea6042cfc62",
"sha256:fabd844fa786a84bcd481f617becfbc31b85e927b4b24a56acc5283c1ad5ea76",
"sha256:d31fcd4e52cffcbf6c8ff68a19609d4a7ae56e43f7ad41865dd7b1341ca70977",
"sha256:2ccc0c68e26e5ac575aa7f7822638d547b5a3c703c73c004a40b19388f582bda",
"sha256:385f382ed46ca3e95842ce6074deb140cc11784744882adea64e27a24eeddaa8"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
[root@docker1 ~]# docker tag nickistre/centos-lamp lamp:lamp
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lamp lamp 0b8d572d1c7d 4 years ago 547MB
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
```
删除镜像
```
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lamp lamp 0b8d572d1c7d 4 years ago 547MB
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
[root@docker1 ~]# docker rmi lamp:lamp
Untagged: lamp:lamp
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
```
注意:
当一个镜像有多个标签的时候,docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只删除了镜像0b8d572d1c7d的一个标签。但当该镜像只剩下一个标签的时候,再使用删除命令就会彻底删除该镜像。
例如,删除nickistre/centos-lamp镜像,就会删除整个镜像文件的所有层。
```
[root@docker1 ~]# docker rmi nickistre/centos-lamp
Untagged: nickistre/centos-lamp:latest
Untagged: nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Deleted: sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44
Deleted: sha256:ac1f500d470a0d21ed6ed9e2132d86b5d636721d2d3301c9932136dc0d03c18e
Deleted: sha256:39595439de2a48c9d23506f76ad810902e3944f2cec2eb730b5a17ba48888bdb
Deleted: sha256:ef99b0f2358f87fb0a8d835835a1f15e557257397ca38db499165725d002a221
Deleted: sha256:82c70ac1157f6619be0415859d8d4201c5c7eef31a189214aa9924819d5b9a3a
Deleted: sha256:bad51cc6d300486ffcbdfd227eda325e5da3c176fd05d2036f581ec87a24956c
Deleted: sha256:09a51d85abc0e82c8ac8d8990fafab6cfedc80c7a2152e6fbac0fea31c9ae550
Deleted: sha256:26ab098c4e7de9c0f5d2bdb84d0e89ff3d8c6693594605dcbb005f93428176a0
Deleted: sha256:5638af005abf6a9991c71e49a784ebc43b606867207c9557fad3eb319e1f5e57
Deleted: sha256:95eabe3b5d839ad6652938d67818f09e6e7a8d1dc94a5da3be5d9fa0726280ce
Deleted: sha256:cd4013e7fada12e92334ba2f85618175ce5b8521011146c9bb04209cb6cd4b1a
Deleted: sha256:33ebf7adc5511801e6ec775de4b00ff7d54a7e9b01c91969afe139ba460c7659
Deleted: sha256:64b87534723ca654a93a98d53374157d5aa68384f29390676103c46f56af7f44
Deleted: sha256:1f12d6f0a489a1ddc36f2208ec4e1334434cd5f54c7ab3db125ec88f716bdfc6
Deleted: sha256:863dfcf52855b4020e42ffeefb84488ad4e7cb9156f7181310e1aea35e640cc3
Deleted: sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e
```
存出镜像和载入镜像
```
[root@docker1 ~]# docker pull nickistre/centos-lamp ###拉取镜像
[root@docker1 ~]# docker save -o lamp nickistre/centos-lamp
[root@docker1 ~]# ls -l lamp
-rw------- 1 root root 563599360 Mar 1 04:28 lamp
```
载入镜像
```
[root@docker1 ~]# scp lamp root@192.168.200.12:/root
[root@docker2 ~]# docker load -i lamp
da6517724f67: Loading layer 213.2MB/213.2MB
244de8069fbc: Loading layer 10.37MB/10.37MB
988e3cb5a27b: Loading layer 179.7MB/179.7MB
38556f5b7621: Loading layer 47.41MB/47.41MB
e6eea089f108: Loading layer 3.072kB/3.072kB
07d45adf0b97: Loading layer 21.89MB/21.89MB
a0753067e202: Loading layer 51.79MB/51.79MB
9b9518d71f0e: Loading layer 18.52MB/18.52MB
11ed4ddf1f28: Loading layer 2.891MB/2.891MB
fa3e2c4d1489: Loading layer 17.71MB/17.71MB
f874a4141753: Loading layer 8.704kB/8.704kB
fabd844fa786: Loading layer 9.728kB/9.728kB
d31fcd4e52cf: Loading layer 2.56kB/2.56kB
2ccc0c68e26e: Loading layer 3.584kB/3.584kB
385f382ed46c: Loading layer 3.584kB/3.584kB
Loaded image: nickistre/centos-lamp:latest
[root@docker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
```
上传镜像
```
[root@docker1 ~]# docker tag nickistre/centos-lamp liuzhi001/lamp:centos7
注:liuzhi001为一个名字
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
liuzhimin001/lamp centos7 0b8d572d1c7d 4 years ago 547MB
nickistre/centos-lamp latest 0b8d572d1c7d 4 years ago 547MB
[root@docker1 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: liuzhimin001
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@docker1 ~]# docker push liuzhimin001/lamp:centos7
```