行为 | 命令 | 例子 |
---|---|---|
查询镜像 | docker searh <image> | docker searh ubuntu |
拉取镜像 | docker pull <image> | docker searh ubuntu |
通过Dockerfile创建image | docker build -t xxx . | docker build -t bigdata-ubuntu . |
查看有哪些镜像 | docker images | docker images |
查看有哪些运行的容器 | docker ps (类似linux) | docker ps |
查看共有哪些容器 | docker ps -a | docker ps -a |
开启镜像(创建容器并运行) | docker run xx(如果没有镜像,那么会自动下载) docker run -d的-d代表后台运行 | docker run -d -p 10022:22 --name salve1 bigdata-ubuntu |
关闭容器 | docker stop <containerId>(docker ps查看容器id) | docker stop 818ndyf |
执行镜像的命令 | docker exec -it <containerId> <命令> | docker exec -it 818ndyf /bin/bash |
删除容器 | docker rm <containerId> | docker rm 818ndyf |
删除镜像 | docker rmi <imageId> | docker rm tdyflzyr66 |
在host和docker之间拷贝文件 | docker cp <filename> | docker cp 818ndyf:/opt/lampp/README-wsrep /opt/ |
登陆镜像仓库 | docker login -u <yourRepositor> | docker login -u catofzpp,执行命令输入账密 |
上传镜像到私有仓库 | docker push <imageName> | docker push catofzpp/jenkins |
docker提交 | docker commit <containerId> <imageName> | docker commit -a "作者:catofzpp" -m "文字说明" <容器id> <镜像名jenkins:latest> |
行为 | 命令 |
---|---|
指定基础镜像 | FROM |
执行命令(在容器里) | RUN |
添加文件(可以添加远程的文件) | ADD |
拷贝文件 | COPY |
执行命令(容器入口) | CMD |
暴露端口(服务器监听的端口) | EXPOSE |
指定路径 | WORKDIR |
维护者 | MAINTAINER |
设定环境变量 | ENV |
容器入口,容器启动时执行命令 | ENTRYPOINT |
指定用户 | USER |
指定挂在的卷 | VOLUME |
ADD可以将文件<src>拷贝到container的文件系统对应的路径<dest>,所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0。如果文件是可识别的压缩格式,则docker会帮忙解压缩。
如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下。
如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下。比如:
docker build github.com/creack/docker-firefox
docker-firefox目录下必须有Dockerfile和要ADD的文件。
ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。
docker exec -it <CONTAINER ID> /bin/bash
设置指令,用于container启动时指定的操作。该操作可以是执行自定义脚本,也可以是执行系统命令。该指令只能在文件中存在一次,如果有多个,则只执行最后一条。
三种格式:
CMD ["executable","param1","param2"] (like an exec, this is the preferred form)
CMD command param1 param2 (as a shell)
当Dockerfile指定了ENTRYPOINT,可使用:CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
设置指令,指定容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)
ENTRYPOINT command param1 param2 (as a shell)
Container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD。CMD主要用于container时启动指定的服务,当Docker run command的命令匹配到CMD command时,会替换CMD执行的命令。如下Dockerfile:
CMD echo hello world
运行:
fy@fy-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd
hello world
一旦命令匹配:
fy@fy-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello fy
hello fy
USER:使用哪个用户跑container。
# 指定memcached的运行用户
ENTRYPOINT ["memcached"]
USER daemon
或
ENTRYPOINT ["memcached", "-u", "daemon"]
WORKDIR:切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效
VOLUME:可以将本地文件夹或者其他container的文件夹挂载到container中。
1. touch Dockerfile,名字就得是Dockerfile
2. vim Dockerfile
输入内容:
FROM alpine:latest //alpine,相当于JAVAWEB里的BASE类
MAINTAINER fy //标识作者
CMD echo 'hello docker' //干啥
3. docker build -t xx .//-t是给他个标签, .代表实际给他的东西
4. docker run -it -p 8989:8080 fy/jenkins
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。