Docker教程

Docker教程

Docker简介

1.Docker是什么?

Docker 是一个便携的应用容器,Docker 当你需要在容器内运行自己的应用(当然可以是任何应用),Docker 都提供了一个基础系统镜像作为运行应用时的基础系统。也就是说,只要是 Linux 系统上的应用都可以运行在 Docker 中,也可以实现虚拟化。

2.Docker能干什么?
  1. 更快速的交付和部署
  2. 自动化测试和持续集成、发布。
  3. 允许实例简单、快速地扩展。
3.Docker特点
  • 轻量,体现在内存占用小,高密度
  • 快速,毫秒启动
  • 隔离,沙盒技术更像虚拟机

Docker 入门

1.Docker基本概念

镜像(Image),容器(Container),仓库(Repository)

  • 镜像:我们可以理解为一个预配置的系统光盘,这个光盘插入电脑后就可以启动一个操作系统。当然由于是光盘,所以你无法修改它或者保存数据,每次重启都是一个原样全新的系统。Docker 里面镜像基本上和这个差不多。
  • 容器:同样一个镜像,我们可以同时启动运行多个,运行期间的产生的这个实例就是容器。把容器内的操作和启动它的镜像进行合并,就可以产生一个新的镜像。
  • 仓库:Docker 使用类似 git 的方式管理镜像。通过基本的镜像可以定制创建出来不同种应用的 Docker 镜像。Docker Hub 是 Docker 官方提供的镜像中心。在这里可以很方便地找到各类应用、环境的镜像。由于 Docker 使用联合文件系统,所以镜像就像是夹心饼干一样一层层构成,相同底层的镜像可以共享。所以 Docker 还是相当节约磁盘空间的。要使用一 个镜像,需要先从远程的镜像注册中心拉取,这点非常类似 git。
2.Docker思想

集装箱

标准化:①运输方式 ② 存储方式 ③ API接口

隔离

3.Docker组件
  • docker Client客户端————>向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
  • docker Server服务器进程—–>处理所有docker的请求,管理所有容器
  • docker Registry镜像仓库——>镜像存放的中央仓库,可看作是存放二进制的scm

Docker安装

1.在 CentOS 7 上安装 Docker

​ 使用 yum 从软件仓库安装 Docker

	yum install docker 

​ 启动 Docker 的守护进程

	service docker start

​ 如果想要 Docker 在系统启动时运行,执行

	chkconfig docker on 

​ 查看是否安装成功

	docker --version
2.Docker中配置国内镜像

​ 使用vi修改 /etc/docker/daemon.json 文件

{ 
"registry-mirrors": ["http://hub-mirror.c.163.com"] 
}

​ 配置完之后执行下面的命令,以使docker的配置文件生效

systemctl daemon-reload 
systemctl restart docker

​ docker info可以查看到修改过的配置

Registry Mirrors:
 http://hub-mirror.c.163.com


Image镜像

1.获取镜像

​ 可以使用 docker pull 命令来从仓库获取所需要的镜像

//获取tomcat镜像
docker pull tomcat
2.列出本地镜像
docker images

  • 来自于哪个仓库
  • 镜像的标记
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

TAG 信息用来标记来自同一个仓库的不同镜像。如果仓库中有多个镜像,通过 TAG 信息来区分发行版本。

启动时,如果不指定具体的标记,则默认使用 latest 标记信息。

3.搜寻镜像

​ 使用docker search命令可以搜索远端仓库中共享的镜像

​ 支持的参数包括:
​ --automated=false仅显示自动创建的镜像。
​ --no-trunc=false输出信息不截断显示。
​ -s, --stars=0指定仅显示评价为指定星级以上的镜像。

//列出星级大于30的Redis镜像
$ docker search -s=30 redis
4.创建镜像

​ 创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

​ 该方法主要是使用docker commit命令,其命令格式为docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]],主要选项包括:
​ -a, --author="“作者信息。
​ -m, --message=”"提交消息。
​ -p, --pause=true提交时暂停容器运行。

  1. 修改已有镜像

    先使用下载的镜像启动容器,并在其中进行修改操作,例如创建一个test文件,之后退出:

    [root@hadoop100 ~]# docker run -ti docker.io/centos /bin/bash
    [root@52c1d97c3620 /]# touch test
    [root@52c1d97c3620 /]# exit
    

    注意:记住容器的 ID52c1d97c3620,稍后还会用到.

    使用docker commit命令来提交为一个新的镜像。提交时可以使用ID或名称来指定容器:

    [root@hadoop100 ~]# docker commit -m "touch test" -a "Docker Newbee" 52c1d97c3620 test 3696dc64a0333c2ae40d510a57dcf9ce6aa383fba8f8240cf61795e3c39cf284
    

    其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息

    此时查看本地镜像列表,即可看到新创建的镜像:

    [root@hadoop100 ~]# docker images
    REPOSITORY     TAG         IMAGE ID         CREATED           SIZE
    test          latest      bd3ba467e348    6 seconds ago     200 MB
    
  2. 利用 Dockerfile 来创建镜像

    使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令。

    新建一个目录和一个 Dockerfile

    $ mkdir test2
    $ cd test2
    $ touch Dockerfile
    

    Dockerfile 中每一条指令都创建镜像的一层,例如:

    # This is a comment
    FROM centos
    MAINTAINER Docker Newbee <newbee@docker.com>
    RUN apt-get -qq update
    RUN apt-get -qqy install ruby ruby-dev
    RUN gem install sinatra
    

    Dockerfile 基本的语法是

    • 使用#来注释
    • FROM 指令告诉 Docker 使用哪个镜像作为基础
    • 接着是维护者的信息
    • RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件

    编写完成 Dockerfile 后可以使用 docker build 来生成镜像

   $ docker build -t="test2" .

