Docker镜像制作导出及发布

Docker镜像制作导出及发布

通过docker commit

启动一个centos容器
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              ff426288ea90        19 months ago       207 MB
[root@docker ~]# docker run -it centos:latest /bin/bash

安装httpd服务
[root@docker ~]# docker run -it centos:latest
[root@03b4daf12929 /]# yum install httpd -y
Crtl+P+Q

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
03b4daf12929        centos:latest       "/bin/bash"         About a minute ago   Up About a minute                       ecstatic_euclid

docker commit :从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

[root@docker ~]# docker commit 03b4daf12929 centos-httpd:latest
sha256:d467363743ec0acc9dae72b2720717e0f67e468553f511bbc81e71638e804158
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-httpd        latest              d467363743ec        3 seconds ago       349 MB
centos              latest              ff426288ea90        19 months ago       207 MB


通过docker build

[root@docker ~]# vim Dockerfile
FROM centos:latest	#基于 centos:latest镜像
MAINTAINER lpf	#作者
RUN yum install -y httpd bash yum  net-tools initscripts  vi coreutils	#RUN执行一个命令
ADD start.sh /usr/local/bin/start.sh	#ADD 源文件拷贝到新的地方
ADD index.html /var/www/html/index.html
CMD /usr/local/bin/start.sh run	#开机运行脚本

[root@docker ~]# cat start.sh 
/usr/sbin/httpd -DFOREGROUND
[root@docker ~]# chmod +x start.sh 

[root@docker ~]# cat index.html 
Docker build seccessful
===========================================
[root@docker ~]# docker build -t centos-httpd:v1 .
Sending build context to Docker daemon 209.4 kB
Step 1/6 : FROM centos:latest
 ---> ff426288ea90
Step 2/6 : MAINTAINER lpf
 ---> Running in 90c28c8e4e2d
 ---> 766aa65e49de
Removing intermediate container 90c28c8e4e2d
Step 3/6 : RUN yum install -y httpd bash yum  net-tools initscripts  vi coreutils
 ---> Running in 61b3d4e9e9ed
......
Complete!
 ---> 5473b9f09185
Removing intermediate container 61b3d4e9e9ed
Step 4/6 : ADD start.sh /usr/local/bin/start.sh
 ---> ca388422fea3
Removing intermediate container eef5c9f126f6
Step 5/6 : ADD index.html /var/www/html/index.html
 ---> ab8baf6a8d8b
Removing intermediate container 273e55b32375
Step 6/6 : CMD /usr/local/bin/start.sh
 ---> Running in 0302be7ee225
 ---> fca94ee4fd0d
Removing intermediate container 0302be7ee225
Successfully built fca94ee4fd0d

===========================================================
docker build 命令用于使用 Dockerfile 创建镜像。
docker build [OPTIONS] PATH | URL | -
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式

查看我们构建的镜像
[root@docker ~]# docker images centos-httpd:v1
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
centos-httpd        v1                  84e66a7ef3d2        About a minute ago   364 MB

用构建的镜像启动容器
[root@docker ~]# docker run -dit centos-httpd:v1
9858f070d1091b344b226833bb537c487fbdcce1c19eb73dcaccb9f7c4a60f46

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
9858f070d109        centos-httpd:v1     "/bin/sh -c /usr/l..."   About a minute ago   Up About a minute                       vigilant_ardinghelli

[root@docker ~]# docker exec -it 9858f070d109 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
36: eth0@if37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever
[root@docker ~]# curl 172.17.0.3
Docker build seccessful

导出镜像

docker save : 将指定镜像保存成 tar 归档文件。
docker save [OPTIONS] IMAGE [IMAGE...]
-o :输出到的文件。
[root@docker ~]# docker save -o centos-httpd.tar centos-httpd:v1
[root@docker ~]# ll centos-httpd.tar
-rw------- 1 root root 373821440 Aug 31 17:49 centos-httpd.tar

发布镜像

1. 在dockerhub 注册账号
2.命令行登陆
docker login -u 用户名 -p 密码
[root@docker ~]# docker login -u xxxx -pxxxx 
Login Succeeded
3. docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
USAGE:docker push [OPTIONS] NAME[:TAG]
--disable-content-trust :忽略镜像的校验,默认开启
发布了65 篇原创文章 · 获赞 48 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/DoloresOOO/article/details/100177218
今日推荐