1. 程式人生 > >docker使用簡單命令

docker使用簡單命令

Ctrl + P + Q 回到宿主機 shell,容器 detach 狀態

建立一個容器,讓其中執行bash應用: sudo docker run -t -i ubuntu:12.04 /bin/bash

列出映象:docker images / image Id 唯一標識一個映象

建立並執行映象:docker run -t(分配一個偽tty) -i(互動模式) ubuntu:12.04 /bin/bash
ubuntu 是倉庫名
12.04是TAG

$ sudo docker run -t -i -c 100 -m 512MB -h test1 -d --name="docker_test1" ubuntu /bin/bash
建立一個 cpu 優先順序為 100,記憶體限制 512MB,主機名為 test1,名為 docker_test1 後臺執行 bash 的容器

指定網路模式: -net=host/container:NAME_OR_ID/none/bridge
    host : 使用和宿主機一樣的ip和埠(容器不會虛擬自己的網絡卡以及配置自己的ip)
    container : 新建立的容器和已經存在的一個容器共享一個ip和埠,自己不配置,而不是共享宿主機的
    none :  docker容器自己擁有網路,並不會為其配置,需要自己手動新增網絡卡,配置ip等
    bridge : docker預設的網路設定,docker容器以docker0為虛擬網橋或者叫路由,所有的docker容器都連線到這個docker0上,由docker0來做路由,由docker0網橋來分配ip

    列出主機網橋:yum -y install bridge-utils  / brctl show

    使用特定範圍的IP:需要安裝 bridge-utils
        確保:
            1. docker 程序是停止的:  service docker stop / systemctl stop docker
                關閉並解除安裝掉docker0網橋(你也可以不用解除安裝)
                    ip link set dev docker0 down
                    brctl delbr docker0

            2. 建立自定義網橋: 
                $ brctl addbr bridge0
                $ ip addr add 192.168.5.1/24 dev bridge0
                $ ip link set dev bridge0 up

                //ip addr show bridge0 檢視

            3. 修改docker檔案把自己建立的網橋指定上去
                $ cat /etc/sysconfig/docker | grep 'OPTIONS='
                    OPTIONS=--selinux-enabled -b=bridge0 -H fd://

            4.注意
                如果刪除了預設的 docker0 橋接,把 docker 預設橋接指定到了 bridge0,則最好在建立容器的時候加上 --net=none,防止自動分配的 IP 在區域網中有衝突

不同主機間容器通訊:
藉助: pipework
git clone https://github.com/jpetazzo/pipework.git
$ sudo cp -rp pipework/pipework /usr/local/bin/

    pipework br0 -i eth0 a46657528059 192.168.115.10/[email protected]
        # 預設不指定網絡卡裝置名,則預設新增為 eth1
        # 另外 pipework 不能新增靜態路由,如果有需求則可以在 run 的時候加上 --privileged=true 許可權在容器中手動新增,
        # 但這種安全性有缺陷,可以通過 ip netns 操作


    使用 ip netns 新增靜態路由,避免建立容器使用 --privileged=true 選項造成一些不必要的安全問題
        $ docker inspect --format="{{ .State.Pid }}" a46657528059 # 獲取指定容器 pid
        6350
        $ sudo ln -s /proc/6350/ns/net /var/run/netns/6350
        $ sudo ip netns exec 6350 ip route add 192.168.0.0/16 dev eth0 via 192.168.115.2
        $ sudo ip netns exec 6350 ip route    # 新增成功

進入映象:
方式1:docker attach con_name 將終端附著到正在執行的容器名為con_name的容器的終端上面去,前提是建立該容器時指定了相應的sh
方式2:docker exec -ti jiedai-op /bin/bash

開啟/關閉/殺掉映象:
docker start CONTAINER
stop / -t 可執行超時時間
kill / kill -s 訊號型別
restart / -t 可執行超時時間
pause
unpause
rm
commit 提交指定容器為映象
inpect
logs 輸出指定容器日誌資訊 -f(類似 tail -f)

       create 建立容器而不啟動
          建立:docker create -t -i centos /bin/bash    
          執行:docker start -a -i 容器ID

搜尋映象: docker search centos/ubuntu(預設下載所有)

