1. 程式人生 > 其它 >02 docker容器

02 docker容器

docker容器

容器就是對外提供服務的一個例項。

容器啟動的必要條件:容器內至少有一個程序執行在前臺

建立容器

# 格式
	docker run [引數] [映象名稱] [執行容器的啟動命令]
	
# 引數
	-d : 以守護程序的方式執行一個容器
		docker run -d [映象名稱] [cmd]
	
	--name : 指定容器的名稱
		docker run -d --name [容器名稱] [映象的名稱] [cmd]
	
	-p : 指定埠對映
		docker run -d -p 宿主主機埠:容器內埠 [映象名稱] [cmd]
	
	-P :隨機埠對映
		docker run -d -P [映象名稱] [cmd]
	
	-i : 開啟標準輸出
	
	-t : 建立一個偽終端
		docker run -it [映象名稱] [cmd]
	
	-v : 掛載目錄到容器中
		docker run -v 宿主主機目錄:容器內目錄  [映象名稱] [cmd]
	
	--rm : 容器生命週期結束時立即刪除
		docker run --rm [映象名稱] [cmd]
	
	-e : 在容器中建立一個環境變數
		docker run -e NAME=Centos -d [映象名稱] [cmd]
	
	--link : 連線上一個容器,實現網路互通
		docker run --link 被連線的容器的名稱:連線別名 [映象名稱] [cmd]
	
	-h : 設定容器主機名
		docker run -h "主機名"  [映象名稱] [cmd]

# docker run 執行流程
1、檢查本地是否用指定映象,如果沒有則去對應的倉庫下載映象
2、啟動容器,如果指定了命令則使用指定的命令,如果沒有則使用預設的命令
3、返回容器ID
# nginx前臺啟動
[root@docker ~]# nginx -g 'daemon off;'

檢視本機的容器列表

# 格式	
	docker ps [引數]
	docker ps # 檢視當前系統中正在執行的容器列表

#引數
	-a : 檢視系統中所有的容器。
	-q : 僅顯示容器的ID

停止和啟動一個容器

# 停止
	docker stop [容器的ID|名稱]
	
# 啟動(該容器必須是系統已經存在的容器)
	docker start [容器的ID|名稱]

刪除容器

# 格式
	docker rm [容器名稱|ID]

# 引數
	-f : 強制刪除
	docker rm -f [容器名稱|ID]

# 清空容器
docker rm $(docker ps -a -q)

檢視容器內容

# 格式
	docker inspect [容器名稱|ID]

# 怎麼監控docker執行狀態?
docker inspect -f '{{.State.Running}}' nginx

複製命令

1、複製到容器內
	docker cp [宿主主機檔案路徑]  容器ID:容器內路徑

2、複製到容器外
	docker cp 容器ID:容器內路徑 [宿主主機檔案路徑]

進入容器

# 進入容器一般有四種

1、exec : 在容器外向容器內執行一個命令(官方推薦)
	docker exec [引數] [容器的名稱|ID] [cmd]
	# 案例
    [root@docker ~]# docker exec nginx ls /etc/nginx/conf.d
    default.conf
    [root@docker ~]# docker exec -it nginx bash
    root@7147930d1a61:/# cd /etc/nginx/conf.d/
    root@7147930d1a61:/etc/nginx/conf.d# ls
    default.conf

2、attach : 在早期docker提供的進入容器的命令(缺點:當其結束時,容器也跟著結束了)
	docker attach [容器ID|名稱]

3、nsenter : 建立一個管道連線上容器主ID
	nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid

4、ssh : 通過ssh連線