1. 程式人生 > >Docker 常用命令

Docker 常用命令

docker

#------------------------------------------------------------

# 運行容器

#------------------------------------------------------------


# 運行docker

# -it表示前端運行

docker run -it --restart=always centos /bin/bash

# 後端運行並映射80端口

docker run -dt -p 80:80 --restart=always --name mycentos my/os

# 端口映射,IP訪問限制

docker run -dt -p 127.0.0.1:80:80 --restart=always --name mycentos my/os

# 不創建Container運行docker

docker run --rm -it centos /bin/echo haha

# 創建Container,起個名字

docker run -it --name testecho --restart=always -b centos /bin/bash

# 重命名image

docker tag image_name new_image_nameL:tag

# 運行centos的終端

docker run -it centos --restart=always /bin/bash

# Container重命名

docker rename nginx nginx_1

#進入容器(調出容器的bash)

docker exec -it container-name /bin/bash


#------------------------------------------------------------

# 退出

#------------------------------------------------------------


# attach(附加)的容器退出時會停止Container

exit

# 不停止Container情況下退出方法

快捷鍵:ctrl + p, ctrl + q


*exec方式調用容器bash的方式敲exit命令只是推出shell不會停止容器


#------------------------------------------------------------

# 運行Container

#------------------------------------------------------------


# 運行已經退出的docker centos終端

docker start 0a2b06b59448或者container-name

# 運行並附加到container

docker start -i ContainerID

# 停止正在運行的docker centos終端

docker stop 0a2b06b59448

# 附加到docker終端Container,前提是此Container已經運行中

docker attach 3b6165b7504a

# 列出所有的Container

docker ps -a

# 打印docker的運行終端顯示

docker logs 81a4f43c74ed

# 刪除Container

docker rm 3b6165b7504a

# 刪除所有Container

docker rm $(docker ps -a)

# 列出所有鏡像

docker images

# 搜索鏡像

docker search centos

# 下載鏡像

docker pull centos

# 提交鏡像

docker commit mycentos my/os:latest


#------------------------------------------------------------

# 鏡像導入導出及運行

#------------------------------------------------------------


# 導入容器為鏡像文件

docker export 3b6165b7504a > centos.tar

# 導入鏡像

cat centos.tar | docker import - test/centos:v1.0

# 運行導入的鏡像

docker run -it test/centos:v1.0 /bin/bash

# 刪除鏡像

docker rmi test/centos:v1.0

# 查看docker的信息,包括安裝路徑、CPU、內存等

docker info

# Container執行命令,進入容器終端

docker exec -it ContainerID bash

# 進入容器終端

nsenter --mount --uts --ipc --net --pid --target $(docker inspect --format "{{.State.Pid}}""4cd5af004a52")

# 查看Container的端口映射

docker port ContainerID


#------------------------------------------------------------

# 動態設置運行時的環境變量# 使用參數--env

# 查看Container的環境變量方法,可以進入Container的bash中運行命令:env

#------------------------------------------------------------


# 查看Container的環境變量

docker exec -it nginx env

# 查看Container的Host文件

docker exec -it nginx cat /etc/hosts

# 設置Container的環境變量

docker run --rm -it --name test --env MYHOME=/home --env TEST=/home --env PATH=$PATH:/home centos bash

# 也可以使用inspect查看Container的環境變量

docker inspect nginx


#------------------------------------------------------------

# 端口映射,IP訪問限制

#------------------------------------------------------------


docker run -dt -p 127.0.0.1:90:80 --name jetty img_jetty

docker run -dt -p 127.0.0.1:91:80 --name jetty1 img_jetty

docker run -dt -p 80:80 --name nginx --link jetty:java --link jetty1:java1 img_nginx


#------------------------------------------------------------

# 鏡像保存與重加載

#------------------------------------------------------------


# 保存鏡像

docker save img_java > img_java.tar

# 重新加載鏡像

docker load < img_java.tar

# 查詢鏡像歷史

docker history img_java

# 查看鏡像信息Json

docker inspect img_java


#------------------------------------------------------------

# 文件復制

#------------------------------------------------------------


# 從Container復制文件autorun.sh到Host主機的/home目錄下

# 也可以是目錄復制

docker cp test:/etc/init.d/autorun.sh /home

# 從Host主機復制文件或文件夾到Container主機

# 使用scp命令,如果沒有安裝scp,使用

yum install openssh-clients

# 首先需要使用docker exec進入到Container的終端

scp -rp [email protected]:/home/jetty8/* /home/


#------------------------------------------------------------

# docker容器自動啟動

#------------------------------------------------------------


docker run --restart=always redis

#------------------------------------------------------------

# 掛載數據卷

# 參數

privileged=true:意思給容器添加特權,比如對掛載卷的讀寫

# 掛載多個數據卷,可以使用多次-v

#------------------------------------------------------------

# 創建數據卷容器,並掛載目錄

docker run -it --privileged=true -v /home/jetty8:/home/jetty8 --name jetty centos bash

# 使用數據卷容器創建新的數據卷容器

docker run -it --privileged=true --volumes-from jetty --name os centos bash


#------------------------------------------------------------

# 使用Dockerfile制作鏡像

#------------------------------------------------------------


# 註意後面的一點不可少:

.docker build -f dockerfile -t my/centos


本文出自 “一生誌在千裏也知似水流年” 博客,轉載請與作者聯系!

Docker 常用命令