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、阿里云镜像仓库)

image

image

Dockerfile指令

img
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. 查看镜像
posted @   (x²+y²-1)³=x²y³  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示