溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker的hello-world鏡像怎么運(yùn)行

發(fā)布時(shí)間:2021-12-13 11:42:24 來源:億速云 閱讀:685 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“docker的hello-world鏡像怎么運(yùn)行”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 介紹

下載hello-world這個(gè)鏡像。

使用docker run命令。

比如:

$ docker run hello-world

主要是輸出一些文本信息,然后就退出了。

使用docker ps可以查看容器的進(jìn)程。

不過是空的,因?yàn)橐贿\(yùn)行就退出,只是輸出信息,輸出完就結(jié)束了。

可以使用docker ps -a來查看退出過的進(jìn)程。

比如:

$ 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
2. 運(yùn)行容器

上面只是演示hello world而已,我們運(yùn)行些有用點(diǎn)的容器。

比如:

$ docker run -it ubuntu bash

運(yùn)行的是ubuntu這個(gè)鏡像,如果你的系統(tǒng)上沒有這個(gè)鏡像,會(huì)先下載下來。

bash是表示進(jìn)入那個(gè)ubuntu的鏡像的容器的shell,-t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上, -i 則讓容器的標(biāo)準(zhǔn)輸入保持打開。

這樣就相當(dāng)于進(jìn)入了另一臺(tái)ubuntu。

而且這個(gè)ubuntu跟你原來的系統(tǒng)是隔離的。

這樣也沒多大意義,我們經(jīng)常會(huì)用docker來跑一些服務(wù),比如web服務(wù)。

那就運(yùn)行一個(gè)nginx容器試試。

$ docker run -d -p 80:80 --name webserver nginx

鏡像名稱是nginx,--name表示為這個(gè)容器取個(gè)名稱叫webserver。

運(yùn)行之后,你用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查看一下,是否運(yùn)行了nginx服務(wù)。

使用docker stop命令可以停止這個(gè)容器的運(yùn)行。

比如:

$ docker stop webserver

停止之后輸入docker ps發(fā)現(xiàn)是空的,這個(gè)時(shí)候要輸入docker ps -a才能查看退出的容器。

可以使用下面這條命令,清除所有已退出的容器。

$ docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')

之前運(yùn)行nginx容器的時(shí)候,有使用-p 80:80這個(gè)參數(shù)。

這個(gè)表示端口映射。

解釋前,我們先來改一下。

$ docker run -d -p 8080:80 --name webserver nginx

查看一下運(yùn)行狀態(tài):

$ 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

現(xiàn)在你可以需要使用curl http://127.0.0.1:8080才能訪問了。

也就是說,-p參數(shù)中,第一個(gè)端口是暴露在外面的端口,外面可以訪問的端口。

至于-d嘛,就是以守護(hù)態(tài)運(yùn)行。

有些應(yīng)用根本就不需要暴露接口在外面,比如下面這個(gè):

$ 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

這兩個(gè)端口在外部是無法訪問的,沒有綁定在0.0.0.0這個(gè)ip上,這個(gè)有什么用呢。

其實(shí)有個(gè)參數(shù)是--link,供單機(jī)的容器之間打通一個(gè)網(wǎng)絡(luò)通道,這樣不必通過ip來訪問,而是一個(gè)別名。

比如,先運(yùn)行兩個(gè)容器:

$ 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

這兩個(gè)容器有兩個(gè)名稱,分別是gitlab-postgresqlgitlab-redis。

然后再啟動(dòng)一個(gè)暴露接口的容器,去連接這兩個(gè)容器。

$ 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

其中postgresqlredisio是容器的主機(jī)別名。

使用docker restart命令可以重啟容器。

還有一個(gè)參數(shù)比較常用,就是-rm,這個(gè)參數(shù)是說容器退出后隨之將其刪除。默認(rèn)情況下,為了排障需求,退出的容器并不會(huì)立即刪除,除非手動(dòng) docker rm 。我們這里只是隨便執(zhí)行個(gè)命令,看看結(jié)果,不需要排障和保留結(jié)果,因此使用 –rm 可以避免浪費(fèi)空間。

“docker的hello-world鏡像怎么運(yùn)行”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI