Docker-----經常使用命令

安裝docker

一、安裝docker
yum install docker
查一下安裝版本
docker --version

二、啓動docker
selinux須要關閉
systemctl enable docker.service
systemctl start docker.servicehtml

添加國內鏡像庫

   vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
須要重啓docker生效node

列出容器上的鏡像

docker images
其中咱們能夠根據REPOSITORY來判斷這個鏡像是來自哪一個服務器linux

若是沒有 / 則表示官方鏡像,相似於username/repos_name表示Github的我的公共庫,相似於regsistory.example.com:5000/repos_name則表示的是私服。nginx

IMAGE ID列實際上是縮寫,要顯示完整則帶上--no-trunc選項web

搜索鏡像

docker search nginx
搜索的範圍是官方鏡像和全部我的公共鏡像。NAME列的 / 後面是倉庫的名字。docker

下載鏡像

docker pull nginxjson

刪除鏡像

docker rmi image-id
須要先刪除應用這個鏡像的dockerbash

生成容器

交互式
docker -ti run --restart=always --name nginx1 -d -p 6378:80 -v /tmp/nginx:/tmp/:ro nginx服務器

--name 運行一個名字爲nginx1的容器
nginx  使用nginx鏡像
-p  將Docker中的nginx的80端口映射到本機的6378端口。
-d 後臺執行
--restart=always 自動重啓容器
-t:進入終端
-i:得到一個交互式的鏈接,經過獲取container的輸入

 

-v 將主機上的目錄掛載到容器的目錄
#不指定的時候默認是rw模式,能夠用docker inspect查看容器的屬性,能夠看到關於掛載目錄的詳細參數。spa

1. 默認狀況不使用:rw :ro選項,Mode的值就是空字符串,可是rw是true「。
2. 使用:rw選項,Mode的值就是」rw」。
3. 使用:ro選項,Mode的值就是」ro」。

rw:宿主主機和docker互相均可以讀寫同步,均可以寫,均可以互相同步。
ro:這個時候docker內不能寫,宿主主機寫了能夠同步到容器內。

啓動/關閉容器

docker stop container-name/container-id
經過容器名稱或者容器id啓動/中止容器

查看容器狀態

docker ps -a  #顯示全部容器,包括不運行的

docker ps #顯示運行中的容器

docker info #查看容器和鏡像的數量、以及docker的基本信息等資料

刪除容器

docker rm container-name/container-id
只能刪除已經不是up狀態的docker

進入某個容器

使用container命令,當退出container後,container仍然在後臺運行,命令使用方法以下:
docker exec -it goofy_almeida /bin/bash  
退出容器能夠用crtl+D或者exit命令退出
日常的容器通常均可以執行/bin/bash,非常alpine沒有,改爲 docker exec -it 鏡像id sh 就行了。
-u root #進入容器的用戶

docker運行日誌

journalctl -u docker.service  #能夠加-f實時查看日誌

docker logs 容器名  #查看容器運行日誌,也能夠加參數-t 帶上時間戳

查看容器內進程

docker top 容器名

鏡像備份恢復

Docker的鏡像和容器能夠有兩種方式來導出

docker save #ID or #Name
docker export #ID or #Name

docker save和docker export的區別:

對於Docker Save方法,會保存該鏡像的全部歷史記錄
對於Docker Export 方法,不會保留歷史記錄,即沒有commit歷史
docker save保存的是鏡像(image),docker export保存的是容器(container);
docker load用來載入鏡像包,docker import用來載入容器包,但二者都會恢復爲鏡像;
docker load不能對載入的鏡像重命名,而docker import能夠爲鏡像指定新名稱。

save命令:

docker save [options] images [images...]

示例 
docker save -o nginx.tar nginx:latest 
或 
docker save > nginx.tar nginx:latest 
其中-o和>表示輸出到文件,nginx.tar爲目標文件,nginx:latest是源鏡像名(name:tag)

load命令:

docker load [options]

示例
docker load -i nginx.tar
或
docker load < nginx.tar
其中-i和<表示從文件輸入。會成功導入鏡像及相關元數據,包括tag信息

export命令:

docker export [options] container

示例
docker export -o nginx-test.tar nginx-test
#導出爲tar
docker export #ID or #Name > /home/export.tar
其中-o表示輸出到文件,nginx-test.tar爲目標文件,nginx-test是源容器名(name)

 import命令:

docker import [options] file|URL|- [REPOSITORY[:TAG]]

示例
docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp

文件拷貝

ocker cp :用於容器與主機之間的數據拷貝。

將主機/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下。
docker cp /www/runoob 96f7f14e99ab:/www/

將主機/www/runoob目錄拷貝到容器96f7f14e99ab中,目錄重命名爲www。
docker cp /www/runoob 96f7f14e99ab:/www

將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中。
docker cp  96f7f14e99ab:/www /tmp/

在容器內運行命令

docker exec -d registry touch /123.txt

docker exec命令能夠在容器內部額外的啓動新進程,-d後面要加容器名以及要執行的命令

volume使用

docker volume --help

Commands:
  create      建立一個數據卷
  inspect     打印一個或多個數據卷的詳細信息
  ls          列出全部數據卷
  prune       刪除全部未使用的數據卷
  rm          刪除一個或多個數據卷

建立一個volume

docker volume create www-data

查看數據卷在宿主機上的路徑:

[root@node1 volumes]# docker inspect www-data
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/www-data/_data",
        "Name": "www-data",
        "Options": {},
        "Scope": "local"
    }
]
[root@nod

 注:每建立一個volume,docker會在/var/lib/docker/volumes/下建立一個子目錄,默認狀況下目錄名是一串UUID。若是指定了名稱,則目錄名是volume名稱。volume裏的數據都存儲在這個子目錄的_data目錄下。

把卷掛載到容器

docker run --rm --name web -p 80:80 -v www-data:/usr/share/nginx/html:ro -d nginx

 

privileged參數

--privileged=false

container內的root擁有真正的root權限。不然,container內的root只是外部的一個普通用戶權限。privileged啓動的容器,能夠看到不少host上的設備,而且能夠執行mount。甚至容許你在docker容器中啓動docker容器。

相關文章
相關標籤/搜索