前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用docker开发

如何使用docker开发

作者头像
Techeek
发布2017-12-21 12:11:37
2.6K2
发布2017-12-21 12:11:37
举报
文章被收录于专栏:云计算云计算

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

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

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

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

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

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

代码语言:javascript
复制
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown

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

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

代码语言:javascript
复制
$ docker-machine rm default
About to remove default
Are you sure? (y/n): y
Successfully removed default

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

代码语言:javascript
复制
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

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

代码语言:javascript
复制
$ 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”命令来修改。

代码语言:txt
复制
$ 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的示例。

代码语言:javascript
复制
$ 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'命令获得这些变量。

代码语言:javascript
复制
$ 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)

代码语言:javascript
复制
$ eval $(docker-machine env softlab)

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

代码语言:javascript
复制
$ 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 命令检查我们的容器  。

代码语言:javascript
复制
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

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

代码语言:javascript
复制
$ 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服务器

代码语言:javascript
复制
$ 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;

代码语言:javascript
复制
$ 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服务了。

代码语言:javascript
复制
$ docker-machine ip softlab
192.168.99.100

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

代码语言:javascript
复制
$ docker stop webserver
webserver
$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

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

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档