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基本命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker compose配置文件写法及命令使用示例

    目录 docker-compose配置文件写法 docker-compose的命令 示例 docker-compose配置文件写法 命令 用途 build 本地创建镜像 command 覆盖缺省命令 depends_on 索拉容器 ports 暴露端口 volumes 卷 environment 环境变量 image pull镜像 docker-compose的命令 命令 用途 build [serviceName] 进行组合构建 [单个服务] up [-d] 创建并且启动容器 [后台启动] s

  • 解决Docker容器下不能使用vim命令的问题

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,如图所示: 这时候就需要安装vim. 可是当你敲apt-get install vim命令时,提示: Reading package lists... Done        Building dependency tree               Reading state information... Done        E: Unable to locate pa

  • Docker容器镜像相关命令基本介绍与使用

    目录 一.Docker 介绍 1.Docker 架构 2.Docker 三大核心 二.Docker 安装 1.下载 Docker 软件包 1)安装基础包 2)配置 Docker 的 yum 源 3)安装 Docker 4)启动 Docker 并验证 5)配置 Docker 加速器 2.Docker 基础命令介绍 1)镜像相关命令 2)容器相关命令 3.使用 Docker 实现 Nginx 网站 一.Docker 介绍 Docker 是一个用于开发.发布和运行应用程序的开放平台.Docker 可以

  • Docker使用Prune命令清理none镜像

    目录 none镜像的产生和困惑 如何清理none对象 修剪镜像 清理无容器使用的镜像 修剪容器 修剪卷 修剪网络 修剪一切 none镜像的产生和困惑 我们偶尔会看到 none镜像(虚悬镜像),那是因为 构建镜像过程中因为脚本错误导致很多镜像构建终止,产生很多none标签的版本 手动构建镜像的时候没有进行提交,遗留来的垃圾镜像 这些镜像占据较大的存储空间,需要删除 如下所示 root@instance-o70no2nw:~# docker images -a REPOSITORY TAG IMAG

  • docker system命令集合的使用

    目录 docker system df docker system prune docker systemc info (docker info) docker system 目前拥有四个子命令,分别是: docker system df docker system events docker system info docker system prune docker system 其中最重要的一个命令就是 docker system prune 命令,清理没有使用的数据,包括镜像数据,已经停

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

    docker基本命令 docker文件系统 docker镜像为分层设计,相比于全量的虚拟机镜像,少了引导程序bootfs,共用系统内核rootfs. 配置层(容器层) commit镜像 docker commit -a="" -m="" docker_id image_name:tag 类似于给镜像打个快照. 容器数据卷 解决问题 ->数据持久化 本质是目录挂载 使用数据卷 方式一: 直接使用命令挂载 -v docker run -it -v 主机目录:容器内

  • Docker 私有仓库恢复实例详解

    Docker 私有仓库恢复 之前openstack平台由于停电等影响,导致之前制作的registry 私有仓库的主机挂掉,还好数据挂载在nfs中,然后现在尝试重新启动恢复. 虚机安装nfs服务 apt-get install -y nfs-common 编辑 /etc/fstab 写入远程挂载地址 10.50.8.12:/export/DockerRepo   /var/lib/docker/registry      nfs    defaults        0 0 然后进行挂载: mou

  • Docker 数据卷权限实例详解

    Docker 数据卷权限 在CentOS7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录.原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1,在运行容器的时候,给容器加特权: 示例:docker run -i -t --privileged=true -v /home/docs:/src waterchestnut/nodejs:0.12.0 2,临时

  • Docker 搭建lamp应用实例详解

    Docker 搭建lamp应用 LAMP 指的 Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和 PHP(有时也是指 Perl 或 Python) 的第一个字母,一般用来建立 web 服务器. 虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件).当一起使用的时候,它们表现的像一个具有活力的解决方案包.下面介绍如何使用Docker来搭建一个包含

  • Docker Swarm入门实例详解

    Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. 1. Swarm 认识 Swarm 是目前 Docker 官方唯一指定(绑定)的集群管理工具.Docker 1.

  • jenkins构建Docker 镜像实例详解

     jenkins构建Docker 镜像实例详解 前言:jenkins有Docker镜像,而之前我们说过使用jenkins打包Docker镜像,那么可否用jenkins的Docker镜像打包Docker镜像呢? 环境: CentOS 7     Docker 1.10.3 1.本机安装docker环境,并配置TCP访问接口 # vi /usr/lib/systemd/system/docker.service 修改ExecStart为: ExecStart=/usr/bin/docker daem

  • Python中的Django基本命令实例详解

    一.新建项目 $django-admin.py  startproject  project_name # 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试 注意 project_name 是自己的项目名称,需要为合法的 Python 包名,如不能为 1a 或 a-b. 二.新建APP 要先进入项目目录下,cd project_name 然后执行下面的命令: $ python manage.py startapp app_nam

  • docker使用registry搭建本地镜像仓库实例详解

    目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3.3.1 上传镜像到私有仓库 3.3.2 从私有仓库里拉取镜像 四.附录:删除私有仓库镜像的Python脚本 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_6

  • Redis Set 集合的实例详解

     Redis Set 集合的实例详解 Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员). 实例 redis 127.0.0.1:6379> SADD runoobkey redis (integer) 1 redis 127.0.0.1:6379> SADD ru

  • Oracle删除表及查看表空间的实例详解

    Oracle常用的基本命令 --1.用户下表中注释模糊查询: 例如查询与优惠券关联的表 SELECT * FROM user_tab_comments t WHERE t.comments LIKE '%优惠券%'; ![这里写图片描述](http://img.blog.csdn.net/20170321112728053?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQyNzkzNQ==/font/5a6L5L2T/fontsize/40

随机推荐