《第一本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`

时间: 2024-12-08 16:19:37

《第一本Docker》笔记(三)之Docker入门的相关文章

Docker笔记三 Docker镜像制作

Docker笔记三 Docker镜像制作 1.Docker镜像制作方法: docker commit 保存当前container的状态到镜像,生成image. docker build 利用dockerfile自动化生成image. 2.制作方法 docker commit方式 #启动镜像名称为centos的一个容器(container)  [[email protected] ~]#docker run -it centos /bin/bash #在容器内安装httpd服务 [[email p

Docker学习笔记三:Docker部署Java web系统

Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app &&cd app 2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝 到app目录下 3.解压两个tar.gz文件 tar -zxvf apache-tomcat-7.0.29.tar.gz tar -zxvf jdk-7u25-linux

docker(三)docker镜像和镜像发布方法

一.从公网docker hub 拉取image ~ # 搜索docker search centos~ ? docker pull centos [email protected]2 Using default tag: latest latest: Pulling from library/centos 469cfcc7a4b3: Downloading 12.28MB/73.17MB 或者:把之前下载好的image镜像导入image docker load -i /root/centos.x

Docker(三)Docker是如何工作的

摘自 https://mp.weixin.qq.com/s/SsXIuDqeze_et8vWQ8fr3g 一.Docker Client 也称为Docker客户端.其实就是Docker提供命令行界面工具,是许多Docker用户与Docker进行交互的主要方式.客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互. 二.Docker daemon Docker daemon是服务器组建,以Linux后台服务的方式运行,是Docker最核心的后台进程,我们也把它称为守护进程

Docker笔记三:基于LVS DR模式构建WEB服务集群

安装ipvsadm 1. 先在宿主机上安装并以root来启动ipvsadm,每次要在容器中运行ipvs都需要先在宿主机上启动ipvs.如果直接进行2步操作将报出如下错误: Can't initialize ipvs: Protocol not availableAre you sure that IP Virtual Server is built in the kernel or as module? 2. 实例化一个ipvs容器: dockerfile: FROM ubuntu MAINTA

【Docker篇之一】Docker镜像及容器

一.Docker核心概念 1.镜像(image) Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板,比如一个镜像可以是一个完整的centos操作系统,也可以是一个安装了MySQL的应用程序,称之为一个镜像. 镜像文件用户可以自己创建和更新现有镜像,也可以从网上下载已经做好的应用镜像直接使用. 2.容器(Container) 容器是镜像的另一个运行实例,是独立运行的一个或一组应用以及他们所必须的运行环境,包括文件系统.系统库类.shell环境

Docker学习笔记(一):Docker的三个基本概念

Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了 Docker 的整个生命周期. 镜像Image Docker 镜像就是一个只读的模板. 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序. 镜像可以用来创建 Docker 容器. Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像

Docker 系列三(容器管理).

一.运行容器 1.基于镜像新建一个容器并启动 docker run -it --rm -d -p 8888:8080 tomcat:8.0 -i:交互式操作 -t:终端 -rm:容器退出后随之将其删除,可以避免浪费空间 -p :端口映射 -d :容器在后台运行 指明了 -d 运行镜像,会返回容器的 id:如果不指明 -d 运行镜像,会打印出 catalina.out 的 日志,在 [crtl +c] 后,容器即停止运行. 当利用 docker run 来创建容器时,Docker 在后台运行的标准

docker 学习笔记20:docker守护进程的配置与启动

安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo start docker  //启动 sudo stop docker  //停止 sudo status docker  //查看状态 二.利用docker daemon命令 sudo docker daemon 利用sudo ps -A 可以获取守护进程的进程号 三.让远程api可以访问dock

Moving to Docker(三)基于Docker的Rails自动化部署

这是本系列的第三篇,整个系列介绍了我们公司如何把基础框架从PaaS移植到Docker上. 第一篇:介绍了我们在接触Docker之前的探索过程. 第二篇:介绍了如何搭建一个内网安全的私有registry. 在这最后一篇,我们用一个真实的例子来介绍如何自动化整个部署过程. 基本的Rails应用 我们来进入主题并启动一个基本的Rails应用.在这个Demo中,我将使用Ruby 2.20 和Rails 4.11. 在终端中运行: $ rvm use 2.2.0 $ rails new  && cd