docker之基础命令部署篇

一.镜像与容器的关系

镜像容器的关系,类似于面向对象程序设计中的实例一样镜像是静态的定义,而容器是镜像运行时的实体,可以看成是一个具备某个运行环境的非常轻量的虚拟机容器可以被创建、启动、停止和删除等。在创建容器时,需要**显示地为容器指定镜像。**指定镜像之后,容器就具备了镜像中保存的运行环境了。

例如,可以为容器指定Ubuntu14.04的镜像,然后该容器就具备Ubuntu14.04的运行环境了。

二.Docker使用的基本过程

容器需要基于一个镜像来创建和使用。因此,Docker容器的使用一般有以下三个步骤:

  1. 获取一个镜像;
  2. 基于该镜像创建并启动一个容器;
  3. 进入该容器,执行“程序”。
  • 第一步:获取镜像; 上面我们提到了“镜像”可以理解为一个打包了运行环境的文件系统。然而在安装完Docker服务之后,本地是没有任何镜像的,所以首先需要获取所需要的镜像
  • 第二步:创建并启动容器; 在获取到所需的镜像之后,就可以基于该镜像创建并启动一个容器,该容器就具备了镜像包含的运行环境了。同时,在创建容器时也可以设置容器的启动命令,该命令会在容器启动时执行。
  • 第三步:进入容器并执行程序; 在容器成功创建并启动之后,该容器就具备了ubuntu的运行环境。我们可以进入该容器内部,并在其内部执行任何在ubuntu系统上的程序了。这里的“程序”可以是“Linux命令”、“shell脚本”、“C++程序”等。

三.docker的安装(这里可不参考)

RedHat/CentOS必须要6.6版本以上,或者7.x才能安装docker(因为docker必须运行在内核3.10及以上的系统中)

[root@fish ~]# cat /proc/version         #查看内核版本
[root@fish ~]# yum install docker -y          #安装docker
[root@fish ~]#service docker start              #启动docker
[root@fish ~]#chkconfig docker on             #设置开机启动docker

1.启动docker服务

systemctl start docker 

2.设置开机自启服务

systemctl enable docker 

3.查看版本

docker version 

4.查看docker信息

docker info 

5.修改配置重新更新docker

systemctl daemon-reload

6.重启docker

systemctl restart docker

四.获取镜像

在没有使用Docker之前,如果我们要准备一个ubuntu的运行环境,那么首先我们得安装一个ubuntu的系统,多么麻烦,多么耗时啊!!而使用Docker之后,只需要从Docker Hub中拉取一个ubuntu镜像,基于该ubuntu镜像启动一个容器,就可以在容器中做任何在ubuntu系统中做的事情,整个过程大约2-3分钟,而且主要的时间是用于下载镜像!是不是非常方便呢?

1.docker pull

默认情况下,使用docker pull命令,会从官方的Docker Hub库中将镜像拉取到本地。

docker pull [OPTIONS] <仓库名>:<标签>
docker pull ubuntu:14.04

2.设置镜像加速器

由于**“伟大的墙”**的原因,在国内从Docker Hub中拉取镜像的速度可能会比较慢,国内很多云服务商都提供了镜像加速器服务,例如阿里、网易等等。

Linux系统配置阿里云加速器为例,只需要将下面的命令复制到Linux的终端,以root用户的身份执行之后,就成功的配置了阿里云加速器了!

#以root用户执行以下操作
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{#下面的URL可以替换为你自己的阿里云加速地址
"registry-mirrors": ["https://jxus37ad.mirror.aliyuncs.com "]
}
EOF
systemctl daemon-reload
systemctl restart docker

五.构建镜像

1.建立DockerFile文件

在该文件目录下,执行

2.docker build –t my_centos

输入 docker images查看镜像是否构建成功

3.删除指定镜像

docker  rmi   image_name/ID

六.启动一个容器

1.新建并启动

docker run命令会基于指定的镜像创建一个容器并且启动它。docker run的基本语法如下 :

docker run [OPTIONS] 镜像名 [COMMAND] [ARG]
docker run ubuntu:14.04 echo 'hello docker'

启动容器后,执行 echo ‘hello docker’

2.启动一个已经终止的容器

docker run每次都会创建一个新容器,显然不符合我们的需求。这种时候,可以使用docker start命令,使用容器名或者容器id启动一个已经终止的容器。

docker start [OPTIONS] 容器 [容器2...]
docker start firstContainer

OPTIIONS: 命令选项,最常用的包括**-d后台运行容器并返回容器ID-i以交互模式运行容器,-t为容器分配一个伪输入终端,--name指定启动容器的名称。**

但是如果想启动第一个实例创建的容器,既不知道容器的名字(因为我没有指定)而且也不知道它的id。该怎么办呢?

3.查看容器列表信息

1.docker ps

可以查看容器的信息,包括容器ID,基础镜像,启动命令,创建时间,当前状态,端口号,容器名字。

如果不加任何参数,只执行docker ps,将会显示所有运行中的容器

2.docker ps –a

可以查看Docker环境中所有的容器,包括已经停止的容器。

除了名为firstContainer的容器外,还可以看到一个idee826f1d58ff的容器容器

3.docker start 实例id (ee826f1d58ff)

可以通过docker start ee826f1d58ff或者docker start g\fracious_lewin启动该容器了。

4.访问正在运行得容器实例

docker exec -it <container id | name> /bin/bash 

5.删除指定容器

docker rm 1a63ddea6571 

6.删除正在运行得容器

 docker rm -f 1a63ddea6571

七.停止一个容器

使用docker stop停止一个容器

docker stop可以用来终止一个正在运行的容器

docker stop [OPTIONS] Container [Container ...]

在什么情况下容器启动后会立即终止?

实际情况中,除了使用docker stop命令来强制地终止一个容器以外,当容器的启动命令终结时,容器也自动会终止。

在容器启动时,会执行容器的启动命令。而执行上述命令创建并启动容器后,由于容器的启动命令echo 'hello docker'会立刻执行完毕,所以容器也随之终止,因此使用docker ps -a查看该容器的状态是终止状态。

如果容器的“启动命令”执行完之后,由于主进程没有命令继续执行,所以主进程会停止,容器也就因此而停止了。

如何才能使容器启动后不立即终止?

将启动命令设置为“启动一直运行的子进程”

docker run --name first_container -it ubuntu /bin/bash

为什么在容器中输入exit或者执行ctrl D后,容器将会终止呢,这是因为exit会退出(结束)当前进程,也就是/bin/bash,由于子进程结束,sh主进程恢复到运行态,然而由于没有命令需要继续执行,所以sh主进程结,因此容器终止。

八.给docker开启远程访问

1.修改docker配置文件

[xxx@root]#vi /usr/lib/systemd/system/docker.service
修改

ExecStart=/usr/bin/dockerd

#centos设置:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

#Ubunt设置:

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

保存退出,这一步是将docker映射到虚拟机2375端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值