安装
更新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文件(内附注释
# 指定基础镜像,必须为第一个命令
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
可以看到做好的镜像,其中 REPOSITORY
和TAG
分别对应了build时的‘name:tag’