docker 資訊: docker info

映象資訊: docker ps(查詢啟動的容器) / docker ps -a (檢視所有容器) / docker ps -as (檢視所有容器並顯示大小)

拉取映象: docker pull centos/ubuntu
docker pull ubuntu:14.04 下載執行版本ubuntu官方映象
相當於:sudo docker pull registry.hub.docker.com/ubuntu:12.04
可以還其他源: sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04

推送映象: docker push 192.168.0.100:5000/ubuntu(ubuntu:14.04)

刪除映象: docker rmi -f(強制) docker.io/ubuntu

刪除容器: docker rm python_test

埠對映: docker run -t -P –expose 22 –name server ubuntu:14.04 (-P使用時需要指定 –expose選項,指定需要對外提供服務的埠)

繫結埠到指定介面:sudo docker run -p 127.0.0.1:80:8080 <image> <cmd>
    127.0.0.1 是主機ip,80主機埠,8080容器埠

    sudo docker run -p 127.0.0.1::8080 <image> <cmd>
    sudo docker run -p 80:8080 <image> <cmd>
    sudo docker run -p 8080 <image> <cmd>

繫結UDP埠:
    sudo docker run -p 127.0.0.1:53:5353/udp <image> <cmd>

DOCKERFILE :(待補充)

--privileged    

容器資料管理:
1. 資料卷
2. 資料卷容器

    sudo docker run --rm --name test -v /source/:/test:ro -t -i ubuntu:14.04 /bin/bash  
        把宿主機/source目錄掛載在容器的/test下,只讀方式
        --rm 選項: 表示如果test容器有,則刪除test重新建立

        注意:  /source/ 不能放在宿主機的/root目錄下,建議放在/home/目錄下。

連結容器:
使用 –link
sudodockerrundnamedbtraining/postgres sudo docker run -d -P –name web –link db:db training/webapp python app.py
–link :alias 選項指定連結到的容器。

目的:不用容器向外公開任何埠給外部容器,例如:web伺服器和資料庫伺服器之間做連結

不同主機間容器通訊:

往 hub.docker.com 上傳映象:

    1. 檢視要上傳的映象: (自己下載的centos映象,建立了一個叫centos_test的容器,在root下面建立了一個叫text.txt的檔案)
    (提交映象的時候格式為: docker commit -m "touch a txt on it" -a "xz295139210(作者)" 798adb1953e1 docker.io/xz295139210/centos:v1) 
        這裡的xz295139210就是自己的hub.docker.com的賬戶
        798adb1953e1 --> 這個是 docker ps - a 查出來的 centos_test 容器的CONTAINER ID

        [[email protected] ~]# docker images
        REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
        xz295139210/python           v1                  6cd5799caed0        8 seconds ago       687.3 MB

    2. docker login  --> 驗證帳號和密碼

    3.上傳:docker push docker.io/xz295139210/centos:v1   
        xz295139210/centos:v1 --> 通過 docker images 查出來。

從自己的 hub.docker.com 上下載映象:
1. docker login
2. docker pull xz295139210/python:v2

搜尋映象:
[[email protected] ~]# docker search python
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/python Python is an interpreted, interactive, obj… 1621 [OK]
docker.io docker.io/kaggle/python Docker image for Python scripts run on Kaggle 53 [OK]

    命名格式:docker.io/kaggle/python    --> kaggle就為docker映象源的一個使用者

宿主機上對容器執行操作:
docker exec 可以用來在容器中執行一個程序
docker exec e307f916494c touch /root/hehe.txt

給映象打標籤:
docker tag d1e32b95d8e8 192.168.2.67:5000/test
192.168.2.67:5000 –> 相當於官方倉庫的 docker.io / 也就是要上傳的地址
test –> 就是你的映象名

    tag 不同於     commit :
        tag是在源中映象打一個tag
        commit是把容器提交成為一個映象

建立私有倉庫上傳映象:
錯誤1:
[[email protected] ~]# docker push 192.168.2.67:5000/test
The push refers to a repository [192.168.2.67:5000/test]
Get https://192.168.2.67:5000/v1/_ping: http: server gave HTTP response to HTTPS client

