Docker2-基础

1、Docker常用安装

1、安装mydql

1、总体步骤

(1)搜索镜像

docker search xx(镜像名)

(2)拉取镜像

docker pull xx(镜像名)

(3)查看镜像

(4)启动镜像

(5)停止镜像

(6)移除镜像

2、操作

(1)在搜索镜像后,拉取mysql:5.6镜像

docker pull mysql:5.6

(2)运行mysql镜像

docker run -p 12306:3306 --name mysql -v /xiaolun/mysql/conf:/etc/mysql/conf.d -v /xiaolun/mysql/logs:/logs -v /xiaolun/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.6
image-20201112194950871

在数据库中创建表:

扫描二维码关注公众号,回复: 12502031 查看本文章
mysql> create table stu(id int,name varchar(20));
insert into stu values(1,"lkl");

(3)Datagrip连接

image-20201112195200159

2、安装redis

1、拉取镜像

docker pull redis:3.2

2、运行镜像

docker run -p 6379:6379 -v /xiaolun/myredis/data:/data -v /xiaolun/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

然后使用下面的命令添加一个redis.conf文件,在该文件中包含redis的基本配置。

/xiaolun/myredis/conf/redis.conf
vim /xiaolun/myredis/conf/redis.conf/redis.conf

3、测试连接

docker exec -it xx(运行着Rediis服务的容器ID) redis-cli

4、测试持久化文件

image-20201112200802172

2、本地镜像发布到阿里云

1、发布镜像

1、本地镜像发送到阿里云流程图

image-20201112204241644

2、生成镜像

(1)方法1:使用前面介绍的Dockerfile

(2)方法2:从容器中创建一个新的镜像,本文采取这种形式。

#-a :提交的镜像作者;
#-m :提交时的说明文字;
docker commit -a xx -m xx 容器ID 仓库[:tag]

#举例
docker commit -a xiaolun -m "upload redis:3.3 from 3.2" 62dd984ebbf1 myredis:1.4

(3)本地镜像原型

运行着的redis:3.2。

(4)创建仓库的镜像

登录进阿里云网址:

https://homenew.console.aliyun.com/

点击管理,创建命名空间xiaolun_namespace和仓库名称:

image-20201112205120187

(5)使用下面的命令将镜像推送到阿里云上

$ sudo docker login --username=武汉小伦 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId](上文生成的镜像) registry.cn-hangzhou.aliyuncs.com/xiaolun_namespace/xialun_redis1.4:[镜像版本号](1.4.1)
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/xiaolun_namespace/xialun_redis1.4:[镜像版本号](1.4.1)

(6)公有云查询镜像

image-20201112205509099 image-20201112205552285

(7)将阿里云的镜像下载到本地

# docker pull 容器公网地址:版本号
docker pull registry.cn-hangzhou.aliyuncs.com/xiaolun_namespace/xialun_redis1.4:1.4.1
image-20201112205749561

3、SpringBoot微服务打包Docker镜像

1、创建SpringBoot项目

项目结构:

image-20201114091633527

(1)pom文件

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.3.1.RELEASE</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!--这里写上main方法所在类的路径-->
            <configuration>
                <mainClass>com.xiaolun.MainApp</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

(2)业务类

package com.xiaolun.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @time: 2020-11-12 21:04
 * @author: likunlun
 * @description: controller测试
 */
@RestController
public class HelloController {
    
    
	@RequestMapping("/hello")
	public String hello() {
    
    
		return "hello,xiaolun!";
	}
}

(3)主启动类

package com.xiaolun;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @time: 2020-11-12 21:00
 * @author: likunlun
 * @description: 启动类
 */
@SpringBootApplication
public class MainApp {
    
    
	public static void main(String[] args) {
    
    
		SpringApplication.run(MainApp.class, args);
	}
}

2、打jar包运行

clear -> package

3、编写Dockerfile文件

FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

4、将打成的jar包和Dockerfile上传到服务器

5、构建镜像

[root@hadoop101 myidea]# docker build -t xiaolunjar1 .

6、发布运行

[root@hadoop101 myidea]# docker run -d -P --name xiaolun-springboot-web xiaolunjar1

image-20201114092303001

image-20201114092312681

4、Docker网络

1、Docker0网络介绍

1、查看网址地址

ip addr
image-20201114101715812

2、查看容器内部网络地址

docker-tomcat docker exec -it tomcat01 ip addr
image-20201114101905024

会得到一个由docker0网络分配的地址 eth0@if8 。

我们每次启动一个docker容器,docker就会给docker容器分配一个ip,ip地址使用的docker0桥接模式,使用的技术是veth-pair技术。

image-20201114102119715

我们发现这个容器生成的网卡都是一对对的。veth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连。正因为有这个特性 veth-pair 充当一个桥梁,连接各种虚拟网络设备的OpenStac,Docker容器之间的连接,OVS的连接,都是使用evth-pair技术。

3、测试tomcat01和tomcat02的ping指令。

image-20201114102509864

4、总结

tomcat01和tomcat02使用的是一个公用路由器docker0。

所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用ip。

image-20201114102603860

5、Docker Compose

1、介绍

1、概述

DockerFile build 手动操作,只针对单个容器,Docker Compose可以轻松的管理容器。

2、安装

(1)执行下面的命令进行安装

#官方下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#授权
chmod +x /usr/local/bin/docker-compose
# 加速下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#授权
chmod +x /usr/local/bin/docker-compose

(2)测试安装状态

docker-compose version

3、编写规则

(1)快速入门案例

https://docs.docker.com/compose/gettingstarted/

(2)流程

  • 创建一个文件app.py。
  • 创建Dockerfile为应用打包成镜像。
  • 创建Docker-compose.yaml文件,定义整个服务所需要的环境功能。
  • 启动compose项目
docker-compose up

(3)yaml规则

一共有下面的三层结构:

image-20201114135844592

我们还要注意下面的依赖关系:

image-20201114140032945

一共有下面的三层结构:

image-20201114135844592

我们还要注意下面的依赖关系:

image-20201114140032945

猜你喜欢

转载自blog.csdn.net/weixin_43334389/article/details/114061379