docker
一 安裝
a Ubuntu
sudo apt-get update
sudo apt-get install docker-io
b centos
yum -y install docker-io
c 運(yùn)行docker
systemctl restart docker
二 鏡像命令
1. docker images
- 查看本地已經(jīng)擁有的鏡像
2. docker pull 鏡像名
- 下載鏡像
3. docker rmi 鏡像id/鏡像名
- 刪除鏡像(多個(gè))
4. docker commit
- 用運(yùn)行的容器創(chuàng)建鏡像
- 參數(shù): -a 作者 -m '注解' 容器名(id) 鏡像名:鏡像版本號(hào)
5. docker push 鏡像名:鏡像版本號(hào)
- 上傳鏡像
三 容器命令
1. docker ps
查看運(yùn)行中的容器
2. docker ps -a
查看所有容器
3. docker rm 容器id
刪除容器
4. docker stop 容器id
停止容器
5. docker start 容器id
啟動(dòng)容器
6. docker restart 容器id
重啟容器
7. docker run
創(chuàng)建并啟動(dòng)容器
- -it 啟動(dòng)交互終端(結(jié)尾需要駕駛 /bin/bash)
- -d 后臺(tái)啟動(dòng)
- -p 80:8080 端口映射80為宿主端口,8080為容器端口
? -- name=blog 容器命名
8. control+p+q
退出容器并保持容器運(yùn)行(終止容器退出命令為exit)
9. docker exec -it 容器名或者容器的id /bin/bash
進(jìn)入正在運(yùn)行的容器
10. docker cp
- 宿主機(jī)到容器
# 將主機(jī)/www/runoob目錄拷貝到容器96f7f14e99ab中饭尝,目錄重命名為www。
docker cp /www/runoob 96f7f14e99ab:/www
- 容器到宿主機(jī)
# 將容器96f7f14e99ab的/www目錄拷貝到主機(jī)的/tmp目錄中洪唐。
docker cp 96f7f14e99ab:/www /tmp/
四 Dockerfile
1. Dockerfile文件
# 指定基礎(chǔ)鏡像文件
FROM ubuntu:latest
# 指定維護(hù)者信息
MAINTAINER wanghaifei
# 將代碼copy到容器中。如 ADD ./blog /blog 表示將和dockerfile文件同級(jí)的blog代碼copy到容器的根路徑/blog中
ADD 和dockerfile文件相對(duì)的項(xiàng)目地址 拷貝到容器中的項(xiàng)目地址
# 指定工作目錄
WORKDIR /blog
# 復(fù)制
COPY 地址 新地址
# 執(zhí)行更新命令
RUN apt update
# 創(chuàng)建項(xiàng)目地址的日志文件或者媒體文件等
RUN mkdir -p /日志logs地址
RUN mkdir -p /媒體media地址
# 指定開放端口
EXPOSE 8000
# 在容器啟動(dòng)時(shí)執(zhí)行命令
ENTRYPOINT ["python"]
CMD ["manage.py", "runserver", "0.0.0.0:8000"]
2. 生成鏡像
docker build -t 鏡像名
. (注意最后有個(gè)點(diǎn)用來表示當(dāng)前目錄审葬,初次構(gòu)建速度會(huì)比較慢,需要多等一會(huì)茶宵。)
五 dockerHUB私服
1. 搭建registry
# 拉取registry鏡像
root@qjun-x230:/home/qjun# docker pull registry
# 查看鏡像
root@qjun-x230:/home/qjun# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest f32a97de94e1 3 months ago 25.8MB
# 基于registry 創(chuàng)建啟動(dòng) qdockerhub容器
root@qjun-x230:/home/qjun# docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name qdockerhub registry:latest
b8621bf02781ffccd25a2d2f21cbb54aee093c53ddbf77e39dfab6f05578126d
# 安裝curl測(cè)試工具(Ubuntu系統(tǒng))
root@qjun-x230:/home/qjun# apt install curl
# 測(cè)試/v2/_catalog接口
root@qjun-x230:/home/qjun# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
2. 提交鏡像
# 查看鏡像
root@qjun-x230:/home/qjun# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 62c261073ecf 5 days ago 109MB
# tag 加上傳地址標(biāo)簽
root@qjun-x230:/home/qjun# docker tag nginx 127.0.0.1:5000/qnginx
# 查看鏡像
root@qjun-x230:/home/qjun# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
127.0.0.1:5000/qnginx latest 62c261073ecf 5 days ago 109MB
nginx latest 62c261073ecf 5 days ago 109MB
# push鏡像
root@qjun-x230:/home/qjun# docker push 127.0.0.1:5000/qnginx
The push refers to repository [127.0.0.1:5000/qnginx]
ea06a73e56fc: Pushed
22c458a3ff08: Pushed
6270adb5794c: Pushed
latest: digest: sha256:8c3cdb5acd050a5a46be0bb5637e23d192f4ef010b4fb6c5af40e45c5b7a0a71 size: 948
# curl驗(yàn)證
root@qjun-x230:/home/qjun# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["qnginx"]}
root@qjun-x230:/home/qjun#
3. 拉取鏡像
root@qjun-x230:/home/qjun# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
# 拉取
root@qjun-x230:/home/qjun# docker pull 127.0.0.1:5000/qnginx:latest
latest: Pulling from qnginx
743f2d6c1f65: Already exists
d6c2f01b1dae: Pull complete
d4da6ff1b555: Pull complete
Digest: sha256:8c3cdb5acd050a5a46be0bb5637e23d192f4ef010b4fb6c5af40e45c5b7a0a71
Status: Downloaded newer image for 127.0.0.1:5000/qnginx:latest
root@qjun-x230:/home/qjun# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
127.0.0.1:5000/qnginx latest 62c261073ecf 5 days ago 109MB
六 錯(cuò)誤集合
a. 運(yùn)行錯(cuò)誤1
錯(cuò)誤提示: [root@izj6c0zsm04q86s2tu4e12z /]# docker run -it docker.io/ubuntu:latest /bin/bash
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".
解決辦法: yum update
b. 私有倉庫push錯(cuò)誤(改配置后一定要重啟docker)
docker私有倉庫的5000端口是否在防火墻中打開
daemon.json文件中提交鏡像的地址是否修改為私有docker倉庫的地址
添加鏡像倉庫地址insecure-registries參數(shù)桐汤,內(nèi)容修改如下:
vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["47.240.32.247:5000"]
}