1.使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
2.启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
3.测试 Docker 是否安装正确
[root@localhost docker]# docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:03:45 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:21 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
[root@localhost docker]#
Client 和 Server 都有就是说明正确安装和启动
4.配置Docker 镜像(国内)加速器
在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://hub-mirror.c.163.com"
]
}
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
5.拉取镜像(image)
[root@localhost docker]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
e4c3d3e4f7b0: Pull complete
101c41d0463b: Pull complete
8275efcd805f: Pull complete
751620502a7a: Pull complete
a59da3a7d0e7: Pull complete
9c0f1dffe039: Pull complete
c886bd27ecb8: Pull complete
30fb11aa7eaa: Pull complete
c9f12e463311: Pull complete
421d9a80377a: Pull complete
Digest: sha256:1c78db4bfbf4c75ab763dd463ff74731abbeadcfded2e03024b39cb0af3f1fb3
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
等全部complete就行了
6. 查看拉取的 镜像(image)
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 891fcd9c5b3a 2 days ago 647MB
7.启动tomcat 镜像
note:第一个 8080 是宿主机端口 第二个 8080 是容器端口,将映射
docker run -d -p 8080:8080 tomcat
8.停止Tomcat服务
docker stop 66282a52c168 (这个是容器的id)
9.查看容器id、启动容器
注意:如果已经启动过 则启动容器id就可以,因为每次使用run命令都会启动一个新的容器,使用ps命令查看容器id,然后执行命令
//查看容器id
docker ps -a
//启动容器
docker start 66282a52c168 (这个是容器的id)
10.访问 ip:8080 查看tomcat是否启动正常
note:如果发生 404 错误,查看此博客解决 https://blog.csdn.net/qq_40891009/article/details/103898876
11.进入启动的容器的 bash 里
# 进入已经启动的容器用 exec
$ docker exec -it 66282a52c168 (这个是容器的id) bash
# 从镜像启动新容器用 run(注意--rm 会在退出后删除容器)
$ docker run -it -d -p 8080:8080 --rm tomcat(镜像名字) bash
11.5 看容器日志
# 启动容器
docker start 42f12ae29932
# 看日志
docker logs -f 42f12ae29932
12.删除全部容器
docker container rm $(docker container ls -aq) -f
13.自定义镜像 Dockerfile
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
在宿主机执行以下指令
# 1.创建 Dockerfile 脚本
mkdir docker
cd docker/
vim Dockerfile
# 2.编写脚本 以下是脚本内容
From tomcat
WORKDIR /usr/local/tomcat
RUN rm -rf webapps
RUN cp -r webapps.dist webapps
WORKDIR /usr/local/tomcat/webapps/ROOT
RUN rm -rf ./*
RUN echo "Hello Docker!" > index.html
# 3.根据脚本构建自己的镜像
# 注意点:在Dockerfile文件目录下执行、命令最后有个点表示当前目录、镜像命名必须全部小写
docker build -t mytomcat .
# 4.查看镜像 成功创建镜像 mytomcat
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat latest b00319985570 5 seconds ago 652MB
tomcat latest 891fcd9c5b3a 4 days ago 647MB
# 5.启动一个容器
[root@localhost docker]# docker run -d -p 8080:8080 --rm mytomcat
9053ae9828e7a4c023fcec50377fb6a013d6c18a14ebddcded8cf431bf6dc3fb
14.数据卷—容器的共享空间
- 数据卷 可以在容器之间共享和重用
- 对 数据卷 的修改会立马生效
- 对 数据卷 的更新,不会影响镜像
- 数据卷 默认会一直存在,即使容器被删除
例:将宿主机的 /local/docker/ROOT 目录挂载到 docker 中 /usr/local/tomcat/webapps/ROOT 目录,
同一个文件可以挂载多次
# docker run -d -p 8080:8080 -v /local/docker/ROOT:/usr/local/tomcat/webapps/ROOT tomcat
# docker run -d -p 8081:8080 -v /local/docker/ROOT:/usr/local/tomcat/webapps/ROOT tomcat
15.部署mysql
参考文章:https://www.cnblogs.com/haoprogrammer/p/11008786.html
a. 下载镜像
[root@localhost ~]# docker pull mysql:5.7
b. 查看镜像
[root@localhost ~]# docker images|grep mysql
mysql 5.7 42cdba9f1b08 7 days ago 448MB
c. 启动容器镜像
note:宿主机端口映射 13306:3306,密码修改 -e MYSQL_ROOT_PASSWORD=root
docker run -p 13306:3306 -v /usr/local/workspace/mysql/conf:/etc/mysql -v /usr/local/workspace/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
16.部署redis
参考文章:https://www.cnblogs.com/haoprogrammer/p/11018312.html
a. 下载镜像
docker pull redis:5.0
b. 查看下载镜像
[root@localhost docker]# docker images|grep redis
redis 5.0 c440306287f4 7 days ago 98.3MB
c. 启动镜像
note:宿主机端口映射 16379:6379
docker run -p 16379:6379 -v /usr/local/workspace/redis/data:/data -d redis:5.0 redis-server --appendonly yes
17.部署前后端应用
a. 部署后端(先要把应用里 mysql 和 redis 的配置改到本机的ip和对应端口,并设置虚拟机端口放行):
docker run -d -p 8081:8080 -v /local/docker/sk-fish:/usr/local/tomcat/webapps/sk-fish tomcat
b.部署前端(打包时把后端端口固定8081,因为后端在宿主机的端口是8081)
docker run -d -p 8080:8080 -v /local/docker/fishermanDelight:/usr/local/tomcat/webapps/fishermanDelight tomcat
18.安装 docker-compose
Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
a. 下载 docker-compose,这里是从git上下载的二进制包,注意修改版本到最新版本(下文的1.27.4 就是版本号)
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
b. 给文件增加可执行权限
cd /usr/local/bin/
chmod +x docker-compose
c. 查看是否安装成功
[root@localhost bin]# docker-compose --version
docker-compose version 1.27.4, build 40524192
19.使用 docker-compose
a. 创建 docker-compose.yml 文件
注意: 要求每个冒号 和每个 - 符号后面必须有一个空格
vi docker-compose.yml
version: "3"
services:
webapp:
image: tomcat (使用的镜像)
container_name: webapp (容器名)
ports:
- "8082:8080"
volumes: (数据卷)
- /local/docker/composeTest/ROOT:/usr/local/tomcat/webapps/ROOT
yaml 文件拓展:
https://www.funtl.com/zh/docs-docker/Docker-Compose-%E6%A8%A1%E6%9D%BF%E6%96%87%E4%BB%B6.html
b. 启动 docker-compose
注意:需要在 docker-compose.yml 目录下
docker-compose up
docker-compose up -d (守护态)
c. 看日志:
docker-compose logs -f