Docker
Docker
Docker安装
查看系统内核
uname -r
查看系统环境
cat /etc/os-release
安装Docker
# 卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # docker需要的安装包 yum install -y yum-utils # 设置阿里云镜像仓库加速 yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum软件包索引你 # centos 7 yum makecache fast # centos 8 yum makecache # 安装docker相关的内容 docker-ce 社区版 docker-ee 企业版 yum install docker-ce docker-ce-cli containerd.io # 启动docker systemctl start docker # 测试是否安装成功 docker version # 启动hello-world镜像 docker run hello-world # 查看下载的hello-world镜像 docker images
卸载Docker
# 卸载依赖 yum remove docker-ce docker-ce-cli containerd.io # 删除资源 rm -rf /var/lib/docker rm -rf /var/lib/containerd
Docker的常用命令
帮助命令
docker version # 显示docker的版本信息 docker info # 显示docker的系统信息 docker 命令 --help # 显示该命令的帮助信息
帮助文档地址:https://docs.docker.com/reference/
镜像命令
docker images
:查看所有本地主机上的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 4 months ago 13.3kB # REPOSITORY 镜像的仓库源 # TAG 镜像的标签 # IMAGE ID 镜像id # CREATED 镜像的创建时间 # SIZE 镜像大小 # 可选项 -a, --all # 列出所有镜像 -q, --quiet # 只显示镜像的id
docker search [mysql]
:搜索镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 12043 [OK] mariadb MariaDB Server is a high performing open sou… 4613 [OK]
docker pull [mysql]
:下载镜像
docker pull 镜像名:tag
:下载镜像
# 如果不写tag,默认就是latest # docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
docker rmi
:删除镜像
# docker rmi -f 镜像id # 删除指定镜像 # docker rmi -f 镜像id 镜像id # 删除多个镜像 # docker rmi -f $(docker images -aq) # 删除全部镜像
容器命令
docker run [可选参数] image
:新建容器并启动
# 参数说明 --name="Name" 容器名字,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器端口 -p 主机端口:容器端口 -p 容器端口
docker ps [可选参数]
:列出正在运行的容器
docker ps # 列出当前正在运行的容器 docker ps -a # 列出当前正在运行的容器+历史运行过的容器 docker ps -n=num # 显示最近创建的num个容器 docker ps -q # 只显示容器的编号
exit
:停止容器并退出
ctrl + p + q
:退出但不停止容器
docker rm 容器id
:删除指定容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)
:删除全部容器
docker ps -a -q|xargs docker rm
:删除所有容器
docker start 容器id
:启动容器
docker restart 容器id
:重启容器
docker stop 容器id
:停止正在运行的容器
docker kill 容器id
:强制停止当前容器
docker exec -it 容器id /bin/bash
:进入当前正在运行的容器
docker inspect 容器id
:查看容器的元数据
docker cp 容器id:容器内路径 目的主机路径
:从容器内拷贝文件到主机上
练习
Docker安装Nginx
# 搜索镜像 docker search nginx # 下载镜像 docker pull nginx # 查看镜像 docker ps # 启动nginx docker run -d --name nginx01 -p 3344:80 nginx # 测试 curl localhost:3344 # 进入容器 docker exec -it nginx01 /bin/bash # 查询nginx配置文件 whereis nginx # nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
# 重新启动镜像 # 1. 查询所有镜像 docker ps -a # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # 350ceddcc1fa nginx "/docker-entrypoint.…" 6 days ago Exited (0) 6 days ago nginx01 # 2. 启动镜像 docker start 350ceddcc1fa
# 退出容器并停止镜像 # 1. 退出容器 exit # 2. 停止镜像 # 2.1 查询所有镜像 docker ps -a、 # 2.2 停止镜像 # docker stop [CONTAINER ID] docker stop 350ceddcc1fa
docker安装tomcat
# 官方使用tomcat docker run -it --rm tomcat:9.0 # --rm 一般用来测试,用完就删除
# 下载tomcat docker pull tomcat:9.0 # 启动tomcat docker run -d -p 8080:8080 --name tomcat01 tomcat:9.0 # 进入容器 docker exec -it tomcat01 /bin/bash # 在浏览器输入http://linux虚拟机ip地址:8080/ 访问失败 # 查询webapps目录 ls # BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist # CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work cd webapps ls # 发现webapps目录为空 # 将webapps.dist目录中的文件复制到webapps目录中 # 移至webapps.dist目录并查看 cd .. cd webapps.dist ls # ROOT docs examples host-manager manager cd .. cp -r webapps.dist/* webapps cd webapps ls # ROOT docs examples host-manager manager # 再次在浏览器输入http://linux虚拟机ip地址:8080/ 访问成功
Docker数据卷
mysql数据挂载
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql # -d 后台运行 # -p 端口映射 暴露的端口:容器内端口 # -v 数据卷挂载 linux中的地址:容器内的地址 # -e 环境配置 MYSQL_ROOT_PASSWORD配置mysql密码
Dockerfile
dockerfile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
1、编写一个 dockerfile 文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

Dockerfile指令
FROM # 基础镜像,一切从这里开始构建 MAINTAINER # 镜像是谁写的,一般包含姓名+邮箱 RUN # 镜像构建的时候需要运行的命令 ADD # 添加内容 WORKDIR # 镜像的工作目录 VOLUME # 挂载的目录 EXPOSE # 保留端口配置 CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD 的指令。触发指令 COPY # 类似 ADD ,将文件拷贝到镜像中 ENV # 构建的时候设置环境变量
创建自己的centos
# 1. 创建自己的dockerfile FROM centos MAINTAINER yts<2114535182@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "------构建完毕------" CMD /bin/bash # 2. 构建镜像 docker build -f dockerfile地址 -t 镜像名称:镜像tag . # . 表示当前目录下的dockerfile文件
实战:创建tomcat镜像
# 1. 创建Dockerfile文件 vim Dockerfile # 2. 编写Dockerfile文件 FROM centos MAINTAINER 名字<邮箱> COPY redme.txt /usr/local/readme.txt # 将当前目录下的readme.txt复制到/usr/local/readme.txt文件中 ADD jdk-8u11-linux-x64.tar.gz /usr/local # 将当前目录下的jdk-8u11-linux-x64.tar.gz 解压到/usr/local 目录下 ADD apache-tomcat-9.0.22.tar.gz /usr/local RUN yum -y install vim # 安装vim ENV MYPATH /usr/local WORKDIR $MYPATH # 设置工作目录 ENV JAVA_HOME /usr/local/jdk1.8.0_11 ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22 ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out # 3. 构建镜像 docker build -t mytomcat . # 4. 查看镜像
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)