一、安装docker
当前操作系统是CentOS,其他版本安装参考官网查看(https://docs.docker.com/engine/install)
1.为了防止环境中docker冲突,旧docker残留影响安装,需要先执行卸载。如果确定当前环境没有docker,可以不执行。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.设置docker仓库
官方文档提供了相对的说明,安装docker有3种途径。如图所示:
这三种方式分别是:
- 设置docker仓库,并且从仓库安装所需内容。
- 下载RPM安装包,手动更新安装。
- 为测试和开发环境使用自定义脚本安装。
我们使用最简单,也是官方最推荐的第一种方式来安装docker即可。
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
两个yum命令执行完成后仓库设置完成,如下图所示
3.安装docker引擎
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4.启动验证docker
systemctl start docker
docker run hello-world
出现hello from Docker!则安装成功。
二、docker的常用命令
1.查看本地镜像有哪些
docker images
2.搜索镜像
镜像可以在docker的仓库里进行搜索,使用docker search命令。例如我们可以搜索mysql的镜像
docker search mysql
这个命令的返回结果显示:
- NAME:镜像名称。
- DESCRIPTION:镜像描述。
- STARS:镜像星级,越高表示越热,使用人越多。
- OFFICIAL:是否官方镜像。
- AUTOMATED:是否支持自动化部署。
如果我们想要了解镜像更多内容,建议到官方仓库docker hub进行搜索。地址是:https://hub.docker.com/
3.将镜像从远程仓库下载到本地
当我们需要用到某个镜像的时候,可以利用pull命令将镜像从远程仓库下载到本地。
docker pull mysql
执行pull命令,后面没有跟随具体的tag标签,默认使用最新版本latest,默认最新版本就是从仓库中看到的。我们也可以这样运行命令,指定下载tag标签的mysql:docker pull mysql:8.1.0
4.删除镜像
docker rmi d1165f221234
这里可以利用docker images查询到的镜像id进行镜像删除。
rmi命令的选项:
l -f:强制删除这个镜像,无论是否正在使用。
如果不加这个选项,当镜像创建了容器之后,就不能删除了,表示正在使用。
除此以外,我们在删除镜像时还有一种嵌套的命令执行可以删除全部,但是慎用,毕竟镜像下载是需要耗费带宽资源的。
docker rmi -f $(docker images -qa)
docker images -qa 返回全部的镜像id作为docker rmi -f 的参数使用
5.运行镜像
docker run
为了测试容器相关命令先拉取下来一个centos的镜像,这个镜像可以创建一个最小化依赖的centos系统。
docker pull centos:centos7
run命令的常用选项:
- –name=“name” 启动后赋值一个容器名。容器名字不能重复。
- -d 后台方式运行容器。如果不加,运行容器之后会进入到这个容器。
- -i 以交互模式运行容器,一般和-t一起使用
- -t 给启动的容器分配一个终端客户端,如果不使用-i 不起作用。
- -P 随机端口。
这时,我们可以通过这些命令来启动centos7这个容器
docker run -it centos:centos7 /bin/bash
-it:表示以交互模式启动并且创建终端控制器来操作管理容器,
/bin/bash: /bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash就表示启动容器后启动bash。
想从容器中退出,可以有两种方式:
exit # 容器停止退出。
ctrl+P+Q # 容器不停止退出。
6.ps命令查看容器相关的信息
当容器启动后,我们在宿主机可以通过ps命令查看容器相关的信息。
docker ps
其中显示内容:
- container id:容器id,很多操作容器命令都需要用到的参数。
- image:容器创建使用的镜像。
- command:容器中在运行的进程或者命令。
- created:创建时间。
- status:容器状态。
- ports:容器的端口映射情况,这里没有用到端口。
- names:容器的名字,启动没有指定—name选项,会默认使用一个名字。
ps命令中常见的选项如下:
- -a:显示所有容器,如果不加只显示正在启动运行的容器,停止的不会显示。
- -l:显示最近的启动创建的容器。
- -n=[数字]:显示最近n个容器。
- -q:只显示容器id。经常和-a一起使用,获得当前宿主机所有容器id参数集合。
7.重启,启动,停止容器
我们使用镜像创建容器候,可以重启,启动,停止容器。
- docker start (容器id or 容器名) 启动容器。
- docker restart (容器id or 容器名) 重启容器。
- docker stop (容器id or 容器名) 停止容器。
- docker kill (容器id or 容器名) 强制停止容器。
8.docker rm删除容器
使用镜像创建的容器,可以使用rm进行删除。
首先使用docker ps -a查看当前宿主机启动所有容器。然后运行命令docker rm 467d954fac58,删除hello-world容器。
rm的选项有:
-f:强制删除容器,无论是否运行,如果不加,运行的容器无法删除。
我们还可以利用嵌套,将所有容器强制删除。
docker rm -f $(docker ps -aq)
9.docker logs查看对应的日志信息
我们在运行一个容器之后,一般容器内部是会有运行的进程的,否则容器会自动退出。当进程运行时,可以生成一些日志文件,比如tomcat,nginx的相关镜像创建的容器会自动运行这个进程,这时我们在宿主机调用logs命令可以查看对应的日志信息。
首先我们先启动一个tomcat的容器。
拉取镜像
docker pull tomcat:9.0
运行容器
docker run -d --name=tomcat9-demo01 -it tomcat:9.0
这样,一个在后台运行的,利用tomcat:9.0镜像创建的,名称为tomcat9-demo01的容器就启动了,这时可以使用logs命令查看日志显示,这个命令类似tail -f的作用。
docker logs -f -t --tail 10 6750fa7609052c6e9dbc1f6d9bb3b1839bc8535d41a14a4b1189ec8fe74c7f92
其中选项为:
-f: 跟踪日志输出。
-t: 显示时间戳。
–tail 10:仅列出最新10条容器日志.
6750fa7609052c6e9dbc1f6d9bb3b1839bc8535d41a14a4b1189ec8fe74c7f92:容器id。
不难看出这个显示结果就是tomcat启动日志。
10.exec进入容器
当我们启动了一个容器,在宿主机可以进入容器进行命令的调用
exec
和attach附加命令不同,exec是单独运行一各客户端终端。
docker exec -it 895a77028369 /bin/bash
-i:以交互模式打开终端,通常与-t一起使用。
-t:打开一个伪终端,通常和-i一起使用。
895a77028369:容器id。
/bin/bash:exec打开的终端运行的进程,或者命令。
11.docker cp 复制镜像中的文件
如果我们运行了一个容器,在容器里面创建的一些文件,想要将文件拷贝到宿主机,可以使用cp命令。
例如,首先我们运行一个centos的镜像容器。
docker run -d -it --name=“centos-demo01” centos:centos7 /bin/bash
紧接着我们进入到容器里面。
docker exec -it 0add39d407ba /bin/bash
在容器终端界面,我们配置一个文件并且保存。
touch my-file.txt
退出到宿主机,ctrl+P+Q。调用docker cp命令。
docker cp 0add39d407ba:/my-file.txt /home
0add39d407ba:/my-file.txt:表示容器id中的某个文件绝对路径。
/home:想要把文件拷贝到的宿主机路径。
三、安装Redis
1.拉取镜像
docker pull redis:latest
2.运行镜像
2.1不修改配置文件,直接按默认配置文件运行
docker run -d --name myredis -p 6379:6379 redis # 默认配置
2.2
1.下载一个标准的Redis配置文件进行修改,cd进入到你想保存这个配置文件的位置,wget http://download.redis.io/redis-stable/redis.conf
2.vim redis.conf
修改配置文件,注意路径(推荐下载到本地修改好后在上传到Linux)
bind 127.0.0.1 -::1 改为bind 0.0.0.0外界才能访问
设置密码
找到# requirepass foobared,在下方输入requirepass 你的密码
4.daemonize 设置为 no,这个很重要,如果不是no docker会一直启动失败,原因是docker本身需要后台运行,而这个配置选项也是以守护进程启动,两者会冲突
# 配置文件路径
/home/centos/user/devtools/redis/redis.conf
docker run --name docker-redis \
-p 7000:6379 \
-v /home/centos/user/devtools/redis/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf
使用Another Redis Desktop Manager测试连接,输入ip,port和密码就可连接成功。
-v /home/centos/user/devtools/redis/redis.conf:/etc/redis/redis.conf
:将主机上的Redis配置文件/home/centos/user/devtools/redis/redis.conf
挂载到容器内的/etc/redis/redis.conf
路径。这样做的目的是将自定义的Redis配置文件引入容器,以配置Redis服务器的行为。
-v /usr/local/docker/redis/data:/data
:将主机上的目录/usr/local/docker/redis/data
挂载到容器内的/data
路径。这样做的目的是将Redis数据目录挂载到主机,以便在容器启动和停止时保留Redis数据。
进入到容器内部验证下查看是否生成 redis.conf 和 data持久化文件
四、安装MySQL
1.拉取镜像
docker pull mysql:latest
2.运行镜像
docker run -d --name docker-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql
-e MYSQL_ROOT_PASSWORD:用于设置MySQL root用户的密码
3.进入容器 ,输入刚刚运行镜像设置的密码
docker exec -it docker-mysql mysql -uroot -p
mysql -uroot -p:登录到MySQL,root可替换成自己的用户名
4.查看数据库中的表
5.测试连接
通过navicat进行测试连接,输入主机IP和数据库密码,即可连接成功。
五、卸载docker
为了防止环境中docker冲突,旧版本docker残留影响安装,需要先执行卸载。
1.删除docker所在的目录
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
2.kill掉docker进程
ps -ef|grep docker
kill -9 [pid]
3.查看已经安装的docker安装包
# 查看已经安装的docker安装包
yum list installed|grep docker
# 执行yum remove删除匹配到的包
yum remove [复制包名]
4.执行docker version验证,提示没有那个文件或目录就成功了。
六、部署项目
1.利用Maven将项目达成jar包
2.编写Dockerfile文件,用于定义如何构建Docker镜像。
# 使用基础镜像 openjdk:8-jdk-alpine
FROM openjdk:8-jdk-alpine
# 复制本地的所有JAR文件到容器的 /app 目录下
COPY *.jar /app/
# 暴露容器内应用程序监听的端口
EXPOSE 8088
# 定义容器启动命令,在容器启动时,它会运行 java -jar /app/app.jar 命令来启动项目
CMD ["java", "-jar", "/app/app.jar"]
3.构建Docker镜像(注意末尾有个.)
构建一个名为 ylmall-demo01的镜像。
docker build -t ylmall-demo01-app .
4.运行docker容器
docker run -d -p 9000:8088 f7bfb86814fb
创建MySQL容器和Redis容器,项目的yml文件里面配置成数据库的url,username,password 和Redis的连接信息host和port
docker run -d --name ylmall-app --link docker-mysql:mysql -p 9000:8088 ylmall-demo01-app
ylmall-app是项目的容器名,docker-mysql是MySQL的容器,ylmall-demo01-app是项目镜像。