docker 学习基本操作一

可写的容器层

  • 当容器启动时,一个新的可写层被加载到镜像的顶部;
  • 新增加的这一层叫做“容器层”,“容器层”之下的叫做“镜像层”;
  • 所有多容器的改动,无论是增加、删除、还是修改文件都只会发生在容器层;
  • 容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改,这个操作叫做copy-on-write

构建镜像:

方法:  
docker commit命令构建镜像  
docker-file构建镜像

docker commit

  • 运行容器:
     docker run -it 镜像名称
  • 安装需要的软件:
     在运行的容器的内部
  • 使用docker ps命令:
     查看当前正在运行的容器,主要是查看容器名称
  • 使用docker commit 运行容器名称 新的镜像名称
     创建镜像

docker file

1.创建dockerfile文件:

vim Dockerfile  
FROM ubuntu  
RUN apt-get update && apt-get -y install vim  

2.运行命令使用Dockerfile文件创建镜像:

[root@localhost ~]# docker build -t  ubuntu-dockerfile .
Sending build context to Docker daemon 4.055 MB
Step 1/2 : FROM ubuntu
Trying to pull repository docker.io/library/ubuntu ... 
latest: Pulling from docker.io/library/ubuntu
84ed7d2f608f: Pull complete 
be2bf1c4a48d: Pull complete 
a5bdc6303093: Pull complete 
e9055237d68d: Pull complete 
Digest: sha256:868fd30a0e47b8d8ac485df174795b5e2fe8a6c8f056cc707b232d65b8a1ab68
Status: Downloaded newer image for docker.io/ubuntu:latest
 ---> 1d9c17228a9e
Step 2/2 : RUN apt-get update && apt-get install -y vim
 ---> Running in c0eb0a550442
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Processing triggers for libc-bin (2.27-3ubuntu1) ...
 ---> f24a4faf7b23
Removing intermediate container c0eb0a550442
Successfully built f24a4faf7b23

命令解释:
docker build :
-t :
ubuntu-dockerfile :
. :

3.查看创建成功的镜像文件

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-dockerfile   latest              f24a4faf7b23        8 minutes ago       170 MB

4.查看镜像的构建历史,也就是dockfile的执行过程