​ 其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。

此外,还可以利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD 命令来描述容器启动后运行的程序等。

   # put my local web site in myApp folder to /var/www
   ADD myApp /var/www
   # expose httpd port
   EXPOSE 80
   # the command to run
   CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
  1. 从本地文件系统导入

    可以直接从一个操作系统模板文件导入一个镜像。在这里,推荐使用OpenVZ提供的模板来创建。OPENVZ模板的下载地址为http://openvz.org/Download/templates/precreated

    比如,下载了一个ubuntu-14.04的模板压缩包后,可以使用以下命令导入:

    $ sudo cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04
    
5.存出和载入镜像
  1. 存出镜像

    如果要导出镜像到本地文件,可以使用 docker save 命令

    $ sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
    
    1. 载入镜像

    可以使用 docker load 从导出的本地文件中再导入到本地镜像库

    $ sudo docker load --input ubuntu_14.04.tar
    

    $ sudo docker load < ubuntu_14.04.tar
    
6.移除本地镜像

​ 移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器

//移除指定镜像
$ docker rmi test

//移除所有镜像
$ docker rmi $(docker images -q)

​ *注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。

​ 用-f可以强制删除

7.上传镜像

​ 可以使用docker push命令上传镜像到仓库,默认上传到DockerHub官方仓库(需要登录),命令格式为docker push NAME[:TAG]

​ 用户在DockerHub网站注册后,即可上传自制的镜像。例如用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker push命令上传镜像:

$ sudo docker tag test:latest user/test:latest
$ sudo docker push user/test:latest

Docker容器

1.启动容器

​ 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

  1. 新建并启动

    命令为 docker run

    //启动centos
    $ docker run -t -i --name centos-test centos
    

    -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

    -i 则让容器的标准输入保持打开。

    --name 用来指定容器的启动名

  2. 启动已终止容器

    利用 docker start 命令,直接将一个已经终止的容器启动运行

    $ docker start centos-test(容器id或容器名)
    
2.守护态运行

​ 让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现

$ docker run --name -d centos-test2 centos
3.终止容器

​ 使用 docker stop 来终止一个运行中的容器

$ docker stop centos-test(容器id或容器名)
4.进入容器

​ 在使用 -d 参数时,容器启动后会进入后台。 某些时候需要进入容器进行操作,可以使用docker attach 命令。

$ docker attach centos-test
5.退出终端
  • 通过 exit 命令或 Ctrl+d来退出终端时,所创建的容器立刻终止。
  • 通过 Ctrl+q+p来退出终端时,所创建的容器不会终止。
6.导出和导入容器

​ 使用 docker export 命令

$ docker export 7691a814370e > centos.tar

​ 使用 docker import 从容器快照文件中再导入为镜像

$ cat centos.tar | sudo docker import - test/centos:v1.0
7.删除容器

​ 使用 docker rm 来删除一个处于终止状态的容器

//删除指定容器
$ docker rm  centos-test 

//删除所有容器
$ docker rm $(docker ps -a -q)

-f可以强制删除​

8.端口映射

-p 可以进行端口的映射,用来暴露给外部访问

$ docker run -d -p 8081:8080 --name tomcat tomcat

9.容器日志
 //查看该容器名或id的日志
$ docker logs tomcat(容器名或容器id)

10.容器列表
//查看运行的容器列表
$ docker ps

//查看运行和停止的容器
$ docker pa -a


Springboot项目云部署

​ 首先在本机进入项目目录下,使用命令mvn package对项目进行打包,这里选择的打包方式为jar。

​ 接下来将jar文件上传到linux服务器上部署,首先在项目jar文件同级目录下创建一个Dockerfile文件,因为 Docker是使用Dockerfile文件来编译自己的镜像的。

​ 文件的内容如下:

FROM java:8
MAINTAINER wyq
ADD springboot-helloworld-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

​ 文件内容解释:

​ 1、基镜像为JAVA 版本为8
​ 2、作者名字
​ 3、将项目添加到镜像中,并重命名为app.jar
​ 4、运行镜像文件,监听端口为8080
​ 5、启动时运行java -jar app.jar

