Docker相關命令應用

  Docker命令   node

  • -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;nginx

  • -d: 後臺運行容器,並返回容器ID;docker

  • -i: 以交互模式運行容器,一般與 -t 同時使用;bash

  • -t: 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用;服務器

  • --name="nginx-lb": 爲容器指定一個名稱;網絡

  • --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;tcp

  • --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;ide

  • -h "mars": 指定容器的hostname;oop

  • -e username="ritchie": 設置環境變量;ui

  • --env-file=[]: 從指定文件讀入環境變量;

  • --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;

  • -m :設置容器使用內存最大值;

  • --net="bridge": 指定容器的網絡鏈接類型,支持 bridge/host/none/container: 四種類型;

  • --link=[]: 添加連接到另外一個容器;

  • --expose=[]: 開放一個端口或一組端口; 

1.Docker經常使用命令講解進程

docker images  查看本地鏡像倉庫

docker rmi [image id]  刪除本地鏡像倉庫中的鏡像image id爲須要刪除的鏡像ID

docker pull [image name]:[tag]  下載鏡像到本地鏡像倉庫,image name鏡像名稱,tag鏡像版本

docker search [keyword]   查看本地鏡像內容,keyword爲鏡像名稱的關鍵字,不用輸入所有鏡像名。

docker run -d [image]    把鏡像執行成虛擬環境

docker build -t [image name] .

docker build -t [image name] -f [dockerfile] .

docker tag [original image name] [new image name]

docker tag [original image name]:[tag] [new image name]:[tag]

docker run -it [image] bash    把鏡像執行成虛擬環境,並直接進入該docker虛擬環境中(等同於docker exec -it [image] bash)

docker exec -it [image] bash   把鏡像執行成虛擬環境,並直接進入該docker虛擬環境中

docker run -d -p 8080:80 nginx  訪問外部的iP端口是8080其實就是對應內部ip的80端口執行的是nginx動做

docker run -d v /data:/data nginx  把服務器的資料掛載到docker內部的資料,使得在docker內部使用。

docker run -d -e MYENV=test nginx  把服務器的環境變量變成docker內部的環境。

docker network create mynet1  建立網卡命名爲mynet1

docker ps      查看正在執行中docker的container容器,

docker ps -p     -p只顯示正在執行中container的id號 

docker ps -a     -a顯示全部的container,包括中止的和正在運行的

docker start [instance-id]  啓動實例,instance-id實例ID號

docker stop [instance-id]  中止實例,instance-id實例ID號

docker attach [instance-id]  使得兩個窗口的動做一致

docker rm [instance-id]   刪除正在運行的實例instance,需先中止該實例後再刪除

docker rm -f [instance-id]  強制刪除正在運行的實例instance,勿需中止該實例可直接刪除該實例

docker rm -f `docker ps -q` 刪除全部正在執行的container,``把該執行結果做爲前面執行刪除操做的參數來調用。

[實例]

[root@docker ~]# docker ps  查看正在執行的container

CONTAINER ID    IMAGE       COMMAND          CREATED        STATUS        PORTS           NAMES

378e85b45f67    nginx     "nginx -g 'daemon of  28 minutes ago     Up 28 minutes    80/tcp        clever_turing    

7fad893a54c4    nginx     "nginx -g 'daemon of   29 minutes ago    Up 29 minutes   0.0.0.0:8080->80/tcp   thirsty_yonath   

[root@docker ~]# docker rm -f `docker ps -q `  刪除全部正在執行的container

378e85b45f67

7fad893a54c4

[root@docker ~]# docker ps  查看正在執行的container,已經被所有刪除

CONTAINER ID    IMAGE       COMMAND      CREATED      STATUS       PORTS         NAMES

[root@docker ~]# docker ps -a -q  查看全部的container,無論是正在執行的仍是被刪除的,-q只顯示instance-id

bebf3f5b8112

0577c4b78979

1d26ba3448f0

3e05321bdbca

4cb7712e3dd7

[root@docker ~]# docker rm -f `docker ps -q -a ` 強制刪除全部的container,無論是中止的仍是在運行的。

bebf3f5b8112

0577c4b78979

1d26ba3448f0

3e05321bdbca

4cb7712e3dd7

[root@docker ~]# docker ps -a -q  再次查看已經沒有container了,都已經被刪除了。

2.命令格式:

docker run -it --name mydocker1 [image1] bash #對image1取個別名爲mydocker1

docker run -it --link mydocker1:mydocker1 [image2] bash  把兩個image連通,使得image1和image2能夠互相通信

3.命令功能:

把兩個container相互連統統信

3.命令參數:

-it --name 先對第一個image1取名稱

-it --link 鏈接到第一個image,相互之間能夠通信


5.命令實例:

實例一

首先打開一個窗口輸入如下命令,打開一個docker窗口1

  [root@docker ~]# docker run -it --name node1 node bash

root@f2765d5fd9c8:/# 

再次打開另外一個窗口2,輸入如下命令:

[root@docker ~]# docker run -it --link node1:node1 node bash

root@e85d11098482:/# 

在第二個docker窗口下輸入如下命令:

root@e85d11098482:/# ping node1  顯示node1的ip地址是172.16.0.16

PING node1 (172.17.0.16): 56 data bytes

64 bytes from 172.17.0.16: icmp_seq=0 ttl=64 time=0.110 ms

64 bytes from 172.17.0.16: icmp_seq=1 ttl=64 time=0.073 ms

64 bytes from 172.17.0.16: icmp_seq=2 ttl=64 time=0.075 ms

