初识docker 小记

一. 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应用场景在作为基础镜像时使用
 
 

 

posted @ 2021-04-27 17:52  芒果~~  阅读(54)  评论(0编辑  收藏  举报