一、Docker的命令
| 行为 | 命令 | 例子 |
|---|---|---|
| 查询镜像 | 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> |
二、Dockerfile的命令
| 行为 | 命令 |
|---|---|
| 指定基础镜像 | FROM |
| 执行命令(在容器里) | RUN |
| 添加文件(可以添加远程的文件) | ADD |
| 拷贝文件 | COPY |
| 执行命令(容器入口) | CMD |
| 暴露端口(服务器监听的端口) | EXPOSE |
| 指定路径 | WORKDIR |
| 维护者 | MAINTAINER |
| 设定环境变量 | ENV |
| 容器入口,容器启动时执行命令 | ENTRYPOINT |
| 指定用户 | USER |
| 指定挂在的卷 | VOLUME |
三、Dockerfle使用
1. 添加本地文件到docker
ADD可以将文件<src>拷贝到container的文件系统对应的路径<dest>,所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0。如果文件是可识别的压缩格式,则docker会帮忙解压缩。
如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下。
如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下。比如:
docker-firefox目录下必须有Dockerfile和要ADD的文件。
ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。
2. 进入目标容器
3. 设置container启动时执行的操作
(1)CMD:
设置指令,用于container启动时指定的操作。该操作可以是执行自定义脚本,也可以是执行系统命令。该指令只能在文件中存在一次,如果有多个,则只执行最后一条。
三种格式:
(2)ENTRYPOINT:
设置指令,指定容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
(3)区别
Container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD。CMD主要用于container时启动指定的服务,当Docker run command的命令匹配到CMD command时,会替换CMD执行的命令。如下Dockerfile:
运行:
一旦命令匹配:
4. 设置container容器的用户
USER:使用哪个用户跑container。
5. 切换目录
WORKDIR:切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效
6. 目录挂载
VOLUME:可以将本地文件夹或者其他container的文件夹挂载到container中。
四、通过Dockerfile定义自己的docker文件
五、docker常见问题
- docker的pull下来的容器或者镜像都是临时的,如果不提交,那么不能保存之前的修改。
- 镜像相当于类,容器相当于类创建的对象。
- docker –help可以在任何命令下执行,相当于docker exec –help查看exec的用法