Docker 的快速使用

ubuntu安装
centos安装

安装完毕之后执行一下这条命令,可以避免每次使用docker命令都需要sudo权限

shell 复制代码
sudo usermod -aG docker $USER

阿里云docker镜像加速
DockerHub

遇到不懂或者不会使用的命令可以使用docker --help查看文档

shell 复制代码
docker --help
如:
docker save --help
docker load --help

使用docker时需要特别注意防火墙端口占用


镜像相关命令

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖等打包而成。

shell 复制代码
docker images # 查看所有镜像

docker pull nginx   # 从云端(docker hub)拉取nginx镜像,没有指定tag则是最新

docker save -o ubuntu:20.04.tar nginx # 将镜像导出到磁盘

docker rmi nginx  # 删除镜像

docker load -i nginx  # 从磁盘中载入镜像

... #更多使用 参看 docker --hlep

容器相关命令

容器相当于一个只能运行当前镜像的一个微系统,只包含镜像运行所需要的lib库、依赖、bash等文件。

shell 复制代码
# --name:容器名称 -p: 宿主机端口 映射 容器内端口 -d:后台运行容器
docker run --name mynginx-p 20000:22 -d nginx 

docker ps  # 查看所有运行中的容器
docker ps -a # 查看所有容器

docker logs mynginx # 查看容器日志
docker logs -f mynginx # -f 跟踪日志输出,实时监控

docker pause mynginx # 挂起(暂停)容器
docker unpause mynginx # 恢复原本状态容器

docker stop mynginx # 停止容器

docker rm mynginx # 删除容器
docker rm -f mynginx # 强制删除容器,不建议

# exec: 进入容器内部执行一个命令  -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
docker exec -it mn bash # 进入mn容器,执行bash命令, exit可以退出容器

.... #更多使用 参看 docker --hlep

有些镜像可能会比较难创建和使用容器,如果发现使用run命令并且去查看状态并没有启动时,可以参看镜像的使用文档或者百度

在docker hub:https://hub.docker.com/_/nginx中查看镜像时,可以发现底下会有使用容器的教程的


数据卷

数据卷可以使得宿主机和容器文件做一个映射。用户只操作宿主机文件就可以达到修改容器中的文件,达到用户操作和容器的解耦合,用户不需要进入容器中修改文件。

shell 复制代码
docker volume --help	# 查看数据卷的帮助文档
docker volume create html	# 创建一个或多个数据卷

docker volume ls	# 查看所有数据卷
docker volume inspect html	# 显示一个或多个数据卷的详细信息

docker volume prune 	# 删除所有未被使用的本地数据卷
docker volume rm html 	# 删除一个或多个数据卷

在启动时可以使用-v volumeName:/targetContainerPath参数来挂载(映射)数据卷

shell 复制代码
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx # -v 数据卷:需要映射容器中的文件
# 如果数据卷没有创建,docker会自动创建。

挂载成功后,修改挂载点中的文件,容器中的文件也会跟着改变


Dockerfile自定义镜像:Dockerfile参考文档

编写DockerFile文件

shell 复制代码
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝运行环境jdk 和 java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

编辑完DockerFile文件后,使用 docker build 开始构建

shell 复制代码
# -t: 镜像名:tag  ./: Dockerfile所在的文件夹
docker buld -t javaweb:1.0 ./

由于有分层的概念,构建时可以使用别的基础镜像

shell 复制代码
 # 指定基础镜像
FROM java:8-alpine  

 #项目
COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

如果发现服务怎么都起不来,可以检查下内存是否足够

shell 复制代码
top # 可以查看内存
df -h # 查看磁盘内存
相关推荐
JosieBook1 小时前
【远程运维】Linux 远程连接 Windows 好用的软件:MobaXterm 实战指南
linux·运维·windows
鳄鱼杆3 小时前
服务器 | Docker应用开发与部署的实践以及阿里云镜像加速配置
服务器·阿里云·docker
羚羊角uou3 小时前
【Linux】命名管道
linux·运维·服务器
IT 小阿姨(数据库)3 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
逍遥浪子~3 小时前
docker实践(一)
运维·docker·容器
AI云原生4 小时前
如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器的教程
运维·docker·云原生·容器·serverless·firefox·kubeless
今生相伴9914 小时前
ELFK:企业级日志管理的完整解决方案——从入门到精通
运维·elk·elasticsearch
小猪咪piggy5 小时前
【JavaEE】(24) Linux 基础使用和程序部署
linux·运维·服务器
IT 小阿姨(数据库)6 小时前
PgSQL中pg_stat_user_tables 和 pg_stat_user_objects参数详解
linux·运维·数据库·sql·postgresql·oracle
❀͜͡傀儡师6 小时前
Docker部署搜索引擎SearXNG
运维·docker·容器·searxng