docker run --name try1 -d -p 80:80 nginx
启动nginx 的容器,并命名为try1 -p 主机端口:容器端口
docker exec
docker exec -it 8f01eb805359 /bin/bash 指定容器8f01eb805359(容器ID),进入交互系统
docker ps [option] 列出容器 -a 显示多有容器包括未运行的
docker commit 创建镜像 缺点 黑箱操作,除了当事人,其他人不知道操作的命令,不利于维护
dockerfile
基本操作 mkdir /temp
cd temp
touch Dockerfile
Dockerfile的基本写法、
FROM nginx
USER root
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.htm
Dockerfile的特殊镜像
from scratch 这个镜像是虚拟的概念,空白镜像,这句话的意思是,你不以任 何镜像作为基础,接下来所写的镜像就是第一层
以上边为例,docker build -t nginx:v3 .
docker buildx build --no-cache --platform linux/amd64,linux/arm64 -t harbor.com/paas/test:v2345 . --push (双架构镜像)
在这里我们指定了最终镜像的名称 -t nginx:v3
$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
---> e43d811ce2f4
Step 2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
---> Running in 9cdc27646c7b
---> 44aa4490ce2c
Removing intermediate container 9cdc27646c7b
Successfully built 44aa4490ce2c
从命令的输出结果中,我们可以清晰的看到镜像的构建过程。在 Step 2
中,如同我们之前所说的那样,RUN
指令启动了一个容器 9cdc27646c7b
,执行了所要求的命令,并最后提交了这一层 44aa4490ce2c
,随后删除了所用到的这个容器 9cdc27646c7b
。
Dockerfile指令
COPY
ADD (在 Docker 官方的 Dockerfile 最佳实践文档 中要求,尽可能的使用 COPY
,因为 COPY
的语义很明确,就是复制文件而已,而 ADD
则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 ADD
的场合,就是所提及的需要自动解压缩的场合。)
直接用Git repo进行构建镜像