美文网首页
docker安装,镜像命令

docker安装,镜像命令

作者: 慕知 | 来源:发表于2021-03-19 16:47 被阅读0次

一,docker中的三大基本概念

容器,将应用程序打包到一个环境里,隔离运行

容器与虚拟机的区别?
- 操作系统级别的隔离;
- 进程级别的隔离

(1)镜像
镜像就是启动一个服务的模版
(2)容器
容器就是对外提供服务的进程;
容器就像镜像启动的一个实例
(3)仓库
仓库就是用来存放镜像的地方

二,安装

https://mirrors.huaweicloud.com/

1,若安装过docker,需要先删掉,之后再安装依赖:
sudo yum remove docker docker-common docker-selinux docker-engine

# 装必要性软件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2、根据版本不同,下载repo文件。
[root@\ docker~]#         wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo

# 清空缓存
[root@\ docker~]# yum clean all
[root@\ docker~]# yum makecache
3,安装docker
[root@\ docker~]# yum install -y docker-ce

4,docker优化
[root@\ docker~]# sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://lt253d66.mirror.aliyuncs.com"]
}
EOF

docker优化,登入阿里云 复制内容
5,设置开机自启动
[root@\ docker~]# systemctl enable --now docker.service
6,检查docker
# 方式一
[root@\ docker~]# docker info
... ...
  https://lt253d66.mirror.aliyuncs.com/
... ...
出现内容即可,会发现多出一行加速器



# 方式二,下载并运行nginx
[root@\ docker~]# docker run -d -P nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
a076a628af6f: Pull complete
0732ab25fa22: Pull complete
d7f36f6fe38f: Pull complete
f72584a26f32: Pull complete
7125e4df9063: Pull complete
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
d2a9d46baeab3990ddf824bd41bdb32d455163024e4e9689a565b6a17bc23eca

# 端口号80
[root@\ docker~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                   NAMES
d2a9d46baeab   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 4 seconds   0.0.0.0:49153->80/tcp   crazy_austin


#访问本机IP号:49153查看nginx是否运行
nginx运行中

三,docker镜像相关命令

1,常用镜像仓库

官方仓库:hub.docker.com
阿里云私有仓库:registry.cn-hangzhou.aliyuncs.com
自己的私有仓库:Harbor软件

2,搜索镜像

# 搜索redis,会从官网搜出以下关于redis的相关
[root@\ docker~]# docker search redis
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                            Redis is an open source key-value store that…   9220      [OK]
bitnami/redis                    Bitnami Redis Docker Image                      176                  [OK]
sameersbn/redis                                                                  83                   [OK]
... ...



3,拉取镜像

docker pull + 镜像名称


# 会下载最新版本的redis
[root@\ docker~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis

#镜像层
a076a628af6f: Already exists
f40dd07fe7be: Pull complete
ce21c8a3dbee: Pull complete
ee99c35818f8: Pull complete
56b9a72e68ff: Pull complete
3f703e7f380f: Pull complete

#镜像id号(全球唯一)
Digest: sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494

#镜像下载状态
Status: Downloaded newer image for redis:latest

#镜像的全称(镜像的tag,标签)
docker.io/library/redis:latest

4,查看当前系统上的镜像

docker images  
或docker image ls




[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
redis        latest    621ceef7494a   2 months ago   104MB
nginx        latest    f6d0b4767a6c   2 months ago   133MB




# 参数-q,只显示镜像id
[root@\ docker~]# docker images -q
621ceef7494a
f6d0b4767a6c


5,获取镜像的详细信息

# 获取镜像的详细信息
docker inspect + 镜像的名称或者id

[root@\ docker~]# docker inspect redis
[root@\ docker~]# docker inspect 621ceef7494a





参数-f: 格式化输出

# 查看redis的ID全称,    .代表从跟开始
[root@\ docker~]# docker inspect -f '{{.ID}}' 621ceef7494a
sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb

[root@\ docker~]# docker inspect -f '{{.ID}}' redis
sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb



# 查看redis的Hostname
[root@\ docker~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
16535cfaf84a

6,登录镜像仓库

docker login
# 默认登录的是官方仓库,如果其他登录方式需要加上仓库的URL

# 参数 
--username  ,-u 指定用户名
--password  ,-p 指定密码



# 登录官网仓库
[root@\ docker~]# 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: ..zxx
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@\ docker~]# docker login --username=慕知林太太 registry.cn-hangzhou.aliyuncs.com
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@\ docker~]# cat ~/.docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "dXJiYW5lenh4Onp4MTAwNjI2Lg=="
        },
        "registry.cn-hangzhou.aliyuncs.com": {
            "auth": "5oWV55+l5p6X5aSq5aSqOnp4MTAwNjI2Lg=="
        }
    }

7,镜像标签构成

# 标签的构成
docker.io/library/redis:latest
docker.io      镜像仓库的url
library        镜像仓库命名空间
redis          镜像名称
latest         镜像的版本




打标签格式:
docker tag + id号