其中使用Dockerfile文件中的命令有很多,这里简单的介绍下

  1. FROM 命令
    FROM 指令知名了当前镜像继承的基镜像,编译当前的镜像是会自动下载基镜像。

    FROM centos
    
    
  2. MAINTAINER 指令
    MAINTAINER 指令指明了当前镜像的作者

    MAINTAINER wyq
    
    
  3. RUN指令
    RUN指令可以在当前镜像上执行linux命令,并形成一个新的层(编译时动作)

    RUN /bin/bash -c "echo helloworld" 
    或
    RUN ["/bin/bash", "-c", "echo hello"]
    
    
  4. CMD指令
    CMD指令指明了启动镜像容器时的默认行为,该指令在Dockerfile中唯一(运行时动作)

    CMD echo “this is a test”
    
    
  5. EXPOSE 指令
    EXPOSE知名了镜像运行时的容器必需监听指定的端口

    EXPOSE 8080
    
    
  6. ENV指令
    ENV指令可以用来设置环境变量

    ENV myName=will
    
    
  7. ADD指令
    ADD指令是从当前工作目录复制文件到镜像文件中

    ADD text.txt /mydir/
    
    
  8. ENTRYPOINT 指令
    RNTRYPOINT 指令可以让容器像一个可执行程序一样运行,并接受参数执行

    RNTRYPOINT  ["/bin/echo"]
    
    

​ 接下来编译镜像,在上面的目录下执行下面的命令:

docker build -t test/dockerdemo .

其中test/dockerdemo 为镜像名称,其中test为docker镜像的命名习惯,最后的 . 表示Dockerfile在当前路径下。

​ 然后运行镜像

docker run -d --name dockerdemo -p 8080:8080 test/dockerdemo

​ 最后通过访问服务器,可以看到项目的成功部署.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的打砖块游戏(附源代码)   项目:JavaScript 打砖块游戏(附源代码) 打砖块游戏是使用 HTML5、CSS 和 JavaScript 开发的简单项目。这款游戏是关于借助弹跳球和滑动平面来打破障碍。您可以玩游戏,直到能够打破所有砖块而不会将球掉到地上。玩家必须使用箭头键移动滑动平面。 游戏制作 该项目仅包含 HTML、CSS 和 JavaScript。谈到这款游戏的功能,用户必须移动滑动平面以使球反弹回来以打破砖块。球必须接触砖块才能将其打破,并且不应掉落到地上。这款游戏的 PC 控制也很简单。您只需使用左、右、上、下键根据要求移动滑动平面即可。如果玩家能够在 3 次生命中清除所有砖块,则获胜。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
使用 JavaScript 编写的带有源代码的引文生成器   项目:使用 JavaScript 编写的引文生成器(附源代码) Quote Generator 是一个使用 HTML、CSS 和 JavaScript 开发的简单项目。这是一个简单的励志名言生成器迷你项目。当您单击“ 显示另一个名言” 按钮时,每次单击时您都会看到不同的励志名言。这个项目是一个简单的 JavaScript 项目,用于随机显示励志名言。此外,您可以看到背景颜色随着名言的变化而变化。 关于该项目 这个生成器是一个简单有趣的项目,仅包含 HTML、CSS 和 JavaScript。在这里,用户必须单击“ 显示另一个引文” 按钮,引文就会出现,背景颜色也会发生变化。此外,该项目还包含大量 JavaScript,用于对项目的某些部分进行验证。 如何运行该项目? 要运行此项目,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox  ,以获得更好的性能。要执行该项目,首先,通过单击 index.html 文件在浏览器中打开该项目。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何环境中运行。以下是Docker教程: 1. 安装Docker 首先需要在你的操作系统上安装Docker。可以从官方网站上下载适合你操作系统的版本。安装完成后,可以在命令行中输入docker -v来验证安装是否成功。 2. 创建Docker镜像 Docker镜像是一个包含应用程序及其依赖项的文件。可以使用Dockerfile来定义如何构建镜像。Dockerfile是一个文本文件,其中包含一系列指令,用于构建镜像。以下是一个简单的Dockerfile示例: ``` FROM ubuntu RUN apt-get update && apt-get install -y python3 COPY app.py /app/ WORKDIR /app CMD ["python3", "app.py"] ``` 这个Dockerfile使用Ubuntu作为基础镜像,并安装了Python3。然后将app.py文件复制到/app/目录下,并将工作目录切换到/app。最后使用CMD指令来运行app.py。 要构建镜像,需要在Dockerfile所在的目录中运行以下命令: ``` docker build -t myapp . ``` 这个命令会在当前目录中构建一个名为myapp的镜像。 3. 运行Docker容器 要运行容器,需要使用docker run命令。以下是一个示例: ``` docker run -p 8000:8000 myapp ``` 这个命令会启动一个名为myapp的容器,并将其映射到主机的8000端口。现在可以访问http://localhost:8000来访问应用程序了。 4. 常用命令 以下是一些常用的Docker命令: - docker ps:列出当前正在运行的容器。 - docker images:列出当前可用的镜像。 - docker stop <容器ID>:停止运行中的容器。 - docker rm <容器ID>:删除容器。 - docker rmi <镜像ID>:删除镜像。 以上就是Docker的简单教程。要深入了解Docker的更多内容,建议查阅官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值