1.Docker命令
1.1.run
# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash
1.2.start/stop/restart
# 启动已被停止的容器mynginx
docker start mynginx
# 停止运行中的容器mynginx
docker stop mynginx
# 重启容器mynginx
docker restart mynginx
1.3.kill
# 根据容器名字杀掉容器
docker kill tomcat7
# 根据容器ID杀掉容器
docker kill 65d4a94f7a39
1.4.rm
# 强制删除容器 db01、db02:
docker rm -f db01 db02
# 删除容器 nginx01, 并删除容器挂载的数据卷:
docker rm -v nginx01
# 删除所有已经停止的容器:
docker rm $(docker ps -a -q)
1.5.create
# 使用docker镜像nginx:latest创建一个容器,并将容器命名为mynginx 不启动它
docker create --name mynginx nginx:latest
1.6.ps
# 列出所有在运行的容器信息。
docker ps
# 列出最近创建的5个容器信息。
docker ps -n 5
# 列出所有创建的容器ID。
docker ps -a -q
1.7.exec
-d 后台运行
# 在容器 mynginx 中以交互模式执行容器内 /root/nginx.sh 脚本
docker exec -it mynginx /bin/sh /root/nginx.sh
# 在容器 mynginx 中开启一个交互模式的终端
docker exec -i -t mynginx /bin/bash
# 也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。
docker ps -a
docker exec -it 9df70f9a0714 /bin/bash
1.8.top
# 查看容器mymysql的进程信息。
docker top mymysql
# 查看所有运行容器的进程信息。
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
1.9.port
# 查看容器mynginx的端口映射情况。
docker port mymysql
2.Dockerfile关键字
关键字 | 用法 | 示例 |
---|---|---|
FROM | 指定基础镜像,用于后续的指令构建。 | FROM ubuntu:latest |
LABEL | 添加镜像的元数据,使用键值对的形式。 | |
RUN | 在构建过程中在镜像中执行命令。 | RUN apt-get update |
CMD | 指定容器创建时的默认命令(只能存在1条 )。 |
CMD [“ll”,“-h”] |
ENTRYPOINT | 设置容器创建时的主要命令。(不可被覆盖) | |
EXPOSE | 声明容器运行时监听的特定网络端口。 | |
ENV | 在容器内部设置环境变量。 | ENV PATH=/app:$PATH |
ADD | 将文件、目录或远程URL复制到镜像中。 | |
COPY | 将文件或目录复制到镜像中。 | COPY abc /app |
VOLUME | 为容器创建挂载点或声明卷。 | |
WORKDIR | 设置后续指令的工作目录。 | WORKDIR /app |
USER | 指定后续指令的用户上下文。 | |
ARG | 定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。 | |
ONBUILD | 当该镜像被用作另一个构建过程的基础时,添加触发器。 | |
STOPSIGNAL | 设置发送给容器以退出的系统调用信号。 | |
HEALTHCHECK | 定义周期性检查容器健康状态的命令。 | |
SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。 |
# 基于空白镜像
FROM scratch
# 先把系统的文件拷贝到Dockerfile所在目录,因为COPY命令是以当前路径为根目录,拷贝可执行文件和库
COPY /bin/echo /bin/echo
# 拷贝可执行文件依赖库,通过执行 ldd /bin/echo 查看依赖
COPY /lib64/libc.so.6 /lib64/libc.so.6
COPY /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
# 设置当前工作目录
WORKDIR /
# 容器创建时执行指令
CMD ["/bin/echo", "hello docker"]
3.镜像打包
name:tag tag可以不要
# docker build -t name:tag Dockerfile目录
docker build -t mynginx:1.0 .
4.镜像运行
docker run -it mynginx:1.0
5.镜像导入导出
# 导出
docker save -o mynginx.tar mynginx:1.0
# 导入
docker load --input mynginx.tar
6.镜像查看
docker images [-a]
# 列出本地镜像中REPOSITORY为ubuntu的镜像列表
docker images ubuntu