Docker学习总结
参考
https://www.runoob.com/docker/docker-architecture.html
安装docker
docker新版(Docker Engine-Community)支持 Ubuntu 16.04+
官方安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh
手动安装
卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- 使用Docker仓库进行安装
- 使用Shell脚本进行安装
安装完毕
若要使用Docker为非root用户,则需添加用户组,并且logout
sudo usermod -aG docker your-user
logout
Docker镜像加速
国内地址
网易: https://hub-mirror.c.163.com/
阿里云: https://<你的ID>.mirror.aliyuncs.com
七牛云: https://reg-mirror.qiniu.com
配置加速器
Ubuntu14.04,Debian7Wheezy
在/etc/default/docker文件中修改
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
重新启动服务
sudo service docker restart
Ubuntu16.04+,Debian8+,CentOS7
对于使用systemd的系统,在/etc/docker/daemon.json中写入(文件不存在则创建)
{
"registry-mirrors":[
"https://reg-mirror.qiniu.com/"
]
}
重新启动服务
sudo systemctl daemon-reload
sudo systemctl restart docker
检查加速器是否生效
docker info
Registry Mirrors:
https://reg-mirror.qiniu.com
Docker 镜像使用
列出镜像列表 docker images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB
php 5.6 f40e9e0f10c8 9 days ago 444.8 MB
选项说明:
- REPOSITORY: 表示镜像的仓库源
- TAG: 镜像的标签
- IMAGE ID: 镜像ID
- CREATED: 创建时间
- SIZE: 镜像大小
同一个仓库源可以有多个TAG代表不同的版本,REPOSITORY:TAG 例如ubuntu:16.04
如果不指定一个镜像的版本标签,,则默认使用ubuntu:latest镜像
获取一个新的镜像
docker pull ubuntu:16.04
查找镜像
docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 11118 [OK]
dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 446 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 245 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 221 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 110 [OK]
neurodebian NeuroDebian provides neuroscience research s… 68 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
......
选项说明:
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否官方发布
- STARS: 类似github的start
- AUTOMATED: 自动构建
删除镜像
docker rmi REPO/ID
删除报错
image has dependent child images
原因: 有另外的 image FROM 了这个 image,可以使用下面的命令列出所有在指定image之后创建的image的父image
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' (docker image ls -q --filter since=IMAGE ID)
#查找出所有依赖的父镜像
> [xxh/ubuntu15:v2] sha256:412299340aa1cdc30b2f47a7e14e922af6b2a984054afb97f58dbdbcf719743c sha256:9b9cb95443b5f846cd3c8cfa3f64e63b6ba68de2618a08875a119c81a8f96698
> [镜像名] 子镜像ID 父镜像ID
#先删除依赖于父镜像创建的子镜像
is referenced in multiple repositories
原因: 同一个镜像分配了多个REPO:TAG名称,先指定名称即可
创建镜像
有两种方法:
- 从已经创建的容器中更新镜像
- 使用Dockerfile指令从零开始创建新镜像
更新镜像
docker stop CONTAINERID
docker commit -m="MESSAGE" -a="AUTHOR" CONTAINERID REPO:TAG
选项说明:
- -m: 提交的描述信息
- -a: 作者信息
- CONTAINERID: 容器ID
- REPO:TAG:指定要创建的镜像名
构建镜像
创建一个Dockerfile
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
- 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
- 第一条FROM,指定使用哪个镜像源
- RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
- 然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
docker build -t REPO:TAG FILEDIR
选项说明:
- -t: 指定要创建的镜像名
- FILEDIR: Dockerfile所在的目录
设置镜像标签
docker tag IMAGEID REPO:TAG
其他操作
# 停止所有容器
docker ps -a | awk '{print 1}'|xargs docker stop
docker stop (docker ps -a-q)
# 删除所有容器
docker ps -a | awk '{print 1}'|xargs docker rm
docker rm (docker ps -a -q)
# 删除镜像
docker images | awk '{print 3}'|xargs docker rmi
#通用操作
docker run -d -it REPO:TAG -p : -v : --name NAME -h HOSTNAME -m 1G --memory-swappiness=60 --memory-swap=-1 --restart=always
docker资料https://www.cnblogs.com/zhuochong/category/1310443.html
解决hostconfig.json 被覆盖问题& 修改hostname(https://blog.csdn.net/weixin_42292991/article/details/95529217)

浙公网安备 33010602011771号