1

1、简介

Docker是一个开源的应用容器引擎;是一个轻量级容器技术;

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;

运行中的这个镜像称为容器,容器启动是非常快速的。

图片描述

图片描述

2、核心概念

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端(Client):连接docker主机进行操作;

docker仓库(Registry):用来保存各种打包好的软件镜像;

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

图片描述

3、安装Docker

1 检查内核版本,必须是3.10及以上

uname -r 

2 使用 root 权限登录 Centos。确保 yum 包更新到最新(不然运行会报错)

yum update

3 安装依赖

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2

4 安装docker

yum install docker

5 查看docker版本

docker version

6 启动docker

systemctl start docker

7 设置docker开启启动

systemctl enable docker

8 测试安装效果

Docker的简单运用---Hello World
将名为 hello-world 的 image 文件从仓库抓取到本地。

docker pull hello-world

运行

docker run hello-world

正确的效果:

图片描述

9 关闭docker

systemctl stop docker

10 重启Docker

service docker restart

4、Docker常用命令&操作

4.1 镜像操作

clipboard.png

https://hub.docker.com/

4.2、容器操作(安装mysql为例)

  1. 搜索镜像

    docker search mysql
  2. 拉取镜像(下载)

    docker pull mysql
        若需要选择版本则如:
        docker pull mysql:8.0
    
    
  3. 启动(做了端口映射)

     docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
     ----------
     mysql02:设置的容器名称,可自行设置。
     -p:将容器内部使用的网络端口映射到我们使用的主机上。
     -d:让容器在后台运行
     设置 root 用户默认密码是 123456
    
  4. 进入容器

    docker exec -it 容器ID /bin/bash 
    
  5. 登录mysql

       mysql -uroot -p123456
  6. mysql远程登录相关

      Navicat 远程连接报错:
      进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)
       授权
               GRANT ALL ON *.* TO 'root'@'%';
       刷新权限
               flush privileges
       此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则
    
       更改加密规则
                 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
       更新root用户密码
                 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
       刷新权限
                 flush privileges;
                 
       OK,设置完成,再次使用 Navicat 连接数据库
    
    
  7. 其他容器常用命令:

        1.查看运行中的容器
           docker ps  
        2. 停止运行中的容器
           docker stop  容器的id
           
         3.查看所有的容器
           docker ps -a
         4.启动容器
           docker start 容器id
         5.删除一个容器
           docker rm 容器id
         6.查看容器的日志
           docker logs container-name/container-id
         7.查看容器的日志
           docker logs container-name/container-id
         8.更多命令参看
           https://docs.docker.com/engine/reference/commandline/docker/
    

4、卸载docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

5、Dockerfile

直接看这篇文章吧

作者:百衲本
Dockerfile文件详解
中文文档:http://www.dockerinfo.net/doc...

Dockerfile安装jdk

1.官网下载jdk
2.上传到服务器,并解压
3.在解压jdk的同级目录新建一个Dockerfile文件,文件内容为:

clipboard.png

#images 基础镜像
FROM centos
#MAINTAINER 作者信息
MAINTAINER chy
#把自己解压的java目录复制到容器的目录中
ADD jdk1.8.0_211 /work/java
#配置环境变量
ENV JAVA_HOME /work/java
ENV CLASSPATH .:$JAVA_HOME/lib.tools.jar
ENV PATH $JAVA_HOME/bin:$PATH

4、运行安装命令
直接本目录执行(上图相同目录)

docker build -t jdk:8 .

#jdk:8  设置image的名称、标签
#. 表示Dockerfile在当前文件夹下,也可使用绝对路径来表示

5.成功,查看镜像

clipboard.png

6.运行创建的镜像

[root@localhost java]# docker run -p 80:80 -d -it e0f4d74150fe /bin/bash
22d7228521019c7ccc275a1a59890e5f10917b2432d675700b7d2ea390e57c6e

注意:创建容器的时候一定要使用 -it /bin/bash这种方式,要不然jdk的容器运行不起来。
打开80端口,因为你的项目jar可能是80端口,一定要注意防火墙。

如果运行报类似这样的错误

COMMAND_FAILED: '/sbin/iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.6:80 
! -i docker0' failed: iptables: No chain/target/match by that name.

那就执行以下命令,成功后并再次创建容器

pkill docker

iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
重启docker后解决  service docker restart
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ycl111/article/details/49028965

7.进入容器,查看java版本

[root@localhost java]# docker exec -it 22d722852101 /bin/bash
[root@22d722852101 /]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

那我们如何把jar项目发布的jdk容器并运行启动呢?

1. 把项目jar上传到实体机
2. 把实体机上面的jar,复制到容器内如:docker cp /usr/local/java/blog 30752fd727f1:/usr/local/java/
    /usr/local/java/blog :实体机jar文件的目录
    /usr/local/java/ :需要先进入容器,在容器内创建了这样一个目录: mkdir -p /usr/local/java
    30752fd727f1:  容器id,一定要跟上 :
3. 然后在容器里面执行java -jar命令就好了


小咸鱼
11 声望4 粉丝

一只不断学习的小咸鱼