专栏首页云计算如何使用docker开发

如何使用docker开发

Docker是一种革命性的容器技术,它将某些软件包装在一个完整的文件系统中,该文件系统包含运行所需的所有的代码、运行环境、资料等。docker可以运行在任何操作系统上,同时又能保证文件系统互不干扰。

Docker的发明宗旨是成为DevOps(开发人员+操作)工具链的一部分。对于开发人员来说,这意味着他们可以专注于编写代码,而不用担心最终将运行的系统环境。通过使用,docker已经成为了他们代码系统中的一部分。

作为一名开发人员,您无需了解Docker管理的每一个细节,您需要知道的一切将在本文中展示。

接下来的文章需要你已经在你的电脑上安装好docker所需要的环境。

当你的Docker安装运行在Windows或Mac之后。我们首先看看管理Docker虚拟机的docker-machine。

我们使用  docker-machine ls 用来检查我们的docker虚拟机状态。

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown

“default”是docker安装过程中自动创建的,如果您不需要的话,可以删除后创建新的。

我这里选择删除,使用下面的命令。

$ docker-machine rm default
About to remove default
Are you sure? (y/n): y
Successfully removed default

当我们再次运行“ls”命令时,就什么看不到啦。

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

接下来我们将创建一个新的docker-machine来继续我们的教程。我将它命名为“softlab”。这里将使用Oracle的VirtualBox作为虚拟驱动程序 - 对于其他驱动程序,您可以在这里查看

$ docker-machine create --driver virtualbox softlab
Running pre-create checks...
.
.
.
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env softlab

如果你想通过ssh新创建的soflab docker-machine,我们使用“docker-machine ssh softlab”命令来修改。

$ docker-machine ssh softlab

Boot2Docker version 1.12.3, build HEAD : 7fc7575 - Thu Oct 27 17:23:17 UTC 2016

Docker version 1.12.3, build 6b644ec

docker@softlab:~$ 

docker@softlab:~$ exit

我们可以使用该stop 命令来停止docker-machine或者 start 来启动docker-machine。请参阅下面的shell的示例。

$ docker-machine stop softlab
Stopping "softlab"...
Machine "softlab" was stopped.
$ docker-machine start softlab
Starting "softlab"...
(softlab) Check network to re-create if needed...
(softlab) Waiting for an IP...
Machine "softlab" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$

有些时候我们需要设置环境变量来配置我们的shell来使用Docker。我们可以通过'env'命令获得这些变量。

$ docker-machine env softlab
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/dursun/.docker/machine/machines/softlab"
export DOCKER_MACHINE_NAME="softlab"
# Run this command to configure your shell:
# eval $(docker-machine env softlab)

正如在输出中所描述的,我们需要通过eval来设置这些变量   $(docker-machine env softlab)

$ eval $(docker-machine env softlab)

接下来我们在Docker机器上运行Docker容器。首先,我们运行下hello world容器。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete 
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
     executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
     to your terminal.
     To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
 Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com
 For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

让我们用ps 命令检查我们的容器  。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

怎么回事什么都没有?因为'hello world'容器刚刚启动和停止,'ps'命令只显示正在运行的容器。如果我们想查看所有的容器,不管它们是否在运行,我们应该通过'-a'参数。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
462d32f52d54        hello-world         "/hello"            10 seconds ago      Exited (0) 9 seconds ago                       pensive_tesla

接下来我们来试试一下web服务器

$ docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
43c265008fae: Pull complete 
e4c030a565b1: Pull complete 
685b7631c1ce: Pull complete 
Digest: sha256:dedbce721065b2bcfae35d2b0690857bb6c3b4b7dd48bfe7fc7b53693731beff
Status: Downloaded newer image for nginx:latest
dc58b43c56d09e1543bbf59acf23d611d4c25a4b1dd7df65982f9525471eac16

备注:

  • -d表示容器应该运行分离。容器将在后台运行并打印容器ID。
  • -p用于在主机上配置容器的端口映射。请记住,主机是docker,而不是你的本地主机。在这里,容器的80端口将被映射到主机的80端口。如果我们打到主机IP:80就会映射到docker:80。
  • --name用来给我们的容器分配一个名字。如果你省略了这个参数,Docker会自动命名为默认的其他名称。

让我们再次运行ps;

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
dc58b43c56d0        nginx               "nginx -g 'daemon off"   9 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp, 443/tcp   webserver

看,我们的docker已经正常运行了,现在你就可以通过物理机的ip地址去访问我们搭建好的nginx服务了。

$ docker-machine ip softlab
192.168.99.100

为了停止Web服务器容器,我们将使用该  docker stop 命令。

$ docker stop webserver
webserver
$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

如果您想深入了解,请查看我在Docker中开发Java 8 Spring Boot App的文章  。谢谢~

原文链接:https://dzone.com/articles/docker-for-developers

原文作者:Dursun Koç

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用 docker 搭建你的 typecho 个人博客

    这个项目是我现在网站所运行的docker项目,经过几个小时的研究,终于把docker-lnmp改成能够支持typecho的docker镜像了,这个镜像包含(my...

    Techeek
  • 在OS X上的Docker

    在当今虚拟化的世界里,Docker是这个区域上的新生儿。在运行Linux时,设置和使用它几乎是微不足道的。如果像许多极客一样,你使用OS X作为你的主要开发系统...

    Techeek
  • 在OS X上运行Docker

    在当今虚拟化的世界里,Docker是这个领域中的新生儿。在使用Linux系统时,配置和使用Docker几乎是轻而易举的。但是,如果你像许多极客一样使用OS X...

    Techeek
  • docker离线部署 - jumpserver

    2019年7月17日 ⋅ 浏览量: 4    ...

    以谁为师
  • 「实战篇」开源项目docker化运维部署(终结篇)(11)

    有老铁问我,买电脑thinkpad还是mac,我强烈用建议使用mac,安装个docker环境,随时安装各种的容器,方便自己用,自己写写shell,美滋滋比win...

    IT故事会
  • Centos docker卸载

    问天丶天问
  • docker 入门与安装

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括...

    付威
  • Centos7使用docker搭建Sentry

      Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node...

    用户3773636
  • Docker笔记-安装配置

    sudo apt-get remove docker docker-engine docker.io containerd runc

    Spaceack
  • Docker,请做好自己的清理工作

    最近,我们开始对一些应用程序进行docker化,不得不说,我简直爱上了Docker!这是一个非常棒的工程,在AWS EC2的软件运用的基础上,它让我们的生活变得...

    庹阳

扫码关注云+社区

领取腾讯云代金券