解決1:
1.cat  /etc/docker/daemon.json
    {
        "live-restore": true,
        "insecure-registries" : ["192.168.2.67:5000"]
    }

2. 重啟docker

容器訪問控制:
1. 容器想訪問外部網路
1.1 sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
1.2 也可以在啟動docker時,設定–ip-forward=true, docker就會自動設定系統ip_forward引數為1

sudo docker # docker 命令幫助

Commands:
attach Attach to a running container # 當前 shell 下 attach 連線指定執行映象
build Build an image from a Dockerfile # 通過 Dockerfile 定製映象
commit Create a new image from a container’s changes # 提交當前容器為新的映象
cp Copy files/folders from the containers filesystem to the host path
# 從容器中拷貝指定檔案或者目錄到宿主機中
create Create a new container # 建立一個新的容器,同 run,但不啟動容器
diff Inspect changes on a container’s filesystem # 檢視 docker 容器變化
events Get real time events from the server # 從 docker 服務獲取容器實時事件
exec Run a command in an existing container # 在已存在的容器上執行命令
export Stream the contents of a container as a tar archive
# 匯出容器的內容流作為一個 tar 歸檔檔案[對應 import ]
history Show the history of an image # 展示一個映象形成歷史
images List images # 列出系統當前映象
import Create a new filesystem image from the contents of a tarball
# 從tar包中的內容建立一個新的檔案系統映像[對應 export]
info Display system-wide information # 顯示系統相關資訊
inspect Return low-level information on a container # 檢視容器詳細資訊
kill Kill a running container # kill 指定 docker 容器
load Load an image from a tar archive # 從一個 tar 包中載入一個映象[對應 save]
login Register or Login to the docker registry server
# 註冊或者登陸一個 docker 源伺服器
docker login –username= –email=

logout    Log out from a Docker registry server         # 從當前 Docker registry 退出
logs      Fetch the logs of a container                 # 輸出當前容器日誌資訊
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
          # 檢視對映埠對應的容器內部源埠
pause     Pause all processes within a container        # 暫停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server
          # 從docker映象源伺服器拉取指定映象或者庫映象
push      Push an image or a repository to the docker registry server
          # 推送指定映象或者庫映象至docker源伺服器
restart   Restart a running container                   # 重啟執行的容器
rm        Remove one or more containers                 # 移除一個或者多個容器
rmi       Remove one or more images
          # 移除一個或多個映象[無容器使用該映象才可刪除,否則需刪除相關容器才可繼續或 -f 強制刪除]
run       Run a command in a new container
          # 建立一個新的容器並執行一個命令
save      Save an image to a tar archive                # 儲存一個映象為一個 tar 包[對應 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索映象
start     Start a stopped containers                    # 啟動容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 給源中映象打標籤
top       Lookup the running processes of a container   # 檢視容器中執行的程序資訊
unpause   Unpause a paused container                    # 取消暫停容器
version   Show the docker version information           # 檢視 docker 版本號
wait      Block until a container stops, then print its exit code
          # 擷取容器停止時的退出狀態值

Run ‘docker COMMAND –help’ for more information on a command.

相關推薦

docker簡單命令

執行docker服務: service docker start 顯示docker資訊: docker info 顯示docker版本: docker version 顯示

docker 簡單命令

docker run -itd name aaaa centos建立dockers aaa名字映象 docker images檢視dockers 映象 docker pull centos建立centos映象docker run -itd --name wuchao cen

[docker] 簡單命令總結

由於業務需求,筆者用docker的兩個映象,一個是Ubuntu,另一個是MySQL。話不多說,直接來教程。下載映象service docker start docker pull ubuntu:16.04 docker pull mysql:5.6第一條命令是為了啟動doc

簡單docker使用命令

