简单使用Docker

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了简单使用Docker脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.docker

  • CE 即社区版(免费,支持周期 7 个月)
  • EE 即企业版,强调安全,付费使用,支持周期 24 个月

2.CentOS安装Docker

注意F1a; CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

  1. 卸载(可选)
yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-LOGrotate 
                  docker-logrotate 
                  docker-selinux 
                  docker-engine-selinux 
                  docker-engine 
                  docker-ce
  1. 安装 安装yum工具
yum install -y yum-utils 
           device-mapPEr-persistent-data 
           LVM2 --skip-broken

更新本地镜像

# 设置docker镜像源
yum-config-manager 
    --add-repo 
    https://mirrors.aliyun.COM/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

最后,开始安装

yum install -y docker-ce

通过命令启动docker

Systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务
  1. 注意打开端口,我直接把我的全部打开了
  2. 查看docker版本:docker -v

3.docker的指令

  1. 拉取镜像:docker pull xxx(参考:DockerHub)

    简单使用Docker

  2. 查看拉取到的镜像:docker images

  3. 使用docker save导出镜像到磁盘 docker save -o [保存的目标文件名称] [镜像名称] 例子:docker save -o nginx.tar nginx:latest

    简单使用Docker

  4. 删除本地的xxx镜像:docker rmi xxx:xxx 例子:docker rmi nginx:latest

  5. 加载本地文件:docker load -i xxx.tar 例子:docker load -i nginx.tar 小练习

    简单使用Docker

4.创建并运行容器命令

简单使用Docker

  1. 创建并运行xxx容器的命令:
docker run --name containerName -p 80:80 -d xxx:xxx(比如nginx:latest)

命令解读

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • xxx:镜像名称,例如nginx
查看正在运行中的容器:docker ps
查看所有容器,包括暂停的:docker ps -a

简单使用Docker

需求:进入Nginx容器,修改HTML文件内容,添加“传智教育欢迎您”

提示:进入容器要用到docker exec命令。

步骤

1)进入容器。进入我们刚刚创建的nginx容器的命令为:

docker exec -IT mn bash

命令解读:

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

  • mn :要进入的容器的名称

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令(容器内没有vi命令)

cd /usr/share/nginx/html
sed -i -e 's#Welcome to nginx#随风欢迎你#g' -e 's#<head>#<head><;meta charset="utf-8">#g' index.html
  • Ctrl+P+Q:退出容器

  • 查看容器日志的命令:

    • docker logs xxx(自己起的容器名)
    • 添加 -f 参数可以持续查看日志docker logs -f xxx(自己起的容器名)
    • Ctrl+C退出(-f的)

5.数据卷(容器数据管理)

  • 数据卷的作用:

    • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
  • 什么是数据卷

    • 数据卷volume是一个虚拟目录,指向宿主机文件系统中的某个目录。

      简单使用Docker

      这样,对容器的一切操作都会在数据卷对应的宿主机目录了。
  • 数据集操作命令 数据卷操作的基本语法如下:

docker volume [COMMAND]
  • docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

    • create 创建一个volume
    • inspect 显示一个或多个volume的信息
    • ls 列出所有的volume
    • PRune 删除未使用的volume
    • rm 删除一个或多个指定的volume
  • 挂载数据卷 我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录

  --name mn 
  -v html:/root/html 
  -p 8080:80
  nginx 
移除自己停用的容器:docker rm -f id(可以通过docker ps -a 进行查看)

案例-给nginx挂载数据卷

需求:创建一个nginx容器,修改容器内的html目录内的index.html内容

分析:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。

提示:运行容器时使用 -v 参数挂载数据卷

步骤:

① 创建容器并挂载数据卷到容器内的HTML目录

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

② 进入html数据卷所在位置,并修改HTML内容

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /VAR/lib/docker/volumes/html/_data
# 修改文件
vi index.html
  • MySQL挂载本地目录
docker run 
    --name mySQL 
    -e MYSQL_ROOT_PASSWORD=922815 
    -p 3306:3306 
    -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf 
    -v /tmp/mysql/data:/var/lib/mysql 
    -d 
    mysql:5.7.25

要是运行不起来可以尝试删除之前数据卷conf文件夹里面的东西

5.Dockerfile自定义镜像

  • 镜像结构

    简单使用Docker

  • Dockerfile语法

构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

我们只需要告诉Docker,我们的镜像的组成,需要哪些Baseimage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。 Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

简单使用Docker

  • 构建java项目
    1. 新建文件夹demo
    2. 拷贝jar包到demo里面
    3. 放jdk8.tar.gz到demo里面
    4. 将Dockerfile放到demo里面
# 指定基础镜像
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 
 &amp;& 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
  1. 将demo放到我们的centos系统里面
  2. 运行:docker build -t javaweb:1.0

基于java8构建Java项目(重要)

虽然我们可以基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。

例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。

需求:基于java:8-alpine镜像,将一个Java项目构建为镜像

实现思路如下:

  • ① 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile

  • ② 拷贝课前资料提供的docker-demo.jar到这个目录中

  • ③ 编写Dockerfile文件:

    • a )基于java:8-alpine作为基础镜像

    • b )将app.jar拷贝到镜像中

    • c )暴露端口

    • d )编写入口ENTRYPOINT

      内容如下:

      From java:8-alpine
      COPY ./app.jar /tmp/app.jar
      EXPOSE 8090
      ENTRYPOINT java -jar /tmp/app.jar
      
  • ④ 使用docker build命令构建镜像

  • ⑤ 使用docker run创建容器并运行

随风

脚本宝典总结

以上是脚本宝典为你收集整理的简单使用Docker全部内容,希望文章能够帮你解决简单使用Docker所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。