一、Docker安装

1、安装前必读

在安装 Docker 之前,先说一下配置,我这里是Centos7;Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。

注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo

2、更新 yum 包

使用 root 权限更新 yum 包(生产环境中此步操作需慎重

yum -y update

3、卸载旧版本(如果以前安装过,否则此步骤可以忽略)

 yum remove docker-ce docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

4、安装相应的安装包

yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置 yum 源

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6、安装最新版本的 Docker Engine-Community 和 containerd

yum -y install docker-ce docker-ce-cli containerd.io

7、选择性安装(查看可用版本有哪些);若已经做了第六步,无需操作此步骤

yum list docker-ce --showduplicates | sort -r

选择一个版本并安装:yum install docker-ce-版本号

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-24.0.6。

yum -y install docker-ce-24.0.6 docker-ce-cli-24.0.6 containerd.io

8、查看安装版本

docker -v
docer version

9、启动Docker,并设置开机自动启动

systemctl start docker
systemctl enable docker

#停止docker
systemctl stop docker 
#重启docker
systemctl restart docker

#查看状态
systemctl status docker

运行Hello-world

通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community

docker run hello-world

10、卸载docker

(1).卸载依赖

 sudo yum remove docker-ce docker-ce-cli containerd.io

(2).删除文件夹

     sudo rm -rf /var/lib/docker

     sudo rm -rf /var/lib/containerd

二、Docker使用

1、镜像操作

#查看镜像

docker images

#移除镜像是 rmi

docker rmi  <镜像【IMAGE】 ID>

#查找镜像

docker search tomcat

#拉取tomcat镜像(默认为 latest版本)

docker pull tomcat:latest

#强制删除镜像(-f)

docker rmi -f hello-world

#一次强制删除多个镜像(多个镜像中间用空格隔开hello-world 和nginx)

docker rmi -f hello-world nginx

#一次删除全部的镜像

docker rmi -f $(docker images -qa)

2、容器操作

#查看运行的容器

docker ps

#列出当前所有正在运行的容器+历史上运行过的

docker ps -a

#列出上一次运行的容器

docker ps -l

#列出前三次运行的容器

docker ps -n 3

#只显示容器编号

docker ps -q

#以交互式且伪终端打开的方式运行centos容器,且容器名字为mycentos

docker run -it --name mycentos centos

#关闭容器后退出容器

exit

#容器不停止退出

ctrl+p+q

#启动容器

docker start <容器 ID>

#重新启动容器

docker restart <容器 ID>

#停止容器(温柔停止)

docker stop <容器【CONTAINER】ID>

#停止容器(强制停止,相当于拔电源)

docker kill <容器 ID>

#删除已停止的容器

docker rm <容器 ID>

#强制删除容器(没有停止的也会被删除)

docker rm -f <容器 ID>

#一次性强制删除多个容器

docker rm -f $(docker ps -aq) 或者  docker ps -aq |xargs docker rm -f

#以后台模式启动一个容器(启动守护式容器)

docker run -d centos

docker run -d centos /bin/sh -c "while true; do echo hello zhangyanfen; sleep 2; done"

#查看容器日志(-t 加入时间戳; -f跟随最新的日志打印; --tail 数值 显示最后多少条)

docker logs -t -f --tail 3  <容器ID>

#查看容器内运行的进程

docker top <容器ID>

#查看容器内部细节

docker inspect <容器ID>

#未退出容器后,重新进入容器;(attach直接进入容器启动命令的终端,不会启动新的进程)

docker attach <容器ID>

#未退出容器的前提下,在宿主机中执行容器的命令,直接返回给宿主机(是在容器中打开新的终端,并且可以启动新的进程)

docker exec -t <容器ID>  ls -l /tmp

#进入容器

docker exec -it f07f19e6eb63  /bin/bash

#从容器内拷贝文件到主机上

docker cp <容器ID>:容器内路径  目的地主机路径

docker cp 73c418ba31bc:/tmp/zyf.txt  /opt

运行centos容器,并进入centos伪终端 -i 交互式; -t 伪终端

docker run -it <镜像 ID>

未退出容器的前提下,在宿主机中执行容器的ls -l /tmp命令,直接返回给宿主机

docker exec -t <容器ID>  ls -l /tmp

三、Dock卷操作

Docker卷与容器绑定后,容器就可以与宿主数据互通;即便容器停止后,再次启动容器,宿主的数据仍可以同步到容器中。(ro的意思为read only,启动命令添加ro后,容器中不能编辑或添加文件,只有宿主机可以编辑或添加

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

docker inspect <容器ID>

例:

docker run -it -v /opt/vdata:/opt/mydata --name centos centos

docker inspect 4a9cbd7f02c3

四、Docker安装Tomcat

1、查找Docker Hub上的tomcat镜像

docker search tomcat

2、拉取tomcat镜像

docker pull tomcat
docker images

3、使用tomcat默认的配置来启动一个tomcat容器

docker run -it -p 8888:8080 --name tomcat tomcat

注意

当Tomcat版本过高时,根据IP地址和端口号访问可能会出现下面问题:出现404

是因为webapps文件夹下内容为空,内容都在webapps.dist 目录下,解决办法如下:

1.进入tomcat容器

docker exec -it 容器id /bin/bash

2.ls 查看文件夹内容,可以发现下面有webapps文件夹和webapps.dist文件夹,将webapps.dist下的内容全部异动到webapps中。

mv webapps.dist/* webapps

4、拷贝容器内tomcat配置文件和日志到本地准备映射

在主机中创建文件夹

mkdir -p /opt/app/tomcat
docker cp tomcat:/usr/local/tomcat/conf /opt/app/tomcat/conf
docker cp tomcat:/usr/local/tomcat/logs /opt/app/tomcat/logs

5、停止tomcat,并删除容器

docker stop tomcat
docker rm tomcat

6、创建卷并运行tomcat容器

docker run -it -p 8888:8080 --name tomcat \
 -v /opt/app/tomcat/webapps:/usr/local/tomcat/webapps \
 -v /opt/app/tomcat/conf:/usr/local/tomcat/conf \
 -v /opt/app/tomcat/logs:/usr/local/tomcat/logs --restart=always tomcat

7、生成新的镜像文件

docker commit -a='作者' -m='镜像描述' 容器ID 新的镜像名/名称:版本  如下:
docker commit -a="zhangyanfen" -m="有doc的tomcat" f07f19e6eb63  zf/mytomcat:1.0

根据新创建的镜像,启动新的容器

docker run -it -p 7777:8080 --name tomcat zf/mytomcat:1.0

Logo

更多推荐