一、docker安装
1)启动Linux
2)ocker依赖环境下载
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
4)安装docker
yum makecache fast
yum -y install docker-ce
5)启动docker
#启动docker
systemctl start docker
#开机自启动
system enable docker
#重启
systemctl restart docker
二、镜像操作
拉取镜像
docker pull 镜像标识
查看镜像
docker images
删除镜像
docker rmi 镜像标识
三、容器操作
运行
docker run 镜像标识
or
docker run -d -p 端口号:端口号 --name 名称 标识
查看运行容器
docker ps (-qa)
查看日志
docker logs -f 容器ID
进入容器内部
#进入容器内部
docker exec -it 容器ID bash
#从容器内部退出
exit
docker仓库
8)复制内容到容器
docker cp 文件名称 容器ID:容器内部路径
9)重启、启动、停止、删除容器
#重新启动
docker restart 容器ID
#启动停止运行的容器
docker satrt 容器ID
#停止指定的容器
docker stop 容器ID
#停止全部容器
docker stop $(docker ps -qa)
#删除指定容器
docker rm 容器ID
#删除全部容器
docker rm ${docker ps -qa)
四、docker安装mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.4
五、数据卷
将宿主机的一个目录映射到容器的一个目录中。可以再宿主机中操作目录内容,容器内部映射文件也跟着一起改变
1)创建数据卷(创建数据卷后,默认存在目录/var/lib/docker/volumes/数据卷名称/_data)
docker volume create 数据卷名称
2)查看数据卷详情(查看数据卷详细信息,如存放路径、创建时间等)
docker volume inspect 数据卷名称
3)查看全部数据卷
docker volume ls
4)删除数据卷
docker volume rm 数据卷名称
5)容器映射到数据卷
映射的两种方式:
- 通过数据卷名称映射,数据卷不存在,docker自动创建,会将容器内部自带的文件,存储在默认的存放路径中
- 通过路径映射数据卷,直接指定一个路径作为数据卷存放的位置,路径是空的
#通过数据卷名称映射
docker run -v 数据卷名称:容器内部路径 镜像ID
例:
docker run -d -p 8080:8080 --name tomcat -v webdata:/usr/local/tomcat/webapps
e01
#通过路径映射数据卷
docker run -v 绝对路径:容器内部路径 镜像ID
例:
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -v /root/mysqldata:/var/lib/mysql daocloud.io/library/mysql:5.7.4
六、自定义镜像(dockerfile)
1)自定义镜像语法
from:指定当前自定义镜像依赖的环境
copy:将相对路径下的内容复制到自定义镜像中
workdir:声明镜像的默认工作目录
run:执行的命令,可编写多个 yum install net-tools
cmd:需要执行的命令(在workdir下执行,cmd可写多个,以最后一个为准)
例子:
制作SSM容器镜像,ssm.war要放在dockerfile的同级目录下
宿主机中要使用相对路径
注意:dockerfile中不要写中文注释
from java:8
maintainer dong_
workdir .
add ./test.jar app.jar
expose 8080
entrypoint exec java -jar app.jar
2) 制作镜像
docker build -t 镜像名称[:tag] .
七、docker-compose
创建容器:
docker run -d -p 8080:8080 --name tomcat -v 数据卷:容器内的目录
之前运行一个镜像,需要添加大量参数,可通过docker-compose编写这些参数。docker-compose可帮助批量管理容器,只需要通过一个docker-compose.yml文件去维护即可
1)下载docker-compose
2)设置权限
mv docker-xompose-Linux-x86_64 docker-compose
chmod 777 docker-compose
3)配置环境变量
#文件移动到/usr/local/bin
mv docker-compose /usr/local/bin
#修改/etc/profile
vi /etc/profile
export PATH=$JAVA_HOME:/usr/local/bin:$PATH #添加内容
#重新加载
sourse /etc/profile
4)测试
任意目录输入docker-compose
docker-compose
八、docker-compose管理mysql和tomcat容器
yml文件以key:value方式来指定配置信息
多个配置信息以换行和缩进方式区分
在docker-compose文件中,不要使用制表符
version: '3.1'
#代表当前yml文件中要设置那些docker容器
services:
#服务器名称
mysql:
#当前容器是否随docker一起启动
restart: always
#容器使用镜像
image: daocloud.io/library/mysql:5.7.4
#容器名称
container_name: mysql
#端口号映射
ports:
- 3306:3306
#环境变量
enviroment:
MYSQL_ROOT_PASSWORD: root
TZ: Asia/ShangHai
#数据卷
volumes:
- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
tomcat:
restart: always
image:
daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/ShangHai
volumes:
- /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
九、使用docker-compose命令管理容器
使用docker-compose命令时,默认会在当前目录下找docker-compose.yml文件
#基于docker-compose.yml启动管理容器
docker-compose up -d
#关闭并删除容器
docker-compose down
#开启、关闭、重启已存在由docker-compose维护的容器
docker-compose start|stop|restart
#查看由docker-compose管理的容器
docker-compose ps
#查看日志
docker-compose logs -f
十、docker-compose配合dockerfile使用
使用docker-compose.yml文件以及dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器
1)编写docker-compose文件
version: '3.1'
services:
rbac:
restart: always
#构建自定义镜像
build:
#指定dockerfile文件所在路径
context: ./
#指定dockerfile文件名称
dockerfile: Dockerfile
image: rbac:1.0.1
container_name: rbac
ports:
- 8080:8080
environment:
TZ: Asia/ShangHai
2)编写dockerfile文件
form java:8
maintainer dong_
workdir .
add ./test.jar app.jar
expose 8080
entrypoint exec java -jar app.jar
3)运行
#直接启动基于docker-compose.yml以及Dockerfile文件构建的自定义镜像(不存在,构建镜像;存在,直接运行)
docker-compose up -d
#重新构建
docker-compose build
#运行当前内容,并重新构建
docker-compose up -d --build