64 bytes from 172.17.0.16: icmp_seq=3 ttl=64 time=0.094 ms

^C--- node1 ping statistics ---

4 packets transmitted, 4 packets received, 0% packet loss

round-trip min/avg/max/stddev = 0.073/0.088/0.110/0.000 ms

在第一個docker窗口下輸入如下命令,查看該窗口的IP地址正是node1的IP地址

root@f2765d5fd9c8:/# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

34: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 

    link/ether 02:42:ac:11:00:10 brd ff:ff:ff:ff:ff:ff

    inet 172.17.0.16/16 scope global eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::42:acff:fe11:10/64 scope link 

       valid_lft forever preferred_lft forever


實例二

attach實例,經過attach使得兩個窗口顯示如出一轍:

[root@docker docker]# docker run -it nginx bash 

root@0f8a31139121:/# ls

bin  boot  devetc  home  liblib64  media  mnt  optproc  root  run  sbin  srv  sys  tmp  u

root@0f8a31139121:/# 

[root@docker ~]# docker ps  -q  先查看正在運行的docker進程

0f8a31139121

[root@docker ~]# docker attach 0f8a31139121 

ls

bin  boot  devetc  home  liblib64  media  mnt  optproc  root  run  sbin  srv  sys  tmp  u

root@0f8a31139121:/# 


實例三:

docker network create mynet1實例:

[root@docker docker]#docker network create mynet2  創建網卡,命名爲mynet2

Error response from daemon: network with name mynet2 already exists   #提示該名稱的網卡已存在

[root@docker docker]# docker network create mynet1

647cb9fd3d7162da73aaf12eba4dbcd88b7c0790f6eda617f6635b5c4eb13f7e

[root@docker docker]# docker network create mynet3

aa6f9827251c45cd88f308108bd78bb6ef719ed04d37213277217c95b615f17c

[root@docker docker]# docker run -d --name c1 --net mynet1 nginx  打開nginx,並命名爲c1,且設定網卡爲mynet1剛創建的網卡

b772bb24c6457d6c0528a16d3820841f06d934a10809dd266862687222344134

[root@docker docker]#  docker run -d --name c2 --net mynet2 nginx

66221df665551e658a81e169611d32179d119fc17b684a6ba9bca1b16b2a5b3f

[root@docker docker]#  docker run -d --name c3 nginx  打開nginx程序,並命名爲c3,但不指定網卡。

54fc6b30e9838f0e261ba82562de5a2a00e07667b46baf2f8f6f701107f80251

[root@docker docker]#  docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

54fc6b30e983        nginx               "nginx -g 'daemon off"   3 seconds ago       Up 2 seconds        80/tcp              c3

66221df66555        nginx               "nginx -g 'daemon off"   19 seconds ago      Up 18 seconds       80/tcp              c2

b772bb24c645        nginx               "nginx -g 'daemon off"   28 seconds ago      Up 27 seconds       80/tcp              c1

[root@docker docker]# docker exec -it c1 bash  #直接進入剛纔創建的c1 bash

root@b772bb24c645:/# 


實例四:

[root@docker docker]#docker rm -f `docker ps -q -a`

54fc6b30e983

66221df66555

b772bb24c645

[root@docker docker]# docker run -d -p 5000:5000 --name registry registry:2

Unable to find image 'registry:2' locally

2: Pulling from library/registry

9f9a7687cb91: Pull complete 

607d8cb26263: Pull complete 

305c4b3247bc: Pull complete 

09fd65a9f827: Pull complete 

5614c459bd0f: Pull complete 

7d72978aa116: Pull complete 

5a7694fedddd: Pull complete 

37213f6a1a3f: Pull complete 

6bb73e9857ff: Pull complete 

8fe0c76b17fc: Pull complete 

Digest: sha256:6cd209f81e188e8eaa13fad9b670fb1a4e9c7776a73b3881b69834fe5ddfb193

Status: Downloaded newer image for registry:2

c88ae6df9e41f06dbfc283585269ed7df0e23621b2357d2e3b73622565512048

[root@docker docker]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED           STATUS                PORTS                        NAMES

c88ae6df9e41       registry:2       "/entrypoint.sh /etc/"   10 seconds ago     Up 8 seconds   0.0.0.0:5000->5000/tcp   registry

[root@docker docker]# docker images

REPOSITORY          TAG             IMAGE ID            CREATED             VIRTUAL SIZE

nginx               latest              e076c61a6bf2        2 weeks ago         108.9 MB

node                latest              46ecedfa82d3        2 weeks ago         672.8 MB

registry            2                   8fe0c76b17fc        3 months ago        33.26 MB

[root@docker docker]# docker tag nginx localhost:5000/nginx

[root@docker docker]# docker images

REPOSITORY             TAG               IMAGE ID            CREATED             VIRTUAL SIZE

localhost:5000/nginx   latest        e076c61a6bf2        2 weeks ago         108.9 MB

nginx                  latest              e076c61a6bf2        2 weeks ago         108.9 MB

node                   latest              46ecedfa82d3        2 weeks ago         672.8 MB

registry               2                   8fe0c76b17fc        3 months ago        33.26 MB

[root@docker docker]# docker push localhost:5000/nginx 

The push refers to a repository [localhost:5000/nginx] (len: 1)

e076c61a6bf2: Pushed 

235c9b4b2c82: Pushed 

8bc1215bde0f: Pushed 

abc60fac2aea: Pushed 

latest: digest: sha256:9a032ad6687bd8a621c6d7dbd29163eff9c35d5e77c04ddef9da52c63c72a934 size: 9566

相關文章
相關標籤/搜索