扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容介绍了“docker的hello-world镜像怎么运行”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联是一家专业提供榆社企业网站建设,专注与网站设计、成都网站制作、H5响应式网站、小程序制作等业务。10年已为榆社众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
下载hello-world
这个镜像。
使用docker run
命令。
比如:
$ docker run hello-world
主要是输出一些文本信息,然后就退出了。
使用docker ps
可以查看容器的进程。
不过是空的,因为一运行就退出,只是输出信息,输出完就结束了。
可以使用docker ps -a
来查看退出过的进程。
比如:
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b25a96c17bf4 hello-world "/hello" About a minute ago Exited (0) About a minute ago mystifying_saha
上面只是演示hello world而已,我们运行些有用点的容器。
比如:
$ docker run -it ubuntu bash
运行的是ubuntu这个镜像,如果你的系统上没有这个镜像,会先下载下来。
bash
是表示进入那个ubuntu的镜像的容器的shell,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
这样就相当于进入了另一台ubuntu。
而且这个ubuntu跟你原来的系统是隔离的。
这样也没多大意义,我们经常会用docker来跑一些服务,比如web服务。
那就运行一个nginx容器试试。
$ docker run -d -p 80:80 --name webserver nginx
镜像名称是nginx
,--name
表示为这个容器取个名称叫webserver
。
运行之后,你用docker ps
查看一下容器。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1d4b615709b nginx "nginx -g 'daemon ..." 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 443/tcp webserver
然后你可以使用curl http://127.0.0.1
查看一下,是否运行了nginx服务。
使用docker stop
命令可以停止这个容器的运行。
比如:
$ docker stop webserver
停止之后输入docker ps
发现是空的,这个时候要输入docker ps -a
才能查看退出的容器。
可以使用下面这条命令,清除所有已退出的容器。
$ docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
之前运行nginx容器的时候,有使用-p 80:80
这个参数。
这个表示端口映射。
解释前,我们先来改一下。
$ docker run -d -p 8080:80 --name webserver nginx
查看一下运行状态:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45e47ed889f8 nginx "nginx -g 'daemon ..." 4 seconds ago Up 3 seconds 443/tcp, 0.0.0.0:8080->80/tcp webserver
现在你可以需要使用curl http://127.0.0.1:8080
才能访问了。
也就是说,-p
参数中,第一个端口是暴露在外面的端口,外面可以访问的端口。
至于-d
嘛,就是以守护态运行。
有些应用根本就不需要暴露接口在外面,比如下面这个:
$ docker ps mposenginx_gitlab_1 7e4493b736d2 sameersbn/postgresql:9.5-4 "/sbin/entrypoint.sh" 2 days ago Up 2 days 5432/tcp gitlabcomposenginx_postgresql_1 8cd6c90f9a52 sameersbn/redis:latest "/sbin/entrypoint.sh " 2 days ago Up 2 days 6379/tcp
这两个端口在外部是无法访问的,没有绑定在0.0.0.0这个ip上,这个有什么用呢。
其实有个参数是--link
,供单机的容器之间打通一个网络通道,这样不必通过ip来访问,而是一个别名。
比如,先运行两个容器:
$ docker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2 $ docker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:latest
这两个容器有两个名称,分别是gitlab-postgresql
和gitlab-redis
。
然后再启动一个暴露接口的容器,去连接这两个容器。
$ docker run --name gitlab -d \ --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:8.16.6
其中postgresql
和redisio
是容器的主机别名。
使用docker restart
命令可以重启容器。
还有一个参数比较常用,就是-rm
,这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。
“docker的hello-world镜像怎么运行”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流