一、Docker基本操作
1.1 安装Docker
-
下载Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
-
设置阿里云镜像源
yum-config-manager --add-repo http:/mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装Docker
yum makecache fast
(缓存)yum -y install docker-ce
(Docker服务) -
启动Docker服务
systemctl start docker
设置开机自启
systemctl enable docker
1.2 检查Docker
-
查看Docker版本
docker -v
-
查看启动状态
docker state
-
查看Docker运行状态
docker info
1.3 测试Docker
docker run hello-world
拉取并运行hello-world镜像,出现如下界面说明Docker正常运行。
二、镜像的操作
2.1 拉取镜像到本地
docker pull 镜像名称[:tag]
2.2 查看全部本地的镜像
docker images
2.3 删除本地镜像
docker rmi 镜像的标识
2.4 镜像的导入导出
导出本地镜像
docker save -o 导出的路径 镜像id
加载本地镜像
docker load -i 镜像文件
2.5 修改镜像名称
docker tag 镜像id 新镜像名称:版本
三、容器的操作
3.1 运行容器
-
简单操作
docker run 镜像的标识 | 镜像名称[:tag]
-
常用参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识 | 镜像名称[:tag]
-d:代表后台运行容器
(不加-d会占满整个界面来运行你的容器,如果执行其他操作容器将会停止)
-p:宿主机端口:容器端口:为了映射Linux的端口和容器的端口
(让其他操作系统访问虚拟机下的操作系统端口)
–name 容器名称:指定容器的名称
3.2 查看正在运行的容器
docker ps [-qa]
-a:查看全部的容器,包括没有运行的;
-q:只查看容器的标识。
3.3 查看容器的日志
docker logs -f 容器id
-f:可以滚动查看日志的最后几行
3.4 进入到容器内部
docker exec -it 容器id bash
使用exit
退出容器内部。
3.5 删除容器(需要先停止容器)
删除指定容器:
docker rm 容器id
删除多个容器:
docker rm $(docker ps -qa)
3.6 停止容器
停止指定容器:
docker stop 容器id
停止多个容器:
docker stop $(docker ps -qa)
3.7 启动容器
docker start 容器id
3.8 复制文件到容器内部
例如将ssm.war添加至tomcat镜像容器中,fe为容器id
docker cp ssm.war fe:/usr/local/tomcat/webapps/
四、数据卷
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,容器内部映射的文件也会一起发生改变。
3.8节在容器内部直接进行操作就是不推荐的。
4.1 创建数据卷
docker volume create 数据卷名称
创建数据卷之后,默认会存放在一个目录下/var/lib/docker/volumns/数据卷名称/_data
4.2 查看数据卷详细信息
docker volume inspect 数据卷名称
4.3 查询全部数据卷
docker volume ls
4.4 删除数据源
docker volume rm 数据卷名称
4.5 应用数据卷
当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建。
这种方式会将容器内部自带的文件存储在默认的映射路径下,第二种不会。
docker run -v 数据卷名称:容器内部的路径 镜像id
直接指定一个路径作为数据卷的存放位置,该路径下是空的。
docker run -v 路径:容器内部的路径 镜像id
五、自定义镜像
中央仓库上的镜像,也是用户自己上传上去的。
5.1 创建镜像文件
创建一个Dockerfile文件(无后缀),并且指定自定义镜像信息。
该文件中常用的内容:
from:指定当前自定义镜像依赖的环境;
copy:将相对路径下的内容复制到自定义镜像中;
workdir:声明镜像的默认工作目录;
cmd:需要执行的命令(在workdir下执行,cmd可以写多个,但只以最后一个为准)
5.2 制作镜像
将准备好Dockerfile和相应的文件拖拽到Linux操作系统中,通过Docker的命令制作镜像。
docker built -t 镜像名称:[tag] .
.
表示把当前路径下的Dockerfile制作成一个自定义镜像。
六、Docker-Compose
正常运行一个镜像,需要添加大量的参数,也许还有来自其他软件的参数。
但可以通过Docker-Compose编写这些参数,它还可以帮助我们批量地管理容器。
而且只需要一个docker-compose.yml文件去维护即可。
6.1 下载
-
去github官网搜索docker-compose下载合适的版本。
https://github.com/docker/compose
-
将下载好的文件,拖拽到Linux系统中。
-
为了方便操作,修改文件名;再修改文件权限为可执行文件。
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
-
为了方便在任何目录下使用docker-compose,将其所在目录配置到环境变量中。
移动文件到bin目录,方便配置环境:
mv docker-compose bin
修改配置文件:
vi /etc/profile
在文件末尾添加:
export PATH=/usr/local/bin:$PATH
-
测试。
source /etc/profile
回到根目录下:
cd ~
使用docker-compose命令,查看是否成功:
docker compose
显示如下界面,表示环境变量配置成功:
6.2 编写配置文件
docker-compose.yml以Key:Value方式来指定配置信息。
多个配置信息以换行+缩进的方式来区分。
在该文件中,不要使用制表符。
以管理Mysql和Tomcat容器为例:
version: `3.7`
services:
mysql: # 服务的名称
restart: always #只要docker启动,那么这个容器就启动
image: daocloud.io/library/mysql:5.6.17 #指定镜像路径
container_name: mysql #指定镜像名称
ports:
- 3306:3306 # 指定端口号映射
environment:
MYSQL_ROOT_PASSWORD: password #指定mysql登录密码
TZ: Asia/Shanghai # 指定时区
volumes:
- /opt/docker_mysql/data:/var/lib/mysql #数据卷映射
tomcat:
restart: always
images: daocloud.io/library/tomcat:8.5.19-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
6.3 管理容器
在使用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