ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker介绍以及常用命令

2021-04-09 19:59:13  阅读:169  来源: 互联网

标签:容器 run mysql jar 介绍 常用命令 镜像 Docker docker


Docker

1、前提概念

  • 虚拟机(vm)容器化技术(docker) 都是为了实现云服务的,容器是云的实现的一种手段
  • 云的特征:按使用量计费、资源共享池、多租户隔离

容器与容器之间相互隔离,共享主机资源

其中部署的发展大致如此发展 (物理主机)(虚拟机)(容器化) 到云

  • 容器和虚拟机的区别

image-20210325211207405

iaas: 基础设施就是服务
paas: 平台就是服务 maven gitlab 收费 阿里云平台
saas: 应用就是服务 我们自己开发的软件 打包成一个容器 发布在云上

image-20210325211543044

2、Docker介绍

  • Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
  • 解决了什么问题?

1、环境的不一致

2、隔离性 不会相互影响到

3、弹性伸缩 无需增加服务器 增加容器就好了

  • 工作原理

Docker 分为2部分 c/s 结构

  • docker 客户端

  • docker 守护线程

流程

  • docker 客户端发出要创建容器的请求
  • 首先通过守护进程 查询本地有没有该容器的镜像,如果有学生镜像 那么直接创建一个学生的容器
  • 如果本地没有学生镜像,就去远程仓库中拉取学生镜像,到本地再创建容器

image-20210325212355456

3、Docker怎么用

3.1、下载Docker依赖的环境

想要安装Docker,需要先将依赖的环境全部下载

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

3.2、指定Docker镜像源

默认下载Docker会去国外服务器下载,速度慢,设置国内阿里云镜像源,速度更快

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.3、安装Docker

采用yum安装

yum makecache fast
yum -y install docker-ce

3.4、修改镜像到阿里云

去阿里云自己的容器镜像服务去复制

https://www.aliyun.com/

1.找到产品与服务(一般在网站左上角)2.进入后选择产品与服务 搜索到容器镜像服务
image-20210325213125094
3.找到镜像加速器4.复制自己的这一段代码直接运行(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
image-20210325213546294image-20210325213754057

3.5、启动Docker

启动Docker服务

systemctl start docker

设置开机自动启动

systemctl enable docker

3.6、测试

寻找镜像 下载到本地 并且跑起来(测试下载mysql镜像) https://hub.docker.com/_/mysql

docker run --name zoukx-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

docker run 镜像:版本号

-d:后台运行

-p: 宿主机和容器端口的映射 (宿主机端口:容器端口)

–name:给容器取名字

image-20210325214734324

4、Docker常用命令

4.1、拉去镜像

从中央仓库拉取镜像到本地

docker pull 镜像名称[:tag]

4.2、查看本地全部镜像

查看本地已安装的镜像信息,包含标识、名称、版本、更新时间、大小

docker images

4.3、删除本地镜像

镜像会占用磁盘空间,可以直接手动删除,表示通过查看获取

docker rmi 镜像的标识

4.4、镜像的导入导出

将本地的镜像导出

docker save -o 导出的路径 镜像id

加载本地的镜像文件

docker load -i 镜像文件

修改镜像名称

docker tag 镜像id 新镜像名称:版本

4.5、网上搜索镜像

docker search ***
例如:docker search mysql

4.6、运行容器

运行容器需要指定具体镜像,如果镜像不在,会直接从网上找并下载

例如:docker run --name zoukx-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run  镜像:版本号
-d:  后台运行
-p:  宿主机和容器端口的映射 (宿主机端口:容器端口)
-e:  指定环境
--name:给容器取名字

4.7、查看正在运行的容器

查看容器的信息

docker ps  [-qa]
docker ps  看正在运行的容器
docker ps -a  看到所有的容器
docker ps -q  只看到id

4.8、查看容器日志

可以查看容器运行的信息

docker logs -f 容器id
-f: 可以滚动查看日志的最后几行

4.9、进入容器内部

可以进入容器的内部进行操作

docker exec -it 容器id bash

4.10、复制内容到容器

将宿主机的文件复制到容器内部的指定目录

docker cp 文件名称 容器id:容器内部路径

4.11、重启&启动&停止&删除容器

image-20210325221129865

5、数据卷

数据卷:将宿主机的一个目录映射到容器的一个目录中。可以在宿主机中操作目录内容,容器内部映射的文件,也会跟着一起改变

5.1、查看全部数据卷

查看全部数据卷信息

docker volume ls

5.2、删除数据卷

删除指定数据卷

docker volume rm 数据卷名称

5.3、容器映射数据卷

两种方式:

  • 通过数据卷名称映射,如果数据卷不存在。Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。

  • 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置。但是这个路径下是空的。

#通过数据卷名称映射
docker run -v 数据卷名称:容器内部的路径镜像id#通过路径映射数据卷
#通过路径映射数据卷
docker run -v 路径:容器内部的路径镜像id

5.4、实现案例

创建mysql镜像不带数据卷

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306  -d mysql:5.7

用navicat连上刚运行的容器,随便创建个表,再在数据库中添加数据

删除,再创建容器,发现数据已经没有了

重新创建容器 带数据卷

docker volume create mysqldata

创建容器带数据卷 (用上述提到的第一种方式)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -v mysqldata:/var/lib/mysql -d mysql:5.7

再删除容器,再恢复容器的实验,发现数据还在

用第二种方式

docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag

6、Dockerfile

概念:我们可以从中央仓库下载一个镜像,也可以自己手动去制作—个镜像,需要通过Dockerfile去指定自定义镜像的信息

基本语法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TroM4CJ9-1617968477246)(C:\Users\95201\AppData\Roaming\Typora\typora-user-images\image-20210326192733044.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rc3sRCPS-1617968477247)(C:\Users\95201\AppData\Roaming\Typora\typora-user-images\image-20210326192904794.png)]

