docker基础操作命令-----镜像篇

前言

一、什么是Docker镜像?

镜像是构建 Docker 的基石。用户基于镜像来运行自己的容器。镜像也是 Docker 生命周 期中的“构建”部分。也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

一 . 安装docker 服务

1.1 首先,下载环境软件

[root@server 11 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

1.2 设置阿里云YUM软件源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

1.3 开启路由功能,优化速度

[root@server 11 ~]# vim /etc/sysctl/conf
net.ipv4.ip_forward=1
优化
[root@server 11 ~]# sysctl -p
net.ipv4.ip_forward = 1

1.4 加速优化 阿里云镜像加速

sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF'
 {
    
     
"registry-mirrors": ["https://*******.mirror.aliyuncs.com"]
 } 
EOF
 sudo systemctl daemon-reload 

1.5 下载安装docker

[root@server 11 ~]# yum install -y docker-ce

sudo systemctl restart docker

二. dock 镜像常用操作

2.1查看版本docker

[root@docker2 apache]# docker --version
Docker version 19.03.13, build 4484c46d9d

2.2 镜像下载及删除,及查看列表信息,设置别名

2.2.1 例如,查找nginx

STARS 数 越高越好哈

[root@server 11 ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13745               [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…1874                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…787                                     [OK]

2.2.2 下载nginx 镜像:

[root@server 11 ~]# docker pull nginx

Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@server 11 ~]#

2.2.3 查看下载镜像文件的列表及信息

[root@server 11 overlay2]# cd /var/lib/docker/image/overlay2
[root@server 11 overlay2]# ls
distribution  imagedb  layerdb  repositories.json

查看下载镜像列表

[root@server 11 overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED           SIZE
nginx               latest              7e4d58f0e5f3        6 days ago          133MB
[root@server 11 overlay2]#

获取镜像详细信息

[root@server 11 overlay2]# docker inspect 7e4d58f0e5f3
[
    {
    
    
        "Id": "sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d",
        "RepoTags": [
            "nginx:latest"
        ],

2.2.4 对镜像添加新标签,类似于硬连接,别名

(删除一个,不影响源文件)
[root@server 11 overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED           SIZE
nginx               latest              7e4d58f0e5f3        6 days ago          133MB
[root@server 11 overlay2]# docker tag nginx:latest nginx:web
[root@server 11 overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED           SIZE
nginx               latest              7e4d58f0e5f3        6 days ago          133MB
nginx               web                 7e4d58f0e5f3        6 days ago          133MB

2.2.5 删除镜像文件操作方法

docker rmi  文件名:标签        或     ID 号
[root@server 11 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED           SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB
nginx               web                 7e4d58f0e5f3        7 days ago          133MB

若有多个 tag 名,必须删除的只剩下一个,才好删除,或者没有容器使用它

[root@SERVER 10 opt]# docker rmi 7e4d58f0e5f3
Untagged: nginx:latest
Untagged: nginx@sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Deleted: sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d
Deleted: sha256:eedfd37abc0b05520a719addf6675b372687fe9a2ed1746fa988335720d4376c
Deleted: sha256:4f052ddd517f6dc5b74d2f7d881838b8ec6a5e67ec7a1da8bbbe91e1e068ad3a
Deleted: sha256:5f78154d356577280e4ac0d9bf0d021d488828e57f953b011dcbadaecd539ce4
Deleted: sha256:db5783668220e16186080f3e9d69ad748aab8c72abb8e457f6fc45369461634b
Deleted: sha256:07cab433985205f29909739f511777a810f4a9aff486355b71308bb654cdc868

2.3 镜像的导入和导出

2.3.1 保存镜像

docker save -o nginx nginx: latest
ls -lh nginx
[root@docker1 ~]# ls -lh
总用量 131M
-rw-------  1 root root 131M 918 10:36 nginx

2.3.2 载入镜像的操作

方法一
docker load < nginx
方法二:
docker --input nginx

2.3.3 实例,将镜像复制到另一台进行导入

[root@docker1 ~]# ls -lh
总用量 131M
-rw------- 1 root root 131M 9月 18 10:36 nginx
将镜像拷贝到 另外一台OPT上

[root@docker1 ~]# scp nginx root@192.168.100.11:/opt
The authenticity of host '192.168.100.11 (192.168.100.11)' can't be established.
ECDSA key fingerprint is SHA256:z+83zi+ptU8EEYf7ccqK5tDPDLa8ekQe+pKQ+UKX72Y.
ECDSA key fingerprint is MD5:a9:be:c0:fa:44:1b:e6:84:83:78:55:2b:9f:88:c7:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.11' (ECDSA) to the list of known hosts.
[email protected]'s password:
nginx                     100%  131MB 109.5MB/s   00:01

在docker2 上将nginx 进行导入操作

[root@docker2 ~]# systemctl restart docker
[root@docker2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
[root@docker2 ~]# cd /opt
[root@docker2 opt]# ls
containerd  nginx  rh
[root@docker2 opt]# docker load < nginx 
07cab4339852: Loading layer  72.49MB/72.49MB
f431d0917d41: Loading layer  64.31MB/64.31MB
60c688e8765e: Loading layer  3.072kB/3.072kB
eabfa4cd2d12: Loading layer  4.096kB/4.096kB
908cf8238301: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest

导入成功

[root@docker2 opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED         SIZE
nginx               latest              7e4d58f0e5f3        7 days ago         133MB

2.4 创建镜像的三种方式

2.4.1 基于现有容器镜像

//创建容器加载centos镜像

[root@docker2 opt]# docker create -it centos /bin/bash
99b1f22799146765b7c0aa61263e1d6ac96f2ae33a2bad54154be71e594e8b64
[root@docker2 opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
99b1f2279914        centos              "/bin/bash"         8 seconds ago       Created                                         gallant_fermat
0b152c50576d        centos              "/bin/bash"         14 minutes ago      Exited (0) 9 minutes ago                        db1
bc0dbbdd3408        centos              "/bin/bash"         16 minutes ago      Exited (0) 15 minutes ago                       web100

基于容器中的镜像,创建一个新镜像daoke:centos

                         -m  说明文字               -a  作者             镜像名
[root@docker2 opt]# docker commit -m "new" -a "daoke" 99b1f2279914 daoke:centos
sha256:1d138a07d4902aaa794c52ccdc93b5183ad430db79b884acf659deb3df07331d
[root@docker2 opt]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
daoke                 centos              1d138a07d490        10 seconds ago      215MB
nginx                 latest              7e4d58f0e5f3        9 days ago          133MB
centos                latest              0d120b6ccaa8        5 weeks ago         215MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago         382MB

2.4.2 基于本地模板创建

第二种,基于模板
首先下载模板文件

wget  http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
[root@docker2 opt]#  ls
 debian-7.0-x86-minimal.tar.gz  

基于模板造一个新镜像 docker:new

[root@docker2 opt]# cat debian-7.0-x86-minimal.tar.gz  | docker import - daoke:new
sha256:fcce02805fd38dc2b5ee2004a114ead3893ac05e93c9e888739741c6a5e0adfe
[root@docker2 opt]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
daoke                 new                 fcce02805fd3        6 seconds ago       215MB
daoke                 centos              1d138a07d490        6 minutes ago       215MB
centos                latest              0d120b6ccaa8        5 weeks ago         

2.4.3 基于dockerfile 自定义

创建Dockerfile文件

创建 apache 文件夹
mkdir apache
造 三个配置文件

第一个文件
创建Dockerfile

vim  Dockerfile

FROM centos:7
MAINTAINER THIS IS SHA    # 描述信息
RUN yum -y update
RUN yum -y install httpd
EXPOSE 80
ADD index.html /var/www/html/index.html    #宿主机当前路径    容器镜像的绝对路径
ADD run.sh  /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

第2个文件,因为本地没有此文件,所以需要创建

 vim index.html
<h1>this is sha <h1>

第3个文件,因为本地没有此文件,所以需要创建

vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

~运行

[root@docker1 apache]# docker build -t httpd:centos .
Sending build context to Docker daemon   5.12kB
Step 1/8 : FROM centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
 ---> 7e6257c9f8d8
Step 2/8 : MAINTAINER THIS IS SHA
 ---> Running in 77967ea2b622
Removing intermediate container 77967ea2b622
 ---> 7f6406113ce3
Step 3/8 : RUN yum -y install httpd
 ---> Running in 0aec6932aaac
Loaded plugins: fastestmirror, ovl
....................................................
..................................................
Complete!
Removing intermediate container 0aec6932aaac
 ---> 26c0482b9540
Step 4/8 : EXPOSE 80
 ---> Running in db3674af6903
Removing intermediate container db3674af6903
 ---> 0cc8dd1e9cc4
Step 5/8 : ADD index.html /var/www/html/index.html
 ---> fa2735c4e125
Step 6/8 : ADD run.sh /run.sh
 ---> 66be69dbf3c9
Step 7/8 : RUN chmod 755 /run.sh
 ---> Running in 858f1581b77d
Removing intermediate container 858f1581b77d
 ---> bbde7812ef10
Step 8/8 : CMD ["/run.sh"]
 ---> Running in a8de92918e2b
Removing intermediate container a8de92918e2b
 ---> e0954567d36f
Successfully built e0954567d36f
Successfully tagged httpd:centos
结束
运行成功

2.4.4 端口的映射 操作,及访问httpd首页测试(接上一步)

小P是手工指定
//将宿主机的外8080端口 映射到容器的80端口

[root@docker1 apache]# docker run -dp 8080:80 httpd:centos   /
b2cfe6c22a22ece1601f7ca64451c34f9e49b90315ff103afd499c463ebf999a
[root@docker1 apache]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED        STATUS                    PORTS                  NAMES
b2cfe6c22a22        httpd:centos          "/run.sh"                14 seconds ago      Up 13 seconds             0.0.0.0:8080->80/tcp   stoic_jennings
7eafa85b8f22        tomcat                "/usr/bin/bash -c ls"    2 days ago        Created                   8080/tcp               epic_meninsky
2d1960122721        tomcat                "/usr/bin/bash -c ls…"   2 days ago         Created                   8080/tcp               nice_matsumoto
0f52bf5f26ff        7e4d58f0e5f3          "/docker-entrypoint.…"   2 days ago         Exited (127) 2 days ago                          eloquent_payne
5fd35266ee99        paigeeworld/centos7   "/usr/bin/bash -c ls"    2 days ago        Exited (0) 2 days ago                            thirsty_jang
eae81d235bc9        paigeeworld/centos7   "/usr/bin/bash -c ls/"   2 days ago        Exited (127) 2 days ago                          confident_kowalevski
[root@docker1 apache]#

访问 httpd 网页测试

在这里插入图片描述

2.4.5 端口映射 大P 是随机指定端口

[root@docker2 apache]#  docker run -d  -P  httpd:centos
27e80f59c57acb58a5be8e157b1f8cd4ebe4dc10be2dbd297859cd0d48041cd6
[root@docker2 apache]# docker ps -a     //查看自动生成的端口号 32768
CONTAINER ID        IMAGE               COMMAND                  CREATED STATUS              PORTS                    NAMES
27e80f59c57a        httpd:centos        "/run.sh"                29 seconds ago Up 28 seconds       0.0.0.0:32768->80/tcp    funny_torvalds
7fadd2e6a90b        registry            "/entrypoint.sh /etc…"   2 hours ago  Up 2 hours          0.0.0.0:5000->5000/tcp   trusting_dijkstra
3f917b9bae94        registry            "/entrypoint.sh /bin…"   2 hours ago  Created                                      zen_wright
[root@docker2 apache]#

访问测试
在这里插入图片描述

2.5 公有仓库的上传

2.5.1公有仓库,需要到docker 官网 注册账号,通过登录等一系列操作

在这里插入图片描述

2.6 私有仓库的创建与镜像上传下载

自定义仓库
私有仓库端口 号 5000

2.6.1 先下载 docker pull registry


2.6.2 指定本地的作为端口,端口号为5000

docke 进程启动 会加载此配置文件

[root@docker1 docker]# vim daemon.json

 {
    
    
"insecure-registries" :["192.168.100.11:5000"],
"registry-mirrors": ["https://*******.mirror.aliyuncs.com"]
 }

重启服务生效

[root@docker1 docker]# systemctl restart docker


[root@docker2 opt]# docker ps -a     //查看容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STAT
[root@docker2 opt]# docker images    // 查看镜像 
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
daoke                 new                 fcce02805fd3        10 minutes ago      215MB
daoke                 centos              1d138a07d490        17 minutes ago      215MB
centos                latest              0d120b6ccaa8        5 weeks ago         215MB
registry              latest              2d4f4b5309b1        3 months ago        26.2MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago    382MB       

2.6.3 创建容器 加载registry

[root@docker2 opt]# docker create  -it  registry /bin/bash 

2.6.4 宿主机的/data/registry自动创建挂载容器中的/tmp/registry

-d 守护进程,让容器一直运行

[root@docker2 opt]# docker run -d  -p 5000:5000 -v /data/registry:/tmp/registry registry
7fadd2e6a90b0af5d98fba3b675334ee6dbb0b4eb6b48d8ed3d693a482ff2b6d

2.6.5 更改镜像标记格式,只有改成此格式才可上传

[root@docker2 opt]# docker tag daoke:centos  192.168.100.11:5000/docker
[root@docker2 opt]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED     SIZE
daoke                        new                 fcce02805fd3        18 minutes ago     215MB
192.168.100.11:5000/docker   latest              1d138a07d490        24 minutes ago     215MB

2.6.6 上传镜像到私有仓库

[root@docker2 opt]# docker push 192.168.100.11:5000/docker
The push refers to repository [192.168.100.11:5000/docker]
291f6e44771a: Pushed
latest: digest: sha256:3cc18fa35d1b8f8c558fd10c415fa06ea732162f8bb0860952b56a9897b6e93a size: 529

2.6.7 查看镜像

[root@docker2 opt]# curl -XGET http://192.168.100.11:5000/v2/_catalog
{
    
    "repositories":["docker"]}

2.6.8 从私有仓库中将镜像下载回本地

[root@docker2 opt]# docker pull 192.168.100.11:5000/docker
Using default tag: latest
latest: Pulling from docker
3c72a8ed6814: Pull complete
Digest: sha256:3cc18fa35d1b8f8c558fd10c415fa06ea732162f8bb0860952b56a9897b6e93a
Status: Downloaded newer image for 192.168.100.11:5000/docker:latest
192.168.100.11:5000/docker:latest
[root@docker2 opt]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED     SIZE
192.168.100.11:5000/docker   latest              1d138a07d490        31 minutes ago     215MB
registry                     latest              2d4f4b5309b1        3 months ago     26.2MB
paigeeworld/centos7          latest              4cbe7aa905e7        6 years ago     382MB

猜你喜欢

转载自blog.csdn.net/BIGmustang/article/details/108698227