Dockerfile镜像定制
vim Dockerfile
创建定制文件,写入具体配置内容
# 拉取基础镜像
FROM nginx
# 复制文件,<源路径1>... <目标路径>
COPY [--chown=<user>:<group>]
# <命令行命令> 等同于,在终端操作的 shell 命令。
RUN <命令行命令>
# 设置环境变量
ENV <key1>=<value1> <key2>=<value2>...
# 指定工作目录。
WORKDIR <工作目录路径>
...
docker build -t nginx:v1 .
执行定制文件,拉取镜像并执行命令
镜像
查看所有镜像
docker images
拉取镜像
docker pull nginx
删除镜像
docker rmi nginx
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker login -u 用户名 -p 密码 [server]
登出仓库
docker logout
标记本地镜像,将其归入某一仓库
docker tag nginx server/nginx:v1.0
上传镜像到仓库
docker push server/nginx:v1.0
容器
查看启动的容器
docker ps
-a 查看所有状态容器,包括停止运行的
停止运行的容器
docker stop nginx
删除已存在容器
docker rm nginx
创建一个名为nginx的容器并启动
docker run --name nginx -p 8080:80 -d nginx
如果暂时没有要运行的程序,会启动会自动退出,无法进去,可以开启交互进程
docker run --name nginx -dit nginx
启动过程中需要挂载数据目录的话
docker run --name nginx -v /var/data1:/app/data2 -dit nginx
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- --name="nginx-lb": 为容器指定一个名称;
- --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 设置环境变量;
- --env-file=[]: 从指定文件读入环境变量;
- --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- --link=[]: 添加链接到另一个容器;
- --expose=[]: 开放一个端口或一组端口;
- --volume , -v: 绑定一个卷,格式为:主机(宿主)目录:容器目录
如果已创建过,启动已存在的 nginx 容器
docker start nginx
进入已启动的容器命令行,退出时执行exit
即可
docker exec -it nginx bash
拷贝文件到容器中,需指定容器ID,输入前4位即可
docker cp dist.zip 1973:/website
将做好的容器保存为镜像,以备下次在用
docker commit -a "jadefan" -m "test" a404c6c174a2 myimages:v1
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。