通过Dockerfile 创建镜像,记得最后一个点,如果是在当前目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2nKYoCFx-1617968477249)(C:\Users\95201\AppData\Roaming\Typora\typora-user-images\image-20210326192948420.png)]

举例(无参)

# 创建Dockerfile
vi Dockerfile

FROM openjdk:8-jre					#我要创建的镜像 继承jdk8的镜像
ENV HOME /home						#在容器中执行的命令
run mkdir HOME						
COPY ./my.jar HOME/my.jar			#把宿主机 中的文件 copy 到 容器中 workdir 定义容器的工作目录
WORKDIR HOME
EXPOSE 8090
ENTRYPOINT java -jar *****.jar 		#你的jar包
# 创建镜像
docker build -t myhub:1.0 .  		#最后的.表示当前目录
#根据镜像创建容器
docker run -p 8080:8090 -d myhub:1.0

举例(带参)

FROM openjdk:8-jre
ENV HOME /home
ENV profile dev
run mkdir HOME
COPY ./my.jar HOME/my.jar
WORKDIR HOME
ENTRYPOINT java -jar my.jar --spring.profiles.active=$profile
#创建镜像
docker build -t myhub1:1.0 .
#运行的时候传参数
docker run -p 8081:8091 -e profile=prod -d myhub1:1.0

7、实例

步骤(例):

1、将最新代码上传git

2、部署机拉取最新代码并打包成jar

mvn clean package -Dmaven.test.skip=true

3、把新jar包 copy 到 和 dockerfile 同级目录下 (并修改好名字) 准备创建新的镜像

cp ./ithub_user/target/ithub_user-1.0-SNAPSHOT.jar /usr/docker/ithub/ithub_user-1.0-SNAPSHOT.jar
mv ithub_user-1.0-SNAPSHOT.jar ithub_user.jar

4、修改dockerfile 打成新的镜像

FROM openjdk:8-jre
ENV HOME /home
ENV profile dev
run mkdir HOME
COPY ./ithub_user.jar HOME/ithub_user.jar
WORKDIR HOME
ENTRYPOINT java -jar ithub_user.jar --spring.profiles.active=$profile

5、创建新的镜像

docker build -t ithub_user:2.0 .

6、跑不同环境下的镜像

#跑dev环境
docker run -d -p 8071:8070 --name ithub-dev -e profile=dev ithub_user:2.0
#跑test环境
docker run -d -p 8072:8070 --name ithub-test -e profile=test ithub_user:2.0

7、分别测试dev环境和test环境的容器

8、maven docker 插件

1、能够把工程自动打成镜像

1.1 执行打包命令得到jar包

1.2 把jar copy 到dockerfile 同一文件夹下面

1.3 自己写dockerfile

1.4 创建镜像

2、自动的把镜像上传到私服

2.1 创建Dockerfile 放在 Resouces 下

FROM openjdk:8-jre
ENV ARTIFACTID dbtest
ENV ARTIFACTVERSION 1.0-SNAPSHOT
ENV HOME_PATH /home
WORKDIR $HOME_PATH
ADD /$ARTIFACTID-$ARTIFACTVERSION.jar $HOME_PATH/$ARTIFACTID.jar
ENTRYPOINT ["java", "-jar", "dbtest.jar"]

2.2 加入 docker 插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <!--docker镜像相关的配置信息1-->
    <configuration>
        <!--镜像名,这里用工程名-->
        <imageName>${project.artifactId}</imageName>
        <!--Dockerfile文件所在目录-->
        <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
        <!--TAG,这里用工程版本号-->
        <imageTags>
            <imageTag>${project.version}</imageTag>
        </imageTags>
        <!--构建镜像的配置信息-->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.artifactId}-${project.version}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

2.3 上传代码

git add .
git commit -m ""
git push origin master

2.4 部署机拉取最新代码

git pull origin master

2.5 打包 并且打成镜像

mvn clean package -Dmaven.test.skip=true -f pom_docker.xml docker:build

2.6 通过镜像运行容器

docker run -d -p 8090:8090 --name dbtest01 dbtest:1.0-SNAPSHOT

3、去测试

标签:容器,run,mysql,jar,介绍,常用命令,镜像,Docker,docker
来源: https://blog.csdn.net/weixin_44688820/article/details/115558100

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有