docker基本命令及使用实例详解

 更新时间:2022年03月30日 17:46:42   作者:我是小锋锋  
这篇文章主要介绍了docker基本命令及使用实例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

docker基本命令

docker文件系统

docker镜像为分层设计,相比于全量的虚拟机镜像,少了引导程序bootfs,共用系统内核rootfs。

配置层(容器层)

commit镜像

docker commit -a="" -m="" docker_id image_name:tag

类似于给镜像打个快照。

容器数据卷

解决问题 ->数据持久化 本质是目录挂载

使用数据卷

方式一: 直接使用命令挂载 -v

docker run -it  -v 主机目录:容器内目录  image_id /bin/bash

具名和匿名挂载

# 匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx(容器内路径) nginx
# 具名挂载
docker run -d -P --name nginx02 -v xff-nginx:/etx/nginx(容器内路径) nginx
root@hecs-39042:/var/lib/docker/volumes# ls
4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e  d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379  xff-nginx
backingFsBlockDev                                                 metadata.db
root@hecs-39042:/var/lib/docker/volumes# docker volume ls
DRIVER    VOLUME NAME
local     4ad594eee4e6115b2852f5fa952176c799e99bf1d0cadaee9c581085b8e38b6e
local     d309f4a3ce1aa585673548ed4fd43a3aa7a5ca4f86a5a52b236d02428b991379  --匿名挂载
local     xff-nginx															--具名挂载
root@hecs-39042:/var/lib/docker/volumes#
# 如何确定是具名、匿名、指定路径挂载
-v xff-nginx(卷名):容器内路径
-v 容器内路径
-v /path(宿主机路径):/容器内路径
拓展:
-v :/容器内路径:ro or rw
# ro 只能通过宿主机操作, 容器内部是无法操作!

多个容器间数据共享

# --volumes-form 实现容器间的配置传递,数据卷容器的生命周期一直持续到没有容器使用为止
# 一旦持久化(挂载)到本地,这个时候即使删除镜像;本地的数据也不会删除
docker run -d -P -name nginx01 nginx
docker run -d -P -name nginx02 --volumes-form nginx01 nginx
docker run -d -P -name nginx03 --volumes-form nginx01 nginx

初识Dockerfile commit

Dockerfile 用来构建镜像,命令参数脚本。

构建步骤:

1.编写一个dockerfile

2.docker build 构建成为一个镜像

3.docker run 运行镜像

4.docker push 发布镜像

# 基础镜像 挂载目录 命令为大写
FROM ubuntu
VOLUME ["volume01","volume02"]
CMD echo "----build image succeed----"
CMD /bin/bash

Dockerfile 构建过程

1.每个关键字都必须是大写字母

2.执行顺序从上到下

3.# 表示注释

4.每一个指令都会创建提交一个新的镜像,并提交

命令

FROM 	# 基础镜像
MAINTAINER 	# 镜像谁发布的, 姓名+邮箱
RUN		# 镜像构建时候要运行的命令
ADD		# 步骤:tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR # 镜像的工作目录
VOLUME 	# 挂载的主机目录
EXPOSE 	# 指定对外的端口
CMD 	# 指定这个容器启动的时候要运行的命令,只有最后一个会生效
ENTRPOINT # 指定这个容器启动时候要运行的命令,可以追加命令
ONBUILD # 构建一个被继承Dockerfile 这个时候就会运行
COPY 	# 类似于ADD,将文件拷贝到镜像中
ENV 	# 构建时设置环境变量

创建一个ubuntu

CMD 和 ENTRYPOINT的区别

root@hecs-39042:/home/docker# docker run ubuntu-cmd -l
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
root@hecs-39042:/home/docker#
root@hecs-39042:/home/docker# docker run ubuntu-entrypoint -l -i
total 56
drwxr-xr-x   1 root root 4096 Mar 27 07:13 .
drwxr-xr-x   1 root root 4096 Mar 27 07:13 ..
-rwxr-xr-x   1 root root    0 Mar 27 07:13 .dockerenv
CMD外部传入的命令会覆盖掉dockerfile里面的
ENTRYPOINT可以通过外部命令追加参数
  • 编写一个Dockerfile
  • 发布镜像
  • 启动容器

发布自己的镜像

docker login

docker网络

veth-pair 
--link

自定义网络

docker run -d  -P --name tomcat06 --net bridge tomcat
docker0特点:不能通过域名访问;--link可以打通
# 创建自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 启动容器指定自定义网络
docker run -d -P --name tomcat-mynet-01 --net mynet tomcat 
# 跨网络操作容器
docker network connect mynet contain

到此这篇关于docker基本命令及使用实例的文章就介绍到这了,更多相关docker基本命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 打包上传Docker 仓库的详细步骤

    Spring Boot 打包上传Docker 仓库的详细步骤

    这篇文章主要介绍了Spring Boot 打包上传Docker 仓库的详细步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • docker中通过nginx+confd动态生成配置的解决方案

    docker中通过nginx+confd动态生成配置的解决方案

    这篇文章主要介绍了docker:nginx+confd动态生成配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • docker 安装ElasticSearch 6.x的教程详解

    docker 安装ElasticSearch 6.x的教程详解

    这篇文章主要介绍了docker 安装ElasticSearch 6.x的教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • docker获取Let''s Encrypt永久免费SSL证书的方法

    docker获取Let''s Encrypt永久免费SSL证书的方法

    在本篇文章里小编给大家分享了一篇关于docker获取Let's Encrypt永久免费SSL证书的方法,以后需要的朋友们可以参考下。
    2021-01-01
  • Docker 网络模式及配置方式

    Docker 网络模式及配置方式

    这篇文章主要介绍了Docker 网络模式及配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker-compose ports和expose的区别详解

    docker-compose ports和expose的区别详解

    这篇文章主要介绍了docker-compose ports和expose的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 详解如何使用Docker打包Python项目

    详解如何使用Docker打包Python项目

    Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包到一个轻量级、可移植的容器中,通过使用Docker,可以简化Python项目的部署和运行,提高开发效率和应用程序的可移植性,本文将介绍如何使用Docker来打包Python项目,需要的朋友可以参考下
    2023-11-11
  • 使用Docker安装phabricator的配置和使用方法

    使用Docker安装phabricator的配置和使用方法

    今天小编就为大家分享一篇关于使用Docker安装phabricator的配置和使用方法的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Docker部署前后端分离项目的实现示例

    Docker部署前后端分离项目的实现示例

    本文主要介绍了Docker部署前后端分离项目的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Docker容器化部署尝试——多容器通信(node+mongoDB+nginx)

    Docker容器化部署尝试——多容器通信(node+mongoDB+nginx)

    这篇文章主要介绍了Docker容器化部署尝试——多容器通信(node+mongoDB+nginx),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论