[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
redis        latest    621ceef7494a   2 months ago   104MB
nginx        latest    f6d0b4767a6c   2 months ago   133MB



#给redis打标签
[root@\ docker~]# docker tag 621ceef7494a registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test:v1


# 再次查看镜像,多了一个
[root@\ docker~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED        SIZE
redis                                               latest    621ceef7494a   2 months ago   104MB
registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test   v1        621ceef7494a   2 months ago   104MB
nginx                                               latest    f6d0b4767a6c   2 months ago   133MB


8,镜像上传

必须先登入仓库,其次设置标签 才可以上传!!!

docker push + 镜像名



# 登入仓库
[root@\ docker~]# docker login
Authenticating with existing credentials...
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@\ docker~]# cat ~/.docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "dXJiYW5lenh4Onp4MTAwNjI2Lg=="
        },
        "registry.cn-hangzhou.aliyuncs.com": {
            "auth": "5oWV55+l5p6X5aSq5aSqOnp4MTAwNjI2Lg=="
        }
    }



# 把打好标签的redis上传到阿里云仓库

[root@\ docker~]# docker push  registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test:v1
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test]
3480f9cdd491: Pushed
a24a292d0184: Pushed
f927192cc30c: Pushed
1450b8f0019c: Pushed
8e14cb7841fa: Pushed
cb42413394c4: Pushed
v1: digest: sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892 size: 1572



如果另一台服务器需要下载,执行
[root@\ docker~]# docker pull  registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test:v1
屏幕快照 2021-03-18 下午9.49.11.png

9,删除镜像

# 在运行的nginx 会报错无法删除
[root@\ docker~]# docker rmi nginx
Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container d2a9d46baeab is using its referenced image f6d0b4767a6c



-f  强制删除(只能删除镜像的所有tag,不会删除镜像)
[root@\ docker~]# docker rmi -f nginx
Untagged: nginx:latest
Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa



