《第一本Docker》笔记(三)之Docker入门

简介:

三、Docker入门(以下运行环境是Cetos6.364bit系统上进行)

   1. 创建容器

      #docker run -I -t ubuntu /bin/bash

      -i 标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中,-t 标志告诉Docker为要创建的容器分配一个伪tty终端。

     附录:在执行这条指令的时候遇到以下问题:

      FATA[0000] Gethttp:///var/run/docker.sock/v1.17/images/search?term=ubuntu: dial unix/var/run/docker.sock: no such file or directory. Are you trying to connect to aTLS-enabled daemon without TLS?

原因:docker服务没有启动:servicedocker start  设置开机启动:chkconfigdocker on

 FATA[0000] Cannot connect tothe Docker daemon. Is 'docker -d' running on this host?

原因:docker -d 进程没有启动 

尝试解决: docker-d &

报错:

  ====================================================================

   INFO[0000] +jobserveapi(unix:///var/run/docker.sock)  

   INFO[0000] WARNING: You arerunning linux kernel version 2.6.32-431.11.7.el6.ucloud.x86_64, which might beunstable running docker. Please upgrade your kernel to 3.8.0.

   docker: relocation error:docker: symbol dm_task_get_info_with_deferred_remove, version Base not definedin file libdevmapper.so.1.02 with link time reference

   [1]+  Exit 127                docker -d

  ====================================================================

   解决办法:安装必要的插件yumupgrade device-mapper-libs

   执行命令:docker -d&

  继续执行# dockerrun -I -t ubuntu /bin/bash 它的含义是创建一个基于ubuntu镜像的容器,并且使用交互式shell环境。docker run命令先进行本地宿机镜像扫描,如果找不到则会与Docker仓库建立连接并进行相应镜像的下载

 

2. 常用命令:

  查看镜像

  # docker search ubuntu   #搜索镜像

  # docker pull ubuntu  #下载镜像

  # docker images  #查看本地镜像资源

  # docker images -a :列出所有的images(包含历史)

  # docker images --tree :显示镜像的所有层(layer)

  # docker rmi  <image ID> 删除一个或多个image

  查看容器

  # docker ps :列出当前所有正在运行的container

  # docker ps -l :列出最近一次启动的container

  # docker ps -a :列出所有的container(包含历史,即运行过的container

  # docker ps -q :列出最近一次运行的containerID

  针对容器的操作:

  # docker start/stop/restart<container> :开启/停止/重启container

  # docker start[container_id] :再次运行某个container (包括历史container

  # docker attach[container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)其实就是进入容器

  # docker start -i<container> :启动一个container并进入交互模式(相当于先start,在attach

  # docker run -i -t<image> /bin/bash :使用image创建container并进入交互模式, login shell/bin/bash

  # docker run -i -t -p<host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

    注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container

删除容器

# docker rm <container...> :删除一个或多个container

 # docker rm `docker ps -a -q`:删除所有的container

 # docker ps -a -q | xargsdocker rm :同上删除所有的container

 3. 容器在创建的时候进行自定义命令操作:

# docker run --name 自定义名称 -I -t <images>/bin/bash

其中,自定义名称包含以下字符:小写字母a-z、大写字母A-Z、数字0-9、下划线、圆点、横线。容器的命名必须是唯一的

 4.重新进入重启

     # dockerattach 容器名称 

  如果推出容器的shell,容器也会随之停止运行

5.创建守护式容器

# docker run --name <name> -dubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done”

创建一个守护式容器(使用-d参数使容器后台运行)执行某个命令(-c

实例操作:(参考http://segmentfault.com/a/1190000000755980

   使用nginx官方image进行实验:

   # docker pull nginx

   生成一个测试页面,存放在某个目录中(例如/opt/nginx/)

   # echo "<h2 >This is nginxofficial container running </h2> <br /> static files:/opt/nginx/index.html"> / opt/nginx/index.html

   创建基于nginx镜像的容器,并且使用-v使容器中默认文件指定到宿机上自定义的网站目录,端口映射:宿机的8000 à容器的80端口  -d参数使容器后台运行

   # docker run --name nginx1.9.0 -v/opt/nginx/:/usr/share/nginx/html:ro -p 8000:80 -d nginx:1.9.0

   docker容器中的文件复制到宿机中(但反之不能)

   # docker cp nginx1.9.0:/etc/nginx/nginx.conf/opt/nginx/

 6.查看容器内部的日志、进程

   # docker logs nginx1.9.0

   # docker logs -f nginx1.9.0  à相当于tail -f

   # docker logs --tail 10 nginx1.9.0 查看最后10行内容

   # docker logs --tail 0 nginx1.9.0 查看最新的日志信息

   # docker top nginx1.9.0

 7. 在容器中运行指定的进程

  # docker exec -d nginx1.9.0 touch/opt/nginx/test.txt 在容器内部创建一个空文件

  # docker exec -t -i nginx1.9.0 /bin/bash  在容器中启动一个交互式shell任务

 8. 停止守护式容器

  # docker stop nginx1.9.0(或者容器的ID)

 9. 设置容器进行自动启动运行,防止某些错误导致容器停止影响业务

  # docker run --restart=always --namenginx1.9.0 -d nginx:1.9.0 /bin/bash -c XX

   --restart标志可以设置为

       always:无论容器的退出代码是什么,Docker都会自动重启该容器

       on-failure:只有当容器的退出代码为非0时才会自动重启

  # docker run --restart=on-failure:5--name  nginx1.9.0 -d nginx:1.9.0 /bin/bash-c XX

   容器退出代码为非0时,Docker会自动重启5次该容器

 10. 深入了解容器的信息

  # docker inspect nginx1.9.0

  可以查看关于容器的一些详细信息,包括开放端口,安装路径,配置文件,系统配置等

  # docker inspect --format '` `.`State`.`Running`' nginx1.9.0

true

   查看容器的运行状态

  # docker inspect --format '``.`NetworkSettings`.`IPAddress `' nginx1.9.0

   查看容器的IP地址

  # docker inspect -f '` `.`Name ` ``.`State`.`Running `' nginx1.9.0 ubuntu14.04

   /nginx1.9.0 true

/ubuntu14.04 true

查看多个容器的名称和运行情况

11. 删除所有的容器

  # docker rm `docker ps -a -q`










本文转自 南非波波 51CTO博客,原文链接:http://blog.51cto.com/nanfeibobo/1643570,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
130 2
|
3月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
98 5
|
1月前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
109 5
docker入门-快速学会docker
|
3月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
2月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
2月前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
95 2
|
2月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
63 3
|
2月前
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
66 0
|
3月前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
133 2

热门文章

最新文章