一. docker与虚拟机的区别
1. 虚拟机之间 系统级别的隔离
2. docker容器之间 进程级别的隔离
3. docker仓库地址:https://hub.docker.com
二. docker安装
1、查看系统内核版本号(至少是3.10及以上版本)
[root@docker /]# uname -a
Linux docker 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2、安装依赖软件
[root@docker /]# yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加docker镜像源
[root@docker /]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker /]# ll /etc/yum.repos.d/
total 12
-rw-r--r--. 1 root root 2523 Aug 5 20:09 CentOS-Base.repo
-rw-r--r-- 1 root root 2640 Mar 16 2020 docker-ce.repo
-rw-r--r--. 1 root root 664 Aug 5 20:09 epel.repo
4、安装docker
[root@docker /]# yum install docker-ce -y
5、设置开机自启动
[root@docker /]# systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、验证是否安装成功【输入docker后有内容输出即默认安装成功】
[root@docker /]# docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
7、设置加速器
# 打开阿里云官网
# 选择 产品 -> 容器与中间件 -> 容器与镜像服务ACR -> 管理控制台 -> 镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
8、docker第一个案例
[root@docker /]# docker run -d -P --rm nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
6ec7b7d162b2: Pull complete
cb420a90068e: Pull complete
2766c0bf2b07: Pull complete
e05167b6a99d: Pull complete
70ac9d795e79: Pull complete
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
c5938fd6c0f392b429e12a5ea5ba7ed1e27befe2dde1247c843f70ca3d9db138
[root@docker /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5938fd6c0f3 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:49153->80/tcp naughty_buck
镜像
1、下载镜像
格式:
docker pull [指定仓库URL]/[命名空间]/[镜像名称]:[镜像版本ID]
默认情况下:镜像URL是:docker.io, 命名空间名称:library
实例:
[root@docker ~]# docker pull centos:7.9.2009
7.9.2009: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7.9.2009
docker.io/library/centos:7.9.2009
2、查看镜像列表
格式:
docker image ls 或者 docker images
实例:
[root@docker ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 3 weeks ago 133MB
centos 7.9.2009 8652b9f0cb4c 8 weeks ago 204MB
alvinos/elasticsearch-head latest 78b79497bed5 12 months ago 1.11GB
参数:
-a : 列出系统临时镜像文件
--digests: 列出系统镜像摘要
-q : 只显示镜像ID
3、查看镜像详细信息
格式:
docker inspect [镜像名称]:[版本号] | [镜像ID]
实例:
[root@docker ~]# docker inspect ae2feff98a0c
[
{
"Id": "sha256:ae2feff98a0cc5095d97c6c283dcd33090770c76d63877caa99aefbbe4343bdd",
"RepoTags": [
"nginx:latest"
],
...
4、镜像tag (取别名)
格式
docker tag [镜像ID] [别名]:[版本号]
示例:
[root@docker ~]# docker tag ae2feff98a0c registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx:v1
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx v1 ae2feff98a0c 3 weeks ago 133MB
nginx latest ae2feff98a0c 3 weeks ago 133MB
5、推送远程仓库
格式:
docker push [镜像名称及版本号]
示例:
[root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx:v1
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx]
4eaf0ea085df: Pushed
2c7498eef94a: Pushed
7d2b207c2679: Pushed
5c4e5adc71a8: Pushed
87c8a1d8f54f: Pushed
v1: digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 size: 1362
6、登录远程仓库
格式:
docker login [参数] [仓库URL(默认使用docker.io)]
示例:
[root@docker ~]# docker login registry.cn-hangzhou.aliyuncs.com
Username: yangyang091022
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
7、查看镜像构建历史
格式:
docker history [镜像名称或ID]
示例:
[root@docker /etc/docker]# docker history alvinos/elasticsearch-head
IMAGE CREATED CREATED BY SIZE COMMENT
78b79497bed5 12 months ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "grun… 0B
<missing> 12 months ago /bin/sh -c #(nop) EXPOSE 9100 0B
<missing> 12 months ago /bin/sh -c #(nop) COPY dir:14aab6a4b7736a5f8… 29.1MB
作用:
查看镜像构建步骤。
8、搜索镜像
格式: docker search [参数] [镜像名称] 示例 [root@alvin-test-os ~]# docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 8779 [OK] 解释: NAME : 镜像名称 DESCRIPTION : 镜像简介 STARS : 收藏数 OFFICIAL : 是否是官方镜像 AUTOMATED : 是否是自构建镜像 参数: -f : 过滤 is-official=true --no-trunc : 不截断输出 --limit :
设置查询的条数
9、删除镜像
格式:
docker rmi [镜像名称或ID]
示例:
[root@docker /etc/docker]# docker rmi centos:7.9.2009
Untagged: centos:7.9.2009
Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf
Deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02
参数:
-f : 强制删除镜像
10、清理镜像
格式:
docker image prune [参数]
示例:
[root@docker /etc/docker]# docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: registry.cn-hangzhou.aliyuncs.com/k8sos/coredns:1.8.0
untagged: registry.cn-hangzhou.aliyuncs.com/k8sos/coredns@sha256:242d440e3192ffbcecd40e9536891f4d9be46a650363f3a004497c2070f96f5a
deleted: sha256:bfe3a36ebd2528b454be6aebece806db5b40407b833e2af9617bf39afaff8c16
deleted: sha256:a597a889e48ff93963ece86ec4c1d643548a006fc736d36459d2b3fe3c089ba9
deleted: sha256:225df95e717ceb672de0e45aa49f352eace21512240205972aca0fccc9612722
参数:
-a : 删除所有未被使用的镜像
-f : 是否需要提示
11、保存镜像
commit保存镜像针对的是保存容器。
格式:
docker commit [参数] [容器ID] [镜像名称:版本号]
示例:
[root@docker /etc/docker]# docker commit -m '这是一个CentOS' -a "xxx" -p d92bbdfc3273
sha256:a6980fb4e70c206b9e9ce03d4cb8e03bf0a2af305aca0c4468e841c9c0ad2e0d
[root@docker /etc/docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a6980fb4e70c 4 seconds ago 209MB
参数:
-m : 简介信息
-a : 指定作者
-p : 保存镜像时,镜像暂停运行(挂起)
12、镜像的导入与导出
# 使用 export 和 import
针对是容器
export
格式:
docker export [容器名称] > [压缩包名称]
示例
[root@docker /etc/docker]# docker export c5938fd6c0f3 > nginx.tar
[root@docker /etc/docker]# ll
-rw-r--r-- 1 root root 135404032 Jan 11 19:56 nginx.tar
import
格式:
docker import [压缩包名称] [镜像名称]
示例
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/nginx v1 fcd61543c224 6 seconds ago 131MB
# 使用 load 和 save
针对的是镜像
save
格式:
docker save [镜像ID...] > [压缩包名称]
注:使用镜像ID保存镜像时,导入时没有名称
示例:
[root@docker ~]# docker save alvinos/elasticsearch-head:latest > head.tar
[root@docker ~]# ll
-rw-r--r-- 1 root root 1152956416 Jan 11 20:01 head.tar
load
格式:
docker load < [压缩包名称]
示例
[root@docker ~]# docker load < head.tar
ebac2fb2022f: Loading layer [==================================================>] 29.26MB/29.26MB
Loaded image: alvinos/elasticsearch-head:latest
# 两种保存方式有哪些不同
1、针对的对象不一样(export和import针对的是容器,save和load针对的是镜像)
2、save是完全保存, export是部分保存
3、save保存的体积稍微大一些
4、save保存的是原生的镜像,export保存成一个新的镜像
5、save保存无法修改名称,export可以修改名称
6、save可以同时保存多个镜像,export不可以同时保存多个容器
7、save应用场景在部署或者需要追溯的场景中,export应用场景在作为基础镜像时使用