# 查看nginx仍然在运行
[root@\ docker~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS                   NAMES
d2a9d46baeab   f6d0b4767a6c   "/docker-entrypoint.…"   13 hours ago   Up 13 hours   0.0.0.0:49153->80/tcp   crazy_austin



# 查看f6d0b4767a6就是nginx
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
<none>       <none>    f6d0b4767a6c   2 months ago   133MB



#删除进程
[root@\ docker~]# docker rm -f d2a9d46baeab
d2a9d46baeab

#查看已经不再运行
[root@\ docker~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES



#再次执行删除镜像
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
<none>       <none>    f6d0b4767a6c   2 months ago   133MB


[root@\ docker~]# docker rmi f6d0b4767a6c
Deleted: sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74
Deleted: sha256:4dfe71c4470c5920135f00af483556b09911b72547113512d36dc29bfc5f7445
Deleted: sha256:3c90a0917c79b758d74b7040f62d17a7680cd14077f734330b1994a2985283b8
Deleted: sha256:a1c538085c6f891424160d8db120ea093d4dda393e94cd4713e3fff3c82299b5
Deleted: sha256:a3ee2510dcf02c980d7aff635909612006fd1662084d6225e52e769b984abeb5
Deleted: sha256:cb42413394c4059335228c137fe884ff3ab8946a014014309676c25e3ac86864

10,清空镜像

# 默认不会情况任何镜像
[root@\ docker~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B




# 参数-a

[root@\ 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: redis:latest
untagged: redis@sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
untagged: registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test:v1
untagged: registry.cn-hangzhou.aliyuncs.com/aliyun_ltt/test@sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892
deleted: sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
deleted: sha256:de66cfbf4712b8ba9ef292e08ef7487be26d9d21b350548e400ae351405d820e
deleted: sha256:79b2381e35429e8fc04d31b3445f069c22d288bf5c4cba7b7c10004ff78ae201
deleted: sha256:1d047d19be363b00139990d4d7f392dabdb0809dbc9d0fbe67c1f15b8caed27a
deleted: sha256:8c41f4e708c37059df28ae1cabc200a6db2fee45bd3a2cadcf70f2765bb68730
deleted: sha256:b51317bef36fe1900be48402c8a41fcd9cdb6b8950c10209f764473cb8323371

Total reclaimed space: 35.04MB

11,查看镜像构建历史

[root@\ docker~]# docker pull redis
[root@\ docker~]# docker pull alpine
[root@\ docker~]# docker pull busybox

[root@\ docker~]# docker history alpine
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
7731472c3f2a   2 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>      2 months ago   /bin/sh -c #(nop) ADD file:edbe213ae0c825a5b…   5.61MB

12,保存镜像

1,保存正在运行的容器直接为镜像(docker commit + id)
# 先开启一个镜像
[root@\ docker~]# docker run -d -P redis
f263ffb0304864711361214326507ec9036899bf918f1af3f35e9c62937c0ae0
[root@\ docker~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS        PORTS                     NAMES
f263ffb03048   redis     "docker-entrypoint.s…"   2 seconds ago   Up 1 second   0.0.0.0:49154->6379/tcp   quizzical_banzai



# 查看docker commit可加的参数
[root@\ docker~]# docker commit -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)



# 保存正在运行的redis为镜像
[root@\ docker~]# docker commit -a 'ltt' -m'正在运行的redis' -p f263ffb03048 test:v1
sha256:6266d03535248a06715c0239018ea5d8581ea93246ef932870115e415f65a4d5

#查看镜像
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
test         v1        6266d0353524   46 seconds ago   104MB
... ...







2,保存正在运行的容器为压缩包(docker export +id > 压缩包)

# 查看redis进程id
[root@\ docker~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                     NAMES
f263ffb03048   redis     "docker-entrypoint.s…"   10 minutes ago   Up 10 minutes   0.0.0.0:49154->6379/tcp   quizzical_banzai

# 保存正在运行的redis为压缩包
[root@\ docker~]# docker export f263ffb03048 > redis.tar


# 查看压缩包
[root@\ docker~]# ll
-rw-r--r--  1 root root 104178688 2021-03-19 09:40 redis.tar


# 保存压缩包为镜像
[root@\ docker~]# docker import redis.tar test:v2
sha256:49a17ce7caeb50bcdad65742912bb1a5d6f20a8e2d315b516b675a83840dcbaa

# 查看镜像
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
test         v2        49a17ce7caeb   10 seconds ago   101MB












3,保存镜像为压缩包(docker save 镜像id/名称 > 包名称;),(save/load)

[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
test         v2        49a17ce7caeb   10 seconds ago   101MB
test         v1        6266d0353524   7 minutes ago    104MB
alpine       latest    7731472c3f2a   2 months ago     5.61MB
redis        latest    621ceef7494a   2 months ago     104MB
busybox      latest    b97242f89c8a   2 months ago     1.23MB


[root@\ docker~]# docker save 7731472c3f2a > alpine.tar
或者
[root@\ docker~]# docker save -o alpine.newtar 7731472c3f2a

[root@\ docker~]# ll
-rw-------  1 root root   5888000 2021-03-19 09:49 alpine.newtar
-rw-r--r--  1 root root   5888000 2021-03-19 09:47 alpine.tar
# 注意,这两种的权限不同



#导入到镜像
[root@\ docker~]# docker load < alpine.tar
c04d1437198b: Loading layer   5.88MB/5.88MB
Loaded image ID: sha256:7731472c3f2a25edbb9c085c78f42ec71259f2b83485aa60648276d408865839


# 注意,如果导入用id保存,没有名称和标签;必须得用名称保存
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
... ...
<none>       <none>    7731472c3f2a   2 months ago     5.61MB



测试:
# 
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
 ... ...
busybox      latest    b97242f89c8a   2 months ago     1.23MB


# 先把镜像保存为包
[root@\ docker~]# docker save busybox:latest > busybox.tar

# 删除原镜像测试
[root@\ docker~]# docker rmi busybox:latest

# 压缩包导入为镜像
[root@\ docker~]# docker load < busybox.tar
0064d0478d00: Loading layer   1.45MB/1.45MB
Loaded image: busybox:latest

# 查看有了名称
[root@\ docker~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
... ...
busybox      latest    b97242f89c8a   2 months ago     1.23MB

13,保存镜像三种方式的区别


保存镜像三种方式的区别

1、export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
2、export可以重命名镜像名称而save则不行
3、save可以同时保存多个镜像而export则不行


# commit及export/inport 针对的是容器
# save/load 针对的是镜像

相关文章

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • 记录一次Docker的学习

    Docker学习 Docker概述 Docker安装 Docker命令镜像命令容器命令操作命令... Docker...

  • Docker的使用教程

    安装Docker 配置阿里云镜像加速器 Docker常用命令 Docker镜像命令 Docker容器命令 Dock...

  • Docker

    Docker学习目标 Docker概述 Docker安装 Docker命令镜像命令容器命令操作命令... Dock...

  • Docker 安装 mysql5.7

    docker拉取镜像命令 docker pull mysql:5.7 docker安装MySQL命令 docker...

  • Docker的安装及基础命令

    一、概述 1.1. 学习路径 Docker概述 Docker安装 Docker命令镜像命令容器命令操作命令... ...

  • docker 安装

    1、安装docker 命令: 2、使用命令: 3、启动docker 服务: 4、查看docker镜像: 安装完毕。...

  • Mac下Docker+jenkins自动化打包部署

    一、安装 1、Docker安装 使用brew命令下载安装docker 镜像加速 下载jenkins镜像 将jenk...

  • 2.4-docker es安装插件

    docker的es镜像如何安装插件 使用 docker ps 命令获取docker镜像列表 使用 sudo...

  • docker安装tomcat

    docker安装tomcat 安装镜像 使用 docker search tomcat 命令来查看可用版本: 这里...

网友评论

      本文标题:docker安装,镜像命令

      本文链接:https://www.haomeiwen.com/subject/jeppcltx.html