编写一个dockerfile文件
常用指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱 例如:name<xxx@qq.com>
RUN # 镜像构建的时候需要运行的命令
ADD # 添加内容 添加同目录
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
编写一个自己的dockerfile文件
ROM centos
MAINTAINER you<123456789@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 125
CMD echo"------end------"
CMD /bin/bash
docker build 构建称为一个镜像
[root@izbp1doatyz9rmpmxs06naz home]# docker build -f /home/dockerfile -t mycentos:1.0 .
Sending build context to Docker daemon 3.584kB
Step 1/9 : FROM centos
---> 300e315adb2f
Step 2/9 : MAINTAINER you<123456789@qq.com>
---> Running in a5398ec2c2a1
Removing intermediate container a5398ec2c2a1
---> 128e29086a45
Step 3/9 : ENV MYPATH /usr/local
---> Running in 337368c11e59
Removing intermediate container 337368c11e59
---> d0fe955afd6e
Step 4/9 : WORKDIR $MYPATH
---> Running in 8940092e765c
Removing intermediate container 8940092e765c
---> 38ca5b27b000
Step 5/9 : RUN yum -y install vim
---> Running in 763d09dace60
CentOS Linux 8 - AppStream 2.7 MB/s | 6.3 MB 00:02
CentOS Linux 8 - BaseOS 3.0 MB/s | 2.3 MB 00:00
CentOS Linux 8 - Extras 10 kB/s | 9.6 kB 00:00
Last metadata expiration check: 0:00:01 ago on Sat Apr 17 13:26:49 2021.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:8.0.1763-15.el8 appstream 1.4 M
Installing dependencies:
gpm-libs x86_64 1.20.7-15.el8 appstream 39 k
vim-common x86_64 2:8.0.1763-15.el8 appstream 6.3 M
vim-filesystem noarch 2:8.0.1763-15.el8 appstream 48 k
which x86_64 2.21-12.el8 baseos 49 k
Transaction Summary
================================================================================
Install 5 Packages
Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm 165 kB/s | 39 kB 00:00
(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 228 kB/s | 48 kB 00:00
(3/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm 2.5 MB/s | 1.4 MB 00:00
(4/5): which-2.21-12.el8.x86_64.rpm 431 kB/s | 49 kB 00:00
(5/5): vim-common-8.0.1763-15.el8.x86_64.rpm 7.0 MB/s | 6.3 MB 00:00
--------------------------------------------------------------------------------
Total 4.1 MB/s | 7.8 MB 00:01
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : which-2.21-12.el8.x86_64 1/5
Installing : vim-filesystem-2:8.0.1763-15.el8.noarch 2/5
Installing : vim-common-2:8.0.1763-15.el8.x86_64 3/5
Installing : gpm-libs-1.20.7-15.el8.x86_64 4/5
Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64 4/5
Installing : vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5
Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5
Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64 5/5
Verifying : gpm-libs-1.20.7-15.el8.x86_64 1/5
Verifying : vim-common-2:8.0.1763-15.el8.x86_64 2/5
Verifying : vim-enhanced-2:8.0.1763-15.el8.x86_64 3/5
Verifying : vim-filesystem-2:8.0.1763-15.el8.noarch 4/5
Verifying : which-2.21-12.el8.x86_64 5/5
Installed:
gpm-libs-1.20.7-15.el8.x86_64 vim-common-2:8.0.1763-15.el8.x86_64
vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
which-2.21-12.el8.x86_64
Complete!
Removing intermediate container 763d09dace60
---> 0c52cb404051
Step 6/9 : RUN yum -y install net-tools
---> Running in 40cc58d6803d
Last metadata expiration check: 0:00:09 ago on Sat Apr 17 13:26:49 2021.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
net-tools x86_64 2.0-0.52.20160912git.el8 baseos 322 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 322 k
Installed size: 942 k
Downloading Packages:
net-tools-2.0-0.52.20160912git.el8.x86_64.rpm 1.7 MB/s | 322 kB 00:00
--------------------------------------------------------------------------------
Total 540 kB/s | 322 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Verifying : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1
Installed:
net-tools-2.0-0.52.20160912git.el8.x86_64
Complete!
Removing intermediate container 40cc58d6803d
---> 51984fb4034e
Step 7/9 : EXPOSE 125
---> Running in 48b9e27e5eec
Removing intermediate container 48b9e27e5eec
---> 3c4de2399cf8
Step 8/9 : CMD echo"------end------"
---> Running in b1cc94d6bcbb
Removing intermediate container b1cc94d6bcbb
---> 03e47fb7dd28
Step 9/9 : CMD /bin/bash
---> Running in a71a8dd5cd6d
Removing intermediate container a71a8dd5cd6d
---> d168e47f6cf0
Successfully built d168e47f6cf0
在自己编写的dockerfile中,每一行的代码在生成镜像的时候就是一层。
查看自己生成的镜像:
[root@izbp1doatyz9rmpmxs06naz home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 d168e47f6cf0 9 seconds ago 291MB
docker run运行镜像
#运行之后直接进入工作目录 /usr/local
#在docker下载的centos是没有vim命令的
#RUN yum -y install vim添加了vim命令
[root@izbp1doatyz9rmpmxs06naz home]# docker run -it --name mycentos001 mycentos:1.0 /bin/bash
[root@15d580df2bba local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@15d580df2bba local]# vim test
[root@15d580df2bba local]# cat test
echo "hello world"
[root@15d580df2bba local]#
docker push发布镜像
1、首先要登录自己的docker账号
[root@izbp1doatyz9rmpmxs06naz home]# docker login -u yjp123
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
2、进行发布
如果直接用自己生成的镜像名进行上传,是上传不上去的。如果直接上传,会默认上传到官方的library。把生成的进行生成到自己的仓库就可以上传成功。
方法1:在docker build 的时候把名字命名为docker账号id/自己的镜像名。当上传的时候就会上传到自己的仓库
方法2:使用docker tag 镜像id docker账号id/自己的镜像名:版本号。就会新生成一个加了docker账号id前缀的镜像。内容不变。之后直接docker push docker账号id/自己的镜像名:版本号,就能上传成功。
[root@izbp1doatyz9rmpmxs06naz home]# docker tag d168e47f6cf0 yjp123/mycentos:1.0
[root@izbp1doatyz9rmpmxs06naz home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.0 d168e47f6cf0 27 minutes ago 291MB
yjp123/mycentos 1.0 d168e47f6cf0 27 minutes ago 291MB
nginx latest 62d49f9bab67 3 days ago 133MB
centos latest 300e315adb2f 4 months ago 209MB
[root@izbp1doatyz9rmpmxs06naz home]# docker push yjp123/mycentos
Using default tag: latest
The push refers to repository [docker.io/yjp123/mycentos]
tag does not exist: yjp2359471308/mycentos:latest
[root@izbp1doatyz9rmpmxs06naz home]# docker push yjp2359471308/mycentos:1.0
The push refers to repository [docker.io/yjp123/mycentos]
05de7977a5b1: Pushed
338515c99c8e: Pushed
2653d992f4ef: Mounted from library/centos
1.0: digest: sha256:ccb6fdbf7295f058a732025d4c0ab3a06f75f1b3bef39c3ff53946eef40b262e size: 953