[root@localhost ~]# docker history ubuntu-dockerfile
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
f24a4faf7b23        2 hours ago         /bin/sh -c apt-get update && apt-get insta...   83.8 MB             
1d9c17228a9e        4 days ago          /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           4 days ago          /bin/sh -c mkdir -p /run/systemd && echo '...   7 B                 
<missing>           4 days ago          /bin/sh -c rm -rf /var/lib/apt/lists/*          0 B                 
<missing>           4 days ago          /bin/sh -c set -xe   && echo '#!/bin/sh' >...   745 B               
<missing>           4 days ago          /bin/sh -c #(nop) ADD file:c0f17c7189fc11b...   86.7 MB 

镜像的缓存特性:

  • Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。
  • 如果不想使用缓存,可以在docker build 命令中添加--no-cache命令选项
  • 如果改变Dockfile中命令的执行顺序,但由于docker分层的结构特性,Docker 必须重建受影响的镜像层

1.修改原有的Dockerfile文件,添加复制一个文件到/

vim Dockerfile
FROM ubuntu
RUN apt-get update && apt-get install -y vim
COPY testfile /

2.创建需要被复制的文件

[root@localhost ~]# touch testfile

3.执行命令进行新镜像的构建

[root@localhost ~]# docker build -t  ubuntu-dockerfile2 .
Sending build context to Docker daemon 4.059 MB
Step 1/3 : FROM ubuntu
 ---> 1d9c17228a9e
Step 2/3 : RUN apt-get update && apt-get install -y vim
 ---> Using cache     #使用了缓存
 ---> f24a4faf7b23
Step 3/3 : COPY testfile /
 ---> ae5a3ec0f33a
Removing intermediate container 5461a0ed5c9a #移除创建镜像时启动的中间容器
Successfully built ae5a3ec0f33a #成功创建新的镜像

镜像的保存和分发:

docker hub是docker公司开发的和维护的公共仓库,用户可以注册账号后将自己构建的镜像通过docker push 用户名/仓库名:tag
命令将镜像上传到自己的仓库。

  • 首相使用docker images m 命令查看本地已经构建的镜像:
root@jyq-virtual-machine:/home/jyq# docker  images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              d3a13ec4a0f1        2 weeks ago         132MB
root@jyq-virtual-machine:/home/jyq# 

  • 然后使用docker tag命令对存在的镜像进行重新的命名:
root@jyq-virtual-machine:/home/jyq# docker  tag httpd:latest jiyongqiang0310/learn-test:v1
root@jyq-virtual-machine:/home/jyq# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
jiyongqiang0310/learn-test   v1                  d3a13ec4a0f1        2 weeks ago         132MB
httpd                        latest              d3a13ec4a0f1        2 weeks ago         132MB

  • 登录已经申请的docker hub账号:
# 使用 -u 选项指定自己的用户名
root@jyq-virtual-machine:/home/jyq# docker login -u jiyongqiang0310
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@jyq-virtual-machine:/home/jyq#

  • 登录成功后上传自己已经构建好的镜像文件:
root@jyq-virtual-machine:/home/jyq# docker push jiyongqiang0310/learn-test:v1
The push refers to repository [docker.io/jiyongqiang0310/learn-test]
32d58e8790a5: Layer already exists 
15c7c3e3b182: Layer already exists 
bc313b7c45f1: Layer already exists 
7fb2893e5a45: Layer already exists 
0a07e81f5da3: Layer already exists 
v1: digest: sha256:214019bfc77677ac1f0c86b3a96e2b91600de7e2224f195b446cb13572cebb6b size: 1367
root@jyq-virtual-machine:/home/jyq# 

  • 登录 [https://hub.docker.com就可以看到自己上产的镜像文件
    企业微信截图_15517653131553.png

构建自己的仓库:

  • 首先在自己本地的根目录创建一个用于存储镜像文件的目录: root@jyq-virtual-machine:/# mkdir myregistry
  • 然后使用docker开源的仓库软件启动一个容器:
# 启动一个仓库容器
root@jyq-virtual-machine:/# docker  run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
169185f82c45: Pull complete 
046e2d030894: Pull complete 
188836fddeeb: Pull complete 
832744537747: Pull complete 
7ceea07e80be: Pull complete 
Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b
Status: Downloaded newer image for registry:2
83936c63e2488a40170f8c1afc42cce5f444f0b73f699ea4a5f4293a6633c1f8
#查看容器是否已经运行成功
root@jyq-virtual-machine:/# docker  ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
83936c63e248        registry:2          "/entrypoint.sh /etc…"   54 seconds ago      Up 53 seconds       0.0.0.0:5000->5000/tcp   xenodochial_noyce
35eaaec97f0b        httpd               "httpd-foreground"       24 hours ago        Up 24 hours         0.0.0.0:8080->80/tcp     goofy_swartz

  • 将本地已经存在的镜像进行重命名,使其满足[registry-host]:[port]/[username]/xxx的格式:
root@jyq-virtual-machine:/# docker tag httpd:latest 192.168.100.128:5000/jiyongqiang/httpd:v1
root@jyq-virtual-machine:/# docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
192.168.100.128:5000/jiyongqiang/httpd   v1                  d3a13ec4a0f1        2 weeks ago         132MB

  • 然后使用docker push 命令将已经构建好的容器上传到自己的私有仓库。

命令回顾:

  • docker run 运行容器
  • docker commit 将运行的容器提交生成新的镜像
  • docker build 使用DockerFile文件构建镜像
  • docker history 查看某镜像构建时执行的命令
  • docker images 查看本地已经存在的镜像文件
  • docker ps -a 查看所有状态的容器
  • docker container ls -a 同上
  • docker tag 给本地镜像重新镜像tag命名
  • docker pull 从仓库拉取镜像
  • docker push 将镜像上传到仓库
  • docker rmi 删除没有被启动容器使用的镜像文件
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容