docker 經常使用操做

下面的命令加上括號的是新版本的命令,去掉括號是老版本的命令。nginx

在任何命令後加:--help,就會提示處這些命令的具體用法與參數。c++

docker命令 命令解釋說明
docker search search the docker hub for images
docker (image) pull pull an images or a repository from a registry
docker images/docker image ls list images
docker create create a new container
docker (container) start start one or more stopped contrainers
docker (container) run run a command in a new container
docker attach attach to a running container
docker ps/docker container ls list contrains
docker (container) logs fetch tho logs of a container
docker restart restart a container
docker (container) stop stop one or more running containers
docker kill kill one or more running containers
docker (image) rm remove one or more image
docker network ls 查看docker使用的網卡
docker inspect Return low-level information on Docker objects。查看某個運行中的contain的詳細信息(裏面有IP地址),參數是contain的名字(啓動container時用--name選項指定的名字),注意不是ID。

container裏面運行的進程必定不能設置成是後臺運行,若是是後臺運行的話,container會當即自動終止。因此nginx container的話,裏面啓動nginx的命令必定有【-g】選項。

  • docker search:查找docker,好比查找nginxdocker

    在dockerhub網站上搜索nginx,在【TAG】標籤裏發現有不少版本。官方nigix docker裏面裝的操做系統好像是ubuntu,因此你下載的nginx的docker image裏就有一個ubuntu系統,這個系統裏好像除了nginx必要的依賴工具外,什麼都沒有裝,可是也的40多M。shell

    在衆多版本里有一種的size最小是xxx-alpine,Alpine也是一個Linux的發行版,特定是體積小,nginx的alpine版本的size是8M左右。ubuntu

    因爲docker hub裏的鏡像都沒有安裝調試工具,因此,在真正的項目上,通常都是安裝好調試工具,本身打包,作出一個image,而後上傳的本身的私有docker hub上。微信

  • docker (image) pull:從docker hub上拉一個alpine系統下的穩定版本的nginx到本地網絡

    # docker image pull nginx:stable-alpine
  • docker images/docker image ls:查看本地安裝了哪些的docker鏡像curl

    [root@localhost yum.repos.d]# docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               stable-alpine       aaad4724567b        5 weeks ago         21.2MB
  • docker image rm:刪除一個鏡像文件。tcp

  • docker (container) run:若是本地沒有鏡像文件,則會自動到倉庫裏下載。ide

    $ docker container run --help
    Usage:  docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

    OPTIONS

    需求1:若是要想和docker container交互,必須指定-t-i

    • -t:指定終端。
    • -i:標識能夠和docker container交互

    需求2:給要啓動的docker contain一個名字。

    • --name:起名字。

    需求3:讓啓動的container在後臺運行(不佔用當前shell進程)。

    • -d: Run container in background and print container ID

      例子:啓動nginx

      docker container run --name n12 -d nginx:stable-alpine

      sudo docker container ls查看的結果以下,

      CONTAINER ID     IMAGE                 COMMAND                  PORTS    NAMES
      6e63af9a4300     nginx:stable-alpine   "nginx -g 'daemon of…"   80/tcp   n12
      • PORTS:nginx使用的端口和網絡層協議的種類(這裏是使用TCP協議)。
  • docker network ls:查看docker使用的網卡。有下面3個就OK。

    [root@localhost yum.repos.d]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    d410575399eb        bridge              bridge              local
    a36f938bc6c6        host                host                local
    55ee9a442ee8        none                null                local

    安裝完docker後,使用ifconfig,能夠發現多出個docker0網卡,IP是172.17.0.1。這個網卡的鏈接方式是【NAT bridge】,既不是【NAT】,也不是【bridge】。container裏的進程要想和外網通訊的話,要經過別的網卡(enp0s3)才能夠。

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:5b:c3:2c:80  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.65.81  netmask 255.255.255.0  broadcast 192.168.65.255

    container啓動後,裏面操做系統的網段就是172.17的

    例子:啓動busybox

    # docker container run --name b1111 -it busybox

    而後在busybox裏面運行ifconfig命令,發現ip地址是172.17.0.2,和網卡docker0在同一個網段。

    而後再運行:docker container ls,就能夠看到在names的地方是b1111。

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    f0f38cba6c5b        busybox             "sh"                5 minutes ago       Up 5 minutes                            b1111
    • CONTAINER ID:一個ID
    • IMAGE:哪一個image
    • COMMAN:當前鏡像裏運行的是什麼進程
  • docker container start:啓動container

    Usage:  docker container start [OPTIONS] CONTAINER [CONTAINER...]
    
    Start one or more stopped containers
    
    Options:
      -a, --attach                  Attach STDOUT/STDERR and forward signals
          --checkpoint string       Restore from this checkpoint
          --checkpoint-dir string   Use a custom checkpoint storage directory
          --detach-keys string      Override the key sequence for detaching a container
      -i, --interactive             Attach container's STDIN
  • docker container stop:中止container

  • docker container rm :刪除container,參數是container的名字。刪除後用docker container ls -a也看不到這個container。若是是stop一個container,那麼用docker container ls -a仍是能夠看到這個container的。

  • docker (container) logs:查看container中進程產生的日誌內容。好比查看nginx的日誌。而後把日誌直接輸出到控制檯。

    # docker container logs n12
    172.17.0.1 - - [30/Nov/2019:08:52:19 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
  • docker container exec:直接執行container裏的命令。

    Usage:  docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
    
    Run a command in a running container
    
    Options:
      -d, --detach               Detached mode: run command in the background
          --detach-keys string   Override the key sequence for detaching a container
      -e, --env list             Set environment variables
      -i, --interactive          Keep STDIN open even if not attached
          --privileged           Give extended privileges to the command
      -t, --tty                  Allocate a pseudo-TTY
      -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
      -w, --workdir string       Working directory inside the container
    
    # docker container exec -it kv1 /bin/sh

docker container狀態轉換圖:

c/c++ 學習互助QQ羣:877684253

本人微信:xiaoshitou5854

相關文章
相關標籤/搜索