安装


更新yum到最新版本

yum update

下载依赖,yum-util 提供yum-config-manage功能,另外则是device-mapper驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

下载docker社区版

yum install -y docker-ce

最后启动docker

systemctl start docke

 

常规命令


想要创建容器,需要先拥有容器的镜像,关于镜像有以下命令

docker images  # 查看当前镜像
docker pull tomcat # 下载镜像到本地
docker search centos # 从网络中查找需要的镜像

 

有了镜像,就可以通过docker run命令来创建容器了,该命令有几个值得注意的参数

i:表示运行容器 

-t:表示容器启动后会进入其命令行。 

--name :为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者docker容器目录),可以使用多个-v做多个目录或文件 映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

需要重点说明的是-v: 表示目录映射,将docker容器的目录映射到宿主机,可以通过修改宿主机某个目录的文件从而去影响容器,此外其还有持久化功能,对于数据库一类的容器,如果通过-v指定挂载卷,则在容器被删除后数据仍会存在。

 

这里我们用centos7镜像创建一个容器

docker run -it --name=mycentos7 centos:7

由于没有用-d设置守护进程,在关闭这个回话后,该容器也会关闭

于是把上述容器删除,重新创建

docker stop mycentos7 # 需要先停掉
docker rm mycentos7 # 删除
docker run -id --name=mycentos7 centos:7 # 创建后台进程

 

对于已经运行起来的容器, 可以通过以下命令创建与该容器交互回话,后面的/bin/bash是表明要在容器中执行/bin/bash脚本

docker exec -it mycentos2 /bin/bash

我们也可以查看有哪些容器 ,如果不加-a 默认只显示运行的容器

docker ps -a

 

最后,可以将文件在宿主机和容器将复制,值得一提的是,值得一提的是,容器在未启动状态下也可以完成文件的拷贝

docker cp mycentos2:/cba.txt /root

 

常用环境安装


MySQL

拉取mysql镜像

docker pull centos/mysql-57-centos7

创建与启动容器,其中-p表明本机段端口与docker容器端口映射,-e表示设置环境变量,MYSQL_ROOT_PASSWORD为用于远程远访问mysql的密码,而在容器内登录mysql则默认无密码。另外通过-v把数据持久化到宿主机上,这样容器被删除后数据仍会存在。

docker run -di --name=mysql5.7 -p 3310:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=dj123456 centos/mysql-57-centos7

进入docker容器

docker exec -it mysql5.7 /bin/bash

 

Tomcat

docker pull tomcat
docker run -id --name=mytomcat -p 9000:8080 -v /usr/local/docker/tomcat/webapps/:/usr/local/tomca t/webapps tomcat
docker exec -it mytomcat /bin/bash

 

制作镜像与迁移


对于以存在的容器,可以将其制作为镜像,命令如下

格式:docker commit <container_name> <image_name>
示例:docker commit mytomcat djtomcat

通过docker images 已经可以看到我们创建的镜像了

另外,还可以制作好的镜像打成tar包进行迁移, 在对应目录就可以找到tar包

格式:docker save -o <package_name> <image_name>
示例:docker save -o ./docker/djtomcat.tar djtomcat

可以通过tar包生成镜像,我们将原先这个容器mytomcat删除,

docker rm mytomcat # 删除该容器
docker rmi mynginx # 删除该镜像

利用tar包进行还原

docker load -i djtomcat.tar

 

通过Dockerfile制作镜像


前面提到将容器制作成镜像,其实还有另一种方式:即通过配置文件制作镜像。

下面进行实战操作

创建工作目录

mkdir –p /usr/local/dockerjdk8 
cd /usr/local/dockerjdk8

在该目录下准备jdk的tar包,用于后面进行环境搭建,这里我采用scp远程传输

scp C:\Users\86183\Desktop\resource\jdk-8u51-linux-x64.tar.gz root@192.168.126.151:/usr/local/dockerjdk8

准备工作完成后,便可以当前目录下创建Dockerfile了,下图罗列了部分命令格式

docker安装使用PaddleSpeech实现语音识别 docker语法_docker

这是我的Docker文件(内附注释

# 指定基础镜像,必须为第一个命令
FROM centos:7
# 维护者信息
MAINTAINER jundeng
# 为后面的RUN,CMD,ADD等命令指定工作环境
WORKDIR /usr
# 以FROM中定义的Image为基础环境允许指定命令
RUN mkdir /usr/local/java
# 添加主机文件生成新的镜像层
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/
# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

执行命令生成镜像,其中-t为该镜像的名字与标签,格式为name:tag

docker build -t='myimage:jdk1.8' .

注意:后面.不能忽略, .是为了让 Docker 到当前本地目录去寻找 Dockerfile 文件。镜像的构建由Docker(Docker守护进程)完成的。执行docker build后,会将Dockerfile文件所在路径下的所有文件打包给Docker并由其完成镜像的构建。如果当前目录不是Dockerfile所在目录,那么这里也要换成Dockerfile所在目录

最后通过docker images可以看到做好的镜像,其中 REPOSITORYTAG分别对应了build时的‘name:tag’