Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

时间:2022-08-28 11:24:04

Docker虚拟机架构

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

云计算中的Docker虚拟机

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

Docker镜像与容器

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

CentOS7安装Docker

yum -y update
yum install -y docker

管理Docker虚拟机

  • 启动、关闭与重启
    --启动
    service docker start
    --关闭
    service docker stop
    --重启
    service docker restart

Docker虚拟机管理命令

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

在线安装镜像 

举个例子:在线安装Java镜像

docker search java
docker pull java

国外镜像仓库下载速度较慢,建议使用国内镜像仓库,如DaoCloud

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

我这边的加速命令

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

执行成功之后会在 /etc/docker/daemon.json 中加入 {"registry-mirrors": ["http://f1361db2.m.daocloud.io"],} 配置

注意,这里多了个  号,我们要编辑 /etc/docker/daemon.json 进行删除。

然后我们搜索Java镜像

docker search java

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机

我们这边选择 docker.io/java 进行安装

docker pull docker.io/java

导出、导入、查看、删除镜像

  • 导出镜像
    docker save java > /home/java.tar.gz
  • 导入镜像
    docker load < /home/java.tar.gz
  • 查看镜像
    docker images
  • 删除镜像
    docker rmi java

启动容器

启动镜像会创建出一个运行状态的容器

# -it以交互模式运行容器,为容器重新分配一个伪输入终端
# --name为容器指定一个名称
# java镜像名称
# bash进入容器命令行
docker run -it --name myjava java bash
# -p主机:docker内部端口映射
docker run -it --name myjava -p 9000:8080 -p 9001:8085 java bash
# -v目录文件映射,主机/home/project,dicker内部目录/soft
# --privileged文件操作拥有最高权限
docker run -it --name myjava -v /home/project:/soft --privileged java bash

示例:

Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机Docker环境下的前后端分离项目部署与运维(五)Docker虚拟机
[root@localhost home]# docker run -it --name myjava -p 9000:8080 -p 9001:8085 -v /home/project:/soft --privileged --name myjava docker.io/java bash
root@042a54274f11:/# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
root@042a54274f11:/# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

root@042a54274f11:/# cd /soft/
root@042a54274f11:/soft# ls
root@042a54274f11:/soft# touch hello.txt
root@042a54274f11:/soft# echo Thanks > hello.txt
root@042a54274f11:/soft# exit
exit
[root@localhost home]# ls
java.tar.gz  project  wyt
[root@localhost home]# cd project/
[root@localhost project]# ls
hello.txt
View Code

暂停、恢复、停止、启动容器

# 暂停容器
docker pause myjava
# 恢复容器
docker unpause myjava
# 停止容器
docker stop myjava
# 开始容器
docker start -i myjava
# 删除容器
docker rm myjava

查看日志

docker logs -f -t --since="20187-7-30" --tail=10 docker_container_name
# --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
# -f : 查看实时日志
# -t : 查看日志产生的日期
# -tail=10 : 查看最后的10条日志。
# docker_container_name : 容器名称

查看容器列表

docker ps -a

查看容器信息

docker inspect 容器ID

数据卷管理

docker volume create 数据卷名称  #创建数据卷
docker volume rm 数据卷名称  #删除数据卷
docker volume inspect 数据卷名称  #查看数据卷

网络管理

docker network ls 查看网络信息
docker network create --subnet=网段 网络名称
docker network rm 网络名称

避免VM虚拟机挂起恢复之后,Docker虚拟机断网

vi /etc/sysctl.conf
文件中添加 net.ipv4.ip_forward=1 这个配置
#重启网络服务
systemctl  restart network

 

centos7 docker升级到最新稳定版本

删除老版本

  1. 停止docker服务
    systemctl stop docker
  2. 查看当前版本
    rpm -qa | grep docker

     

  3. 卸载软件包

    yum erase docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine \
                      docker-ce
  4. 删除相关配置文件
    find /etc/systemd -name '*docker*' -exec rm -f {} \;
    find /etc/systemd -name '*docker*' -exec rm -f {} \;
    find /lib/systemd -name '*docker*' -exec rm -f {} \;
    rm -rf /var/lib/docker   #删除以前已有的镜像和容器,非必要
    rm -rf /var/run/docker 

安装新版本

centos7 修改yum源为阿里源

Ubuntu 修改apt-get源为阿里源

  1. 查看可安装的版本
    # 安装需要的依赖包
    yum install -y yum-utils device-mapper-persistent-data
    # 配置稳定仓库
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    # 安装docker-ce
    yum install docker-ce
    # 查询不同版本的Docker
    yum list docker-ce --showduplicates | sort -r
  2. 安装最新版本
    yum install docker-ce -y
  3. 启动并开机自启

    systemctl start docker
    systemctl enable docker
  4. 查看docker版本

    docker version