拉取映象  docker pull 映象名 執行映象 docker run -itd 映象名  /bin/bash(在容器內執行/bin/bash操作) ( -i表示以互動模式執行,一般與-t一起用 -t表示為容器重新分配一個偽終端 -d表示後臺執行容器,並返回一個

docker使用簡單命令

Ctrl + P + Q 回到宿主機 shell,容器 detach 狀態 建立一個容器,讓其中執行bash應用: sudo docker run -t -i ubuntu:12.04 /bin/bash 列出映象:docker images / i

Docker簡單的使用命令

Hello World 使用[docker run]命令在docker container中執行應用程式 <pre name="code" class="plain"># docker run fedora /bin/echo 'hello world' hel

Docker入門-映象、容器、倉庫簡單命令

映象 1.獲取映象 docker pull dl.dockerpool.com:5000/ubuntu:14.04(dl.dockerpool.com為註冊伺服器,5000為埠號,ubuntu為倉庫

linux簡單命令8---軟件包安裝

yum安裝 .com 軟件包 rpm http span 軟件包安裝 image size 1:使用yum安裝,它不能包查詢和包校驗。它安裝的是RPM格式文件。沒有yum文件 ------------------------------------------

linux簡單命令10---權限

9.png alt 簡單 技術 size 設置 useradd ges img 1:文件權限設置 數字的用法:chmod 755 文件名 ---------------------------------------------下面是文件權限-------

Docker常用命令詳解

nbsp 詳解 .cn 本地 test 並且 www 更多 top docker ps 查看當前正在運行的容器 docker ps -a 查看所有容器的狀態 docker start/stop id/name 啟動/停止某個容器 docker attach id 進

MySQL 查看表結構簡單命令

flush 生成 直接插入 info 表結構 not 簡單 with utf 一、簡單描述表結構,字段類型 desc tabl_name; 顯示表結構,字段類型,主鍵,是否為空等屬性,但不顯示外鍵。 例如:desc table_name 二、查詢表中列的註釋信息 sele

Docker基本命令與使用 —— Docker容器(一)

使用 -a 基本 com sta start 日誌 靜態頁面 don 一.容器的基本操作 1. 啟動容器 docker run IMAGE [COMMAND] [ARG...] run 在新容器中執行命令 eg: docker run ubuntu echo ‘He

liunx Centos Xshell 簡單命令匯總

pwd conf 路徑 重命名 展示 os x a.out 匯總 bsp ls:查看當前工作路徑下的所有文件夾和文件 pwd:查看當前工作路徑 cd:進入哪個工作路徑 cd ../ 進入當前工作路徑的上一級 cd ../.. 進入當前工作路徑上一級的上一級、 rm -

Docker 常用命令

docker#------------------------------------------------------------# 運行容器#------------------------------------------------------------# 運行docker# -it表示前端運行

docker常用命令

啟動 查看 tac doc soft container input mage -- docker load參數說明: -i,--input 導入鏡像 docker run參數說明: --name [name] 為容器指定一個名稱 -d, --detach=

docker學習筆記(五)——Docker常用命令總結

docker學習筆記 docker常用命令總結 1. 開啟/停止/重啟container(start/stop/restart)容器可以通過run新建一個來運行,也可以重新start已經停止的container,但start不能夠再指定容器啟動時運行的指令,因為docker只能有一個前臺進程。容器st

linux入門基礎知識及簡單命令介紹

linux基礎linux入門基礎知識介紹1、計算機硬件組成介紹計算機主要由cpu(運算器、控制器),內存,I/O,外部存儲等構成。 cpu主要是用來對二進制數據進行運算操作,它從內存中取出數據,然後進行相應的運算操作。不能從硬盤中直接取數據。 內存從外部存儲中取出數據供cpu運存。內存的最小單位是

docker簡單使用

dockeryum install docker -y 安裝dockersystemctl start docker 啟動dockerdocker search nginx 搜索nginx相關的docker鏡像docker pull docker.io/nginx 下載鏡像docker images

Docker示例命令

pan 交互 span docker -s size cnblogs 命令 終端 1、docker run -t -i -v /root/workspace/node:/home/exam:rw docker.io/node bin/sh -t 給容器掛載一個偽終

1組第二次作業-GitHub簡單命令使用

can 二次 輸入 現在 情況 成功 tool 更新 name 任曉琪: (1)建文件夾 (2)Git管理倉庫 (3)文件編輯 (4)文件(<多個文件>)添加倉庫(出現錯誤進入以後再cd一下) (5)多文件一次性提交倉庫並顯示