基础命令
1.启动docker: systemctl start docker
2.停止docker: systemctl stop docker
3.重启docker: systemctl restart docker
4.查看docker状态: systemctl status docker
5.开机启动: systemctl enable docker
6.查看docker概要信息: docker info
7.查看docker总体帮助文档: docker --help
8.查看docker命令帮助文档: docker 具体命令 --help
镜像命令
启动hello-world(管理员模式)
1.启动docker
systemctl enable docker
systemctl start docker
2.拉取镜像
docker pull hello-world
3.查看镜像
docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
列出本地所有镜像
docker images -a
只列出镜像名id
docker images -q
搜索远程仓库镜像
docker search --limit 25 xxx //limit只列出25个镜像
下载镜像
docker pull 镜像名字[:TAG] //tag版本号
docker pull redis:latest 等价于 docker pull redis
查看镜像/容器/数据卷所占的空间
docker system df
删除镜像
docker rmi 镜像id/镜像名1 镜像id/镜像名2
docker rmi -f 镜像id//强制删除
docker rmi -f ${docker images qa}//删除全部
虚悬镜像
仓库名 标签都是none的镜像
容器命令
新建+启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARGS...]
OPTIONS说明
–name=“容器新名字” 为容器指定一个名称
-d:后台运行容器并返回容器D,也即启动守护式容器(后台运行)
-i:以交互模式运行容器,通常与-t使用
-t: 为容器重新分配一个伪输入终端,通常与-i使用
也就是启动交互式容器(前台有伪终端,等待交互)
-P:随机端口映射
-p:指定端口映射
启动ubuntu
docker run -it ubuntu /bin/bash //-it(交互式终端) 以交互模式启动一个容器,在容器内执行/bin/bash(交互式shell)命令
列出当前所有在运行的容器
docker ps [OPTIONS]
退出容器
1.exit
run进去容器,exit退出,容器停止
2、ctrl+p+q
run进去进去,ctrl+p+q退出,容器不停止
3、再次进入
docker exec -it xxx bash
启动已经停止运行的容器
docker start 容器ID或容器名字
重启容器
docker restart 容器ID或容器名字
停止容器
docker stop 容器ID或容器名字
强制停止容器
docker kill 容器ID或容器名字
删除已经停止的容器
docker rm 容器ID或容器名字
复制容器路径
docker cp 容器ID:容器路径 目的主机路径
导入导出容器
docker export 容器ID > xxx.tar
提交镜像副本使其成为一个新的镜像
docker commit -m="提交信息" -a="作者" 容器ID 要创建的镜像名:[标签名]
提交到阿里云镜像库
https://www.aliyun.com/benefit?utm_content=se_1015361707
进入控制台找到容器与镜像服务页面
https://cr.console.aliyun.com/cn-hangzhou/instances
创建个人仓库
先创建命名空间后创建镜像仓库
将镜像推送到Registry依次执行以下命令
docker login --username=账号名 registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxx/myubuntu:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/xxx/myubuntu:[镜像版本号]
阿里云
dockerFile
基础知识
1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2.指令按照从上到下,顺序执行
3.#表示注释
4.每条指令都会创建一个新的镜像层并对镜像进行提交
关键字
FROM : 基础镜像,指定一个已经存在的镜像作为模板,第一条必是from
MAINTAIN : 镜像维护者的姓名及邮箱
RUN : 容器构建时需要运行的命令
1.shell
RUN <命令行命令>
#<命令行命令>等同于,在终端操作的shell命令
例如:RUN yum -y install vim 安装一个vim命令相当于linux执行yum -y install vim
2.exec
RUN [“可执行文件”,“参数1”,“参数2”]
例如:RUN [“./test.php”,“dev”,“offline”] 相当于 RUN ./test.php dev offline
EXPOSE:当前容器对外暴露的端口
WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
例如 ENV MY_PATH /user/XXX
这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样
也可以在其它指令中直接使用这些环境变量
WORKDIR $MY_PATH 设置默认工作目录
VOLUME :容器卷,用于数据保存和持久化工作
ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
CMD:指定容器启动后要做的事情
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
图片命令行相当于
EXPOSE 8080
CMD [“catelina.sh”,“run”]
CMD [“bin/bash”,“run”]
#CMD [“catelina.sh”,“run”]这行启动tomcat的指令不会被执行指挥以命令行打开tomcat(57800e5是tomcat的镜像ID),不会启动8080服务
ENTRYPIONT:也是用来指定一个容器启动时要运行的命令
类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,
而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序