前言:
镜像与容器的关系是一对多,即:同一个镜像可以创建不同版本的容器;
因此需要先创建镜像,再运行镜像并指定相应的参数,如:版本、端口、容器名称、、

1、创建镜像
在创建镜像之前需要先创建Dockerfile文件,该文件是Docker最主要的配置文件,包括docker运行等各种配置:
示例:
[root@centost1 centos7]# vi Dockerfile
填写以下简单脚本测试:

FROM centos:centos7.1.1503
CMD ["/bin/echo","this is test cmd docker"]

执行镜像创建命令:

Dockerfile在当前目录时,用“.”表示:
[root@centost1 centos7]# docker build -t test/centos:7.1 .
或者指定Dockerfile所在目录:
[root@centost1 centos7]# docker build -t test/wordpress:4.2 /usr/software/docker/git/docker-training/wordpress
Step 9 : ADD supervisord.conf /etc/supervisord.conf
 ---> 805f510ea2c8
Removing intermediate container 01b28338b0ca
Step 10 : RUN mkdir -p /etc/supervisor.conf.d &&     mkdir -p /var/log/supervisor
 ---> Running in ea323222231c
 ---> 0ccb19ab1472
Removing intermediate container ea323222231c
Step 11 : EXPOSE 22
 ---> Running in 46b3fae7614a
 ---> bfa2da373c93
Removing intermediate container 46b3fae7614a
Step 12 : ENTRYPOINT /usr/bin/supervisord -n -c /etc/supervisord.conf
 ---> Running in fd69533f2fae
 ---> b71b18e0e65b
Removing intermediate container fd69533f2fae
Successfully built b71b18e0e65b

说明:如果不指定版本则默认版本是latest


2、生成容器

创建镜像之后,需要启动镜像才会生成相应的容器

查看当前拥有的镜像可以使用docker

[root@centost1 centos7]#  docker images

启动镜像常用两种方式启动:

1)docker run -d (在后台启动容器,返回一个容器编号)

2)docker run -it (交互式模式启动,把容器启动到前台)

如:
[root@centost1 centos7]# docker run -d -p 2222:22 --name base test/centos:7.1
6b11b19c4828594a2710c6ecbd721c50c3a4d296187c3c3c62d396081d256e64
说明:
--name:容器的名字(可以自定义)
-d -p 2222:22 (使用宿主机的2222端口来映射到docker容器的22端口)

如果启动错误,
Conflict. The name "/base" is already in use by container 
则把旧的容器删掉,再启动。

3、查看容器:
docker ps (查看正在运行的容器)
docker ps -a (查看所有容器[包括未运行的])

[root@centost1 centos7]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                  NAMES
6b11b19c4828        test/centos:7.1   "/usr/bin/supervisord"   2 minutes ago       Up 2 minutes        0.0.0.0:2222->22/tcp   base


4、进入容器

容器启动之后可以进入容器内部进行一些命令操作:

示例:

[root@centost1 php-fpm]# docker exec -it base /bin/bash

[root@8ded2f9c63cc /]#


5、容器的管理

通过镜像run启动容器之后可以对容器进行管理:

语法:

docker start 容器名称: 启动一个或多少已经被停止的容器

docker stop 容器名称: 停止一个运行中的容器

docker restart 容器名称: 重启容器

docker rm 容器名称:删除容器

或者 docker rm -f 容器名称:强制删除容器


示例:

[root@centost1 ~]# docker start base

base


6、容器删除

先查看需要删除的镜像:

[root@centost1 ~]#  docker ps -a

然后可以根据容器ID镜像删除:

[root@centost1 ~]#  docker rm a1157d56ac1b

注:如果该容器是已经运行状态的话,需要停止容器再删除,或者使用docker rm -f 强制删除;


7、镜像删除

镜像删除与容器删除类似

[root@centost1 ~]#  docker rmi test/centos:7.0

或者

[root@centost1 ~]#  docker rmi -f test/centos:7.0


8、docker run一些参数说明:

1)docker run -v : 设置镜像数据备份目录:

示例:

[root@centost1 mysql]# docker run -d -p 3306:3306 -v /usr/software/docker/git/mydata:/var/lib/mysql --name dbserver test/mysql:5.5

说明:

-v /usr/software/docker/git/mydata:/var/lib/mysql

将mysql数据目录同时存到/usr/software/docker/git/mydata

当把容器删除后,可以从新挂载备份目录下的数据:

示例:

[root@centost1 mysql]# docker run -d -p 3306:3306 --name newdb -v /usr/software/docker/git/mydata:/var/lib/mysql

2)docker run -rm 

[root@centost1 mysql]# docker run -it --rm test/cmd:1.0 

说明:(表示执行完成后就把容器删掉)