一掸绞、配置鏡像加速網(wǎng)站
一般鏡像網(wǎng)站都是國(guó)外拉取很慢,所以自定配置國(guó)內(nèi)鏡像網(wǎng)站耕捞,像我這里使用自己阿里云賬號(hào)提供的鏡像地址
以下配置方法配置鏡像加速器衔掸,是針對(duì)Docker客戶端版本大于 1.10.0 的用戶,如果低于這個(gè)版本敞映,鏡像加速配置方法可以百度找到就比較復(fù)雜一點(diǎn)
通過(guò)修改daemon配置文件/etc/docker/daemon.json來(lái)使用加速器
[root@master ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://t5utj2u4.mirror.aliyuncs.com"]
}
[root@master ~]#
此處使用自己阿里云賬號(hào)頁(yè)面提供的鏡像地址即可振愿。
重啟docker
systemctl daemon-reload
systemctl restart docker
檢查是否生效
docker info
Registry Mirrors:
https://t5utj2u4.mirror.aliyuncs.com/
二冕末、基本常用命令
查看本機(jī)鏡像
[root@localhost ~]#docker images
搜索centos相關(guān)鏡像
[root@localhost ~]#docker search centos
拉取鏡像
[root@localhost ~]#docker pull centos
docker中拉取指定版本的鏡像
比如:
docker pull centos:7
docker pull mongo:3.6.6
dockre pull redis:4.0
簡(jiǎn)單測(cè)試使用鏡像
docker: Docker 的二進(jìn)制執(zhí)行文件档桃。
run:與前面的 docker 組合來(lái)運(yùn)行一個(gè)容器藻肄。
centos指定要運(yùn)行的鏡像拒担,Docker首先從本地主機(jī)上查找鏡像是否存在澎蛛,如果不存在,Docker 就會(huì)從鏡像倉(cāng)庫(kù) 下載公共鏡像桐经。
/bin/echo “Hello world”: 在啟動(dòng)的容器里執(zhí)行的命令
[root@localhost ~]# docker run centos /bin/echo "hello-world"
hello-world
刪除鏡像
[root@localhost ~]#docker rmi 鏡像ID
進(jìn)入容器
-t 在新容器內(nèi)指定一個(gè)偽終端或終端阴挣。
-i 允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互
[root@localhost ~]# docker run -it centos /bin/bash
[root@678b1725d9e3 /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@678b1725d9e3 /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@678b1725d9e3 /]#
使用exit或ctrl+d退出容器
[root@678b1725d9e3 /]# exit
exit
[root@localhost ~]#
exec 命令 ID 或者 name
docker exec -it mynginx /bin/bash
后臺(tái)模式
-d 在后臺(tái)運(yùn)行容器并打印容器ID
[root@localhost ~]# docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
f66c5f63b4f5a6ca4d37575682e181fe8697c51db89d49ff0e59060c18a00b70
在輸出中畔咧,我們沒(méi)有看到期望的"hello world"誓沸,而是一串長(zhǎng)字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
這個(gè)長(zhǎng)字符串叫做容器ID拜隧,對(duì)每個(gè)容器來(lái)說(shuō)都是唯一的趁仙,我們可以通過(guò)容器ID來(lái)查看對(duì)應(yīng)的容器發(fā)生了什么干奢。
首先忿峻,我們需要確認(rèn)容器有在運(yùn)行貌矿,可以通過(guò) docker ps 來(lái)查看容器ID
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f66c5f63b4f5 centos "/bin/sh -c 'while t…" 4 minutes ago Up 4 minutes laughing_keldysh
CONTAINER ID:容器ID
NAMES:自動(dòng)分配的容器名稱
在容器內(nèi)使用docker logs命令,查看容器內(nèi)的標(biāo)準(zhǔn)輸出
[root@localhost ~]#docker logs f66c5f63b4f5
停止容器
[root@localhost ~]#docker stop f66c5f63b4f5
f66c5f63b4f5
刪除容器或鏡像
[root@localhost ~]# docker rm 容器ID
強(qiáng)制刪除運(yùn)行的容器
[root@localhost ~]# docker rm -f 容器ID
殺死所有正在運(yùn)行的容器
docker kill $(docker ps -a -q)
刪除所有已經(jīng)停止的容器
docker rm $(docker ps -a -q)
刪除所有未打 dangling 標(biāo)簽的鏡像
docker rmi $(docker images -q -f dangling=true)
刪除所有鏡像
docker rmi $(docker images -q)
docker rm 可以刪除容器 酌毡;但是刪除之前必須是 stop 狀態(tài)蕾管;
查看容器
docker ps :列出當(dāng)前所有正在運(yùn)行的container
docker ps -l :列出最近一次啟動(dòng)的container
docker ps -a :列出所有的container(包含歷史旭蠕,即運(yùn)行過(guò)的container)
docker ps -q :列出最近一次運(yùn)行的container ID
獲取所有容器ID
docker ps -a | awk '{ print $1}' | tail -n +2
Docker 端口映射
# docker run -d P sevrer
# docker run -d p port:port server
-d 后臺(tái)運(yùn)行掏熬;
-P -p 標(biāo)識(shí)來(lái)指定容器端口綁定到主機(jī)端口旗芬。
兩種方式的區(qū)別是:
-P : 是容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口。
-p : 是容器內(nèi)部端口綁定到指定的主機(jī)端口幔嫂。
默認(rèn)都是綁定 tcp 端口履恩,如果要綁定 UDP 端口切心,可以在端口后面加上 /udp
使用IP:HostPort:ContainerPort格式指定映射使用一個(gè)特定的地址
docker port ID/name 查看端口綁定
docker port website
docker run -d -p 4594:22 --name myos --privileged=true centos:latest /usr/sbin/init
啟動(dòng)容器報(bào)錯(cuò)問(wèn)題
結(jié)束容器進(jìn)程昙衅,清除網(wǎng)絡(luò)映射定鸟。重啟網(wǎng)卡 再起docker 啟容器联予。
關(guān)閉進(jìn)程
pkill docker
清除 nat 規(guī)則
iptables -t nat -F
關(guān)閉網(wǎng)卡
ifconfig docker0 down
刪除 虛擬網(wǎng)橋
brctl delbr docker0
最后重啟docker后解決
查看WEB 應(yīng)用程序日志
docker logs [ID或者name] 可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出沸久。
docker logs name
docker logs -f name 實(shí)時(shí)查看日志
查看容器進(jìn)程
docker top webstie
查看Docker 的底層信息
docker inspect 卷胯;
docker inspect website
使用 docker inspect 來(lái)查看Docker的底層信息窑睁。它會(huì)返回一個(gè) JSON 文件記錄著 Docker 容器的配置和狀態(tài)信息担钮。
更改運(yùn)行容器的名稱
docker ps 查看運(yùn)行的容器狭姨;
docker rename myweb youweb
啟動(dòng)docker容器并在退出時(shí)自動(dòng)刪除
docker run -it --rm nginx /bin/bash
以上命令就是以命令行方式啟動(dòng)docker容器,并在退出時(shí)自動(dòng)刪除,使用bash作為當(dāng)前shell
啟動(dòng)運(yùn)行 nginx 容器示例
docker run -d nginx 后臺(tái)運(yùn)行 ;
docker exec :在運(yùn)行的容器中執(zhí)行命令
-d :分離模式: 在后臺(tái)運(yùn)行
-i :即使沒(méi)有附加也保持STDIN 打開(kāi)
-t :分配一個(gè)偽終端
docker exec -it mynginx /bin/sh
docker commit 編輯鏡像
從容器創(chuàng)建一個(gè)新的鏡像;
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a "name" -m "my-tomcat" website my-tomcat:v2
-a :提交的鏡像作者;
-c :使用Dockerfile指令來(lái)創(chuàng)建鏡像;
-m :提交時(shí)的說(shuō)明文字;
-p :在commit時(shí)赡模,將容器暫停;
容器上傳下載 拷貝文件cp
上傳測(cè)試文件:
docker cp start-kube.sh website:/root/
下載文件 docker cp
docker cp website:/test.html /root/
進(jìn)入容器:
docker exec -it website /bin/bash
diff 查看容器的目錄結(jié)構(gòu)
docker diff ID/NAME
# docker diff webstie
配置一個(gè)centos系統(tǒng)并設(shè)置密碼
docker pull centos
docker tag centos:latest centos:v1
docker run -d -p 4594:22 --name myos --privileged=true centos:v1 /usr/sbin/init
docker exec -it myos /bin/bash
ss -ntl
yum install openssh-server
systemctl restart sshd
ss -ntl
yum install passwd
passwd
yum install initscripts net-tools
Docker容器里的centos、unbuntu無(wú)法使用 systemctl 命令的解決方案
例如:centos
docker run -d -it -p 4590:22 --privileged=true --name myos myos:v1
docker exec -it myos /bin/bash
注意:--privilaged=true一定要加上的欺缘。
docker容器設(shè)置自動(dòng)啟動(dòng)
啟動(dòng)時(shí)加--restart=always
docker run -tid --name myos -p 8081:8080 --restart=always -v /os/v1/log:/usr/local/tomcat/logs myos
Flag Description
no 不自動(dòng)重啟容器. (默認(rèn)value)
on-failure 容器發(fā)生error而退出(容器退出狀態(tài)不為0)重啟容器
unless-stopped 在容器已經(jīng)stop掉或Docker stoped/restarted的時(shí)候才重啟容器
always 在容器已經(jīng)stop掉或Docker stoped/restarted的時(shí)候才重啟容器
如果已經(jīng)啟動(dòng)的項(xiàng)目,則使用update更新:
docker update --restart=always myos
設(shè)置容器主機(jī)名和DNS
h HOSTNAME 或者 --hostname=HOSTNAME
--dns=IP_ADDRESS 使用指定的DNS服務(wù)器
使用-v選項(xiàng)共享物理機(jī)文件數(shù)據(jù)
-v /etc/hosts:/etc/hosts
當(dāng)然此法適用于容器hosts與宿主機(jī)hosts內(nèi)容一致的情況