菜鸟教程地址:https://www.runoob.com/docker/docker-container-usage.html
docker run -it --name=testUbuntu ubuntu 创建一个名字为testUbuntu的容器
options:
--name="name" 为容器指定新name
-d 后台运行容器,并返回容器ID,也即启动守护式容器
-i 以交互模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪输入终端,通常与-i同时使用
-P 注意是大写,随机端口映射
-p 小写,指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
-v /宿主机目录:/容器目录
docker logs -f -t –tail 100 kibana7.7.1docker update –restart=always xxxdocker ps -adocker psdocker start 容器id或名字docker stop 容器iddocker update --restart=no 容器IDdocker kill 容器iddocker rm 容器iddocker rm -f 容器iddocker exec -it 程序id /bin/bashctrl+p+qdocker logs -f (追加) -t (加入时间戳) --tail 3 (显示最后3行) 容器iddocker inspect 容器iddocker cp 容器id:文件路径 要拷贝到的路径export导出:docker import - {镜像名} < [镜像文件路径]; save导出:docker load < busybox.tar.gzdocker commit -a="lgd" -m="mysql-lgd" 243baa0ea2a7 ligoudan/lgd-mysql:1.0# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER wudl
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD myspringbootdocker.jar /myspringbootdocker.jar
# 运行jar包
RUN bash -c "touch /myspringbootdocker.jar"
ENTRYPOINT ["java","-jar","/myspringbootdocker.jar"]
#暴露8088作为微服务容器对外端口
EXPOSE 8088
FROM- 镜像从那里来
MAINTAINER- 镜像维护者信息
RUN- 构建镜像执行的命令,每一次RUN都会构建一层
CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
VOLUME- 定义数据卷,如果没有定义则使用默认
USER- 指定后续执行的用户组和用户
WORKDIR- 切换当前执行的工作目录
HEALTHCHECH- 健康检测指令
ARG- 变量属性值,但不在容器内部起作用
EXPOSE- 暴露端口
ENV- 变量属性值,容器内部也会起作用
ADD- 添加文件,如果是压缩文件也解压
COPY- 添加文件,以复制的形式
ENTRYPOINT- 容器进入时执行的命令
一般来说产生这个报错是因为启动的容器是被docker export出来的镜像,具体报错如下
[root@dockertest container]# docker run --name nginx-import-test -d -p 4000:80 nginx-import-test:1.0
docker: Error response from daemon: No command specified.
See 'docker run --help'.
被docker export出来的镜像在启动的时候需要指定command,例如我启动上述nginx容器,需要指定Command
Command可以通过下面命令查询到:
docker ps -a --no-trunc
查询到Command之后,运行容器:
docker run --name nginx-import-test -d -p 4000:80 nginx-import-test:1.0 /docker-entrypoint.sh nginx -g 'daemon off;'
容器就正常启动了
原文链接:https://blog.csdn.net/u013189824/article/details/109623741
首先,想要清楚的了解docker load与docker import命令的区别,就必须了解镜像与容器的区别:
镜像是容器的基础,可以简单的理解为镜像是我们启动虚拟机时需要的镜像,容器时虚拟机成功启动后,运行的服务。
想要了解docker load与docker import命令的区别,还必须知道docker save与docker export命令:
docker save images_name:将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。docker export container_id:将一个容器导出为文件,再使用docker import 命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。docker import和docker load的区别
实际上,既可以使用docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。
两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。