docker 常用命令如下
管理命令:
? container? 管理容器
? image? ? ? 管理鏡像
? network? ? 管理網(wǎng)絡(luò)
? node? ? ? ? 管理Swarm節(jié)點(diǎn)
? plugin? ? ? 管理插件
? secret? ? ? 管理Docker secrets
? service? ? 管理服務(wù)
? stack? ? ? 管理Docker stacks
? swarm? ? ? 管理Swarm集群
? system? ? ? 查看系統(tǒng)信息
? volume? ? ? 管理卷
? 如:docker container ls 顯示所有容器
普通命令:
? attach? ? 進(jìn)入一個(gè)運(yùn)行的容器
? build? ? ? 從一個(gè)DockerFile構(gòu)建鏡像
? commit? ? 從容器創(chuàng)建一個(gè)鏡像
? cp? ? ? ? ? 從容器和主機(jī)文件系統(tǒng)之間拷貝文件
? create? ? ? 創(chuàng)建一個(gè)容器
? diff? ? ? ? 檢查容器文件系統(tǒng)上的更改
? events? ? ? 從服務(wù)器獲取實(shí)時(shí)事件
? exec? ? ? ? 在正在運(yùn)行的容器中運(yùn)行命令
? export? ? ? 將容器的文件系統(tǒng)導(dǎo)出為tar存檔
? history? ? 顯示鏡像的歷史記錄
? images? ? ? 查看鏡像列表
? import? ? ? 從歸檔文件中創(chuàng)建鏡像
? info? ? ? ? 顯示系統(tǒng)范圍的信息
? inspect? ? 返回Docker對(duì)象的低級(jí)信息
? kill? ? ? ? kill運(yùn)行中的容器
? load? ? ? ? 從存檔或者STDIN加載鏡像
? login? ? ? 登陸docker鏡像倉庫
? logout? ? ? 退出docker鏡像倉庫
? logs? ? ? ? 獲取一個(gè)容器的日志
? pause? ? ? 暫停一個(gè)或多個(gè)容器中的所有進(jìn)程
? port? ? ? ? 查看端口映射或容器的特定映射列表
? ps? ? ? ? ? 查看容器列表
? pull? ? ? ? 從鏡像倉庫拉取鏡像
? push? ? ? ? 將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫
? rename? ? ? 重命名容器
? restart? ? 重啟容器
? rm? ? ? ? ? 刪除容器
? rmi? ? ? ? 刪除鏡像
? run? ? ? ? 創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
? save? ? ? ? 將指定鏡像保存成 tar 歸檔文件
? search? ? ? 從Docker Hub搜索鏡像
? start? ? ? 啟動(dòng)容器
? stats? ? ? 實(shí)時(shí)顯示容器資源使用情況的統(tǒng)計(jì)信息
? stop? ? ? 停止容器
? tag? ? ? ? 標(biāo)記本地鏡像歧蒋,將其歸入某一倉庫
? top? ? ? ? 展示一個(gè)容器中運(yùn)行的進(jìn)程
? unpause? ? 恢復(fù)容器中所有的進(jìn)程
? update? ? ? 更新容器配置
? version? ? 顯示Docker的版本信息
? wait? ? ? ? 阻塞直到容器停止晌砾,然后打印退出代碼
? 如:docker images 顯示所有鏡像
下面將分別介紹一些常用操作
docker 拉取并運(yùn)行一個(gè)鏡像
1、下載鏡像
$ docker pull centos
2、查看已經(jīng)下載的鏡像
$ docker images
? ? REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? SIZE
? ? centos? ? ? ? ? ? ? latest? ? ? ? ? ? ? 49f7960eb7e4? ? ? ? 6 weeks ago? ? ? ? 200MB
? ? hello-world? ? ? ? latest? ? ? ? ? ? ? f2a91732366c? ? ? ? 8 months ago? ? ? ? 1.85kB
3胃夏、運(yùn)行一個(gè)鏡像并生成容器
//運(yùn)行一個(gè)centos鏡像,并執(zhí)行/bin/bash命令
$ docker run centos /bin/bash
輸入命令docker ps或者docker container ls查看運(yùn)行中的容器昼捍,發(fā)現(xiàn)列表為空翠肘,原因是容器在執(zhí)行完成命令后會(huì)自動(dòng)退出眯亦,下面介紹讓讓容器停留在后臺(tái)的方法
$ docker ps
? ? CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? COMMAND? ? ? ? ? ? CREATED? ? ? ? ? ? STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? NAMES
$ docker container ls
? ? CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? COMMAND? ? ? ? ? ? CREATED? ? ? ? ? ? STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? NAMES
使用命令docker ps -a或者docker container ls -a 查看所用容器,并顯示了容器的狀態(tài)
$ docker ps -a
CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? COMMAND? ? ? ? ? ? CREATED? ? ? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? NAMES
5525373371f3? ? ? ? centos? ? ? ? ? ? ? "/bin/bash"? ? ? ? 7 minutes ago? ? ? Exited (0) 7 minutes ago? ? ? ? ? ? ? ? ? ? ? ? nifty_rosalind
docker 讓鏡像運(yùn)行停留在后臺(tái)
1、啟動(dòng)一個(gè)容器并后臺(tái)運(yùn)行
docker run命令 通過增加-i -t參數(shù)可以讓容器并進(jìn)入容器
docker run -i -t centos /bin/bash
按 Ctrl + P + Q 退出容器般码,再用 docker ps 進(jìn)行查看
$ docker ps
CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? COMMAND? ? ? ? ? ? CREATED? ? ? ? ? ? STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? NAMES
61b041e4e063? ? ? ? centos? ? ? ? ? ? ? "/bin/bash"? ? ? ? 3 minutes ago? ? ? Up 3 minutes? ? ? ? ? ? ? ? ? ? ? ? ? ? nervous_saha
狀態(tài)顯示仍在運(yùn)行中
docker 進(jìn)入一個(gè)運(yùn)行的容器
$ docker ps
CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? COMMAND? ? ? ? ? ? ? ? ? CREATED? ? ? ? ? ? STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? ? ? ? NAMES
36afde543eb5? ? ? ? mysql:5.7? ? ? ? ? "docker-entrypoint.s…"? About an hour ago? Up About an hour? ? 0.0.0.0:3306->3306/tcp? mymysql
$ docker exec -it 36afde543eb5 /bin/bash
-i 保持STDIN打開 -t 分配一個(gè)虛擬TTY窗口
docker 提交一個(gè)鏡像到鏡像倉庫
1妻率、首先到https://hub.docker.com/注冊一個(gè)賬號(hào),保存下用戶名密碼 2.控制臺(tái)登陸dockerhub賬戶
$ docker login
? ? 輸入剛注冊的用戶名密碼
2板祝、查看鏡像
$ docker images
REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? SIZE
redis? ? ? ? ? ? ? latest? ? ? ? ? ? ? f06a5773f01e? ? ? ? 2 days ago? ? ? ? ? 83.4MB
3宫静、選擇需要上傳的鏡像,重命名為指定的格式
$ docker? tag redis username/myredis:v1
username:為自己注冊的用戶名
myredis:為自己為鏡像取的名字
v1:為任意設(shè)置的版本號(hào)
4券时、完成上述操作后孤里,即可提交鏡像到自己的倉庫
docker push username/myredis:v1
docker 映射文件從宿主機(jī)到容器,端口號(hào)映射
//將宿主機(jī)的81端口映射到容器的80端口
//將宿主機(jī)的/develop/data卷,映射到容器的/data卷
$ docker run -i -t -p 81:80 -v /develop/data:/data? centos /bin/bash
-p:映射端口號(hào) -v:磁盤目錄映射
docker 更改端口號(hào)映射
運(yùn)行中的容器無法映射新的端口號(hào)橘洞,也無法更改端口號(hào)映射捌袜,但可以通過兩種方法解決
1、iptable轉(zhuǎn)發(fā)端口
//查看容器ip
$ docker inspect 36afde543eb5 | grep IPAddress
"IPAddress": "172.17.0.2"
//將主機(jī)的8081端口映射到宿主機(jī)的8080端口
$ iptables -t nat -A? DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.2:8080
2震檩、先提交容器為鏡像琢蛤,再運(yùn)行這個(gè)容器,同時(shí)指定新的端口映射
//提交容器為鏡像
$ docker commit 9995ffa15f46? mycentos:0.1
//停止舊的容器
$ docker stop 9995ffa15f46
//重新從舊的鏡像啟動(dòng)容器
$ docker run -i -t? -p 8081:8080? mycentos:0.1
從DockerFile創(chuàng)建鏡像
$ docker build -t myimage:v1 .
-t :指定鏡像名稱和標(biāo)簽抛虏,格式為'name:tag' .: 最后一個(gè)點(diǎn)代表當(dāng)前目錄博其,也可以換成其它的路徑