溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker 之 容器基本操作

發(fā)布時間:2020-08-02 08:57:33 來源:網(wǎng)絡 閱讀:372 作者:wx592bc92b285c7 欄目:系統(tǒng)運維

一、查看本地容器進程

[root@docker ~]# docker ps -a     #顯示所有容器進程
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
9bd32b3b2ad0        hello-world         "/hello"            20 hours ago        Exited (0) 20 hours ago                       lucid_murdock
fb2d81c98cd2        hello-world         "/hello"            3 weeks ago         Exited (0) 3 weeks ago                        great_bartik
[root@docker ~]# docker ps          #顯示當前運行的容器進程
CONTAINER ID        IMAGE   

二、容器啟動命令

[root@docker ~]# docker run --help
Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:選項
-i : 表示啟動一個可交互的容器,并持續(xù)打開標準輸入
-t : 表示使用終端關聯(lián)到容器的標準輸入輸出上
-d : 表示將容器放置后臺運行
--rm : 退出后即刪除容器
--name : 表示定義容器唯一名稱
IMAGE: 表示要運行的鏡像
COMMAND : 表示啟動容器時運行的命令

三、啟動一個交互式的容器

[root@docker ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
alpine                latest              cc0abc535e36        13 days ago         5.59MB
zhoumingkang/alpine   v3.10.3             cc0abc535e36        13 days ago         5.59MB
alpine                3.9.4               055936d39205        8 months ago        5.53MB
hello-world           latest              fce289e99eb9        12 months ago       1.84kB
[root@docker ~]# docker run -ti -- name mingkang-test alpine:latest /bin/sh
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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
18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:07:05:02 brd ff:ff:ff:ff:ff:ff
    inet 172.7.5.2/24 brd 172.7.5.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # cat /etc/issue 
Welcome to Alpine Linux 3.11
Kernel \r on an \m (\l)

[root@docker ~]# docker ps      #查看當前運行的容器進程
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
08b02f026afe        alpine:latest       "/bin/sh"           7 seconds ago       Up 5 seconds                            mingkang-test

四、容器退出后即刪除--rm(docker ps -a 查詢不了記錄)

[root@docker ~]# docker run --rm alpine:latest /bin/echo hello
hello

五、以后臺的形式運行一個容器-d

[root@docker ~]# docker run -d --name mingkang-test3 alpine:latest /bin/sleep 3000
744b31fbaadfc9605d5dbe8d302ef9bd3de8208142aa00c1feffd86804347b01
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
744b31fbaadf        alpine:latest       "/bin/sleep 3000"   18 seconds ago      Up 17 seconds                           mingkang-test3

六、進入一個容器exec

[root@docker ~]# docker exec -ti 744b31fbaadf /bin/sh      #長長的字符串為容器ID
/ # ps
PID   USER     TIME  COMMAND
    1 root      0:00 /bin/sleep 3000
    6 root      0:00 /bin/sh
   11 root      0:00 ps
/ # 

七、停止/重啟/啟動一個容器(stop/restart/start)

[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
744b31fbaadf        alpine:latest       "/bin/sleep 3000"   3 minutes ago       Up 3 minutes                            mingkang-test3
[root@docker ~]# docker stop 744b31fbaadf    #容器的ID號
744b31fbaadf
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

八、刪除docker ps 的內(nèi)容

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
744b31fbaadf        alpine:latest       "/bin/sleep 3000"   12 minutes ago      Exited (137) 8 minutes ago                        mingkang-test3
08b02f026afe        alpine:latest       "/bin/sh"           25 minutes ago      Exited (0) 23 minutes ago                         mingkang-test
56760413d596        alpine:latest       "/bin/sh"           28 minutes ago      Exited (0) 27 minutes ago                         mingkang_test
eae500caa715        alpine:latest       "/bin/sh"           34 minutes ago      Exited (0) 29 minutes ago                         vigilant_boyd
c6fed43d8a09        alpine:latest       "/bin/sh"           34 minutes ago      Exited (0) 34 minutes ago                         keen_volhard
058aee8ef1eb        alpine:latest       "/bin/sh"           36 minutes ago      Exited (0) 35 minutes ago                         quirky_morse
6d81bca654ab        alpine:latest       "/bin/sh"           37 minutes ago      Exited (127) 36 minutes ago                       practical_torvalds
adc1a16a7bf6        alpine:latest       "/bin/sh"           39 minutes ago      Exited (0) 38 minutes ago                         unruffled_carson
20a5432e3266        alpine:latest       "/bin/sh"           39 minutes ago      Exited (0) 39 minutes ago                         elated_ellis
08bbe9c13d26        alpine:latest       "/bin/sh"           40 minutes ago      Exited (0) 40 minutes ago                         nifty_kalam
9bd32b3b2ad0        hello-world         "/hello"            21 hours ago        Exited (0) 21 hours ago                           lucid_murdock
fb2d81c98cd2        hello-world         "/hello"            3 weeks ago         Exited (0) 3 weeks ago                            great_bartik
[root@docker ~]# docker rm keen_volhard quirky_morse practical_torvalds unruffled_carson elated_ellis  nifty_kalam  lucid_murdock great_bartik
keen_volhard
quirky_morse
practical_torvalds
unruffled_carson
elated_ellis
nifty_kalam
lucid_murdock
great_bartik
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
744b31fbaadf        alpine:latest       "/bin/sleep 3000"   13 minutes ago      Exited (137) 9 minutes ago                       mingkang-test3
08b02f026afe        alpine:latest       "/bin/sh"           26 minutes ago      Exited (0) 24 minutes ago                        mingkang-test
56760413d596        alpine:latest       "/bin/sh"           28 minutes ago      Exited (0) 28 minutes ago                        mingkang_test

備注:如需刪除在運行的容器,使用docker rm -f 容器名稱/容器ID
循環(huán)全部刪除:
for i in `docker ps -a | grep -i exited|awk '{print $1}'`;do docker rm -f $i;done

九、容器的提交(把已寫入內(nèi)容的容器提交為鏡像)

[root@docker ~]# docker run -d --name myalpine alpine:latest /bin/sleep 30000   #后臺長時間運行一個容器
3ccd27be4d19a60f317d187ee99d7fcd76d368dccb0326f8789d6617fb39f457
[root@docker ~]# docker ps    #查看運行的容器
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES
3ccd27be4d19        alpine:latest       "/bin/sleep 30000"   6 seconds ago       Up 4 seconds                            myalpine
[root@docker ~]# docker exec -ti myalpine /bin/sh    #以交互的方式進入容器
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # touch hello.txt
/ # echo "hello world" > hello.txt 
/ # cat hello.txt 
hello world
[root@docker ~]# docker commit -p myalpine myalpine:latest_with_hello.txt
#把名稱為myalpine的容器提交為一個新的鏡像
sha256:3ce9b8b899ba2018c01ca88fba6c24da6ff1287905a4ff4c60e968f129a22863
[root@docker ~]# docker images
REPOSITORY            TAG                     IMAGE ID            CREATED             SIZE
myalpine              latest_with_hello.txt   3ce9b8b899ba        20 seconds ago      5.59MB
alpine                latest                  cc0abc535e36        13 days ago         5.59MB
zhoumingkang/alpine   v3.10.3                 cc0abc535e36        13 days ago         5.59MB
alpine                3.9.4                   055936d39205        8 months ago        5.53MB
hello-world           latest                  fce289e99eb9        12 months ago       1.84kB

#啟動該myalpin:latest_with_hello.txt 鏡像容器后,發(fā)現(xiàn)文件已經(jīng)存在。

十、容器的導出與加載

導出myalpine:latest_with_hello.txt
-----
[root@docker ~]# docker images
REPOSITORY            TAG                     IMAGE ID            CREATED             SIZE
myalpine              latest_with_hello.txt   3ce9b8b899ba        20 minutes ago      5.59MB
alpine                latest                  cc0abc535e36        13 days ago         5.59MB
zhoumingkang/alpine   v3.10.3                 cc0abc535e36        13 days ago         5.59MB
alpine                3.9.4                   055936d39205        8 months ago        5.53MB
hello-world           latest                  fce289e99eb9        12 months ago       1.84kB
[root@docker ~]# docker save myalpine:latest_with_hello.txt > myalpine-latest_with_hello.txt.tar
[root@docker ~]# ls
anaconda-ks.cfg  myalpine-latest_with_hello.txt.tar
-----
刪除剛剛導出的鏡像
[root@docker ~]# docker rmi myalpine:latest_with_hello.txt
Untagged: myalpine:latest_with_hello.txt
Deleted: sha256:3ce9b8b899ba2018c01ca88fba6c24da6ff1287905a4ff4c60e968f129a22863
Deleted: sha256:1d89a6f64295ef6889fef9ae917281e94d4d9e5c9b3eb98d5cc25c129f34f4b3
[root@docker ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
alpine                latest              cc0abc535e36        13 days ago         5.59MB
zhoumingkang/alpine   v3.10.3             cc0abc535e36        13 days ago         5.59MB
alpine                3.9.4               055936d39205        8 months ago        5.53MB
hello-world           latest              fce289e99eb9        12 months ago       1.84kB
-----
重新加載該鏡像
[root@docker ~]# docker load < myalpine-latest_with_hello.txt.tar 
e63a9b4f5484: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: myalpine:latest_with_hello.txt
[root@docker ~]# docker images
REPOSITORY            TAG                     IMAGE ID            CREATED             SIZE
myalpine              latest_with_hello.txt   3ce9b8b899ba        22 minutes ago      5.59MB
alpine                latest                  cc0abc535e36        13 days ago         5.59MB
zhoumingkang/alpine   v3.10.3                 cc0abc535e36        13 days ago         5.59MB
alpine                3.9.4                   055936d39205        8 months ago        5.53MB
hello-world           latest                  fce289e99eb9        12 months ago       1.84kB

十一、容器的日志查看

[root@docker ~]# docker run 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.
    (amd64)
 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 ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

[root@docker ~]# docker ps -a | grep -i hello      #查看曾經(jīng)運行的進程
1c5c26a209d4        hello-world:latest   "/hello"            12 seconds ago      Exited (0) 10 seconds ago                       angry_ellis
[root@docker ~]# docker logs 1c5c26a209d4       #查看該容器運行的日志

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.
    (amd64)
 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 ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

[root@docker ~]# 
向AI問一下細節(jié)

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

AI