docker结构分为仓库、镜像、容器
仓库:可以注册一个docker.hub的账号,创建一个自己的仓库
镜像结构:
registry_name/repository_name/image_name:tag_name
比如 docker.io/library/alpine:lastest
docker命令
1.docker info
显示docker目前各种状态
2.镜像管理
docker login docker.io #登录registry
docker search image_name #搜索image_name
docker pull image_name(:tag) #下载镜像
docker tag f70734b6a266 docker.io/dhc102802/alpine:test #给镜像打标签,使用的是image id,打的标签要有完整镜像路径
docker images #查看本地镜像
docker pull docker.io/dhc102802/alpine:test #推送镜像,前提是标签打好,并且login完成
docker rmi image_name #删除本地镜像的对应tag
docker rmi image id #删除本地镜像
docker save image-id -0 alpine.tar.gz #导出镜像为tar包,但是没有标签和名称
docker save -o my.tar.gz docker.io/dhc102802/alpine_with:test #带有标签和名称
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
docker save image-id > alpine.tar.gz
docker load < alpine_with.tar.gz #导入包,或者-i 替换<
#导入后包是没有镜像仓库名和tag的,需要重新tag
3.容器操作
docker ps #查看docker启动的容器进程
-a #查看所有的
-l #最近的
-q #只显示容器启动的容器id
docker run #使用最多的命令
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-i 启动一个交互容器
-t 使用争端关联到输入输出
-it 这个一般都是合在一起使用
-d 放在后台
-rm 推出后立刻删除容器
-name 定义名称
-p 对应端口
-v 挂载的文件
--restart=always 自动重启
docker run -it -d dhc102802/alpine:test /bin/sh #启动容器
docker exec -it 487e772e40d0 /bin/sh #进入容器
ctrl+d 退出不删除
exit 同样
docker stop container—id 关闭容器
docker start container—id 启动容器
docker restart container—id 重启容器
docker rm container—id|name删除容器
docker rm -f container—id|name 删除容器
docker commit -p 487e772e40d0 dhc102802/alpine:with_change #保存修改的镜像
-p 是保存的时候,不会写入新的内容
docker commit continer—id|container—name image-name #格式
以后启动dhc102802/alpine:with_change 这个镜像就是已经修改过的了
docker logs container-id 打印容器日志
-f 动态输出,和tail -f一样
4.重要操作
我把一些比较重要得操作单独放在这里分类
#映射端口
docker run -p 容器外端口:容器内端口
docker run -it --name my-nginx -d -p 100:80 dhc102802/nginx:v1 #将nginx得80端口对应到宿主机得100端口
#挂载数据卷
docker run -v
docker run -d -it --name nginx_baidu -p 81:80 -v /root/html:/usr/share/nginx/html dhc102802/nginx:v1 #挂载了鲁下来的百度主页
#查看容器的详细信息
docker inspect fad7ab4c518d
#传递环境变量 (很重要)
生产环境下,可以只使用一个底包,根据需要设置不通的环境变量
docker run --rm -e dhc=123 dhc102802/nginx:v1 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=d710cca3afc0
dhc=123
NGINX_VERSION=1.12.2-1~stretch
NJS_VERSION=1.12.2.0.1.14-1~stretch
HOME=/root
#软件内安装服务
#以nginx镜像为列,系统为debian
1.更新源
tee /etc/apt/sources.list << eof
deb http://mirrors.ustc.edu.cn/debian stretch main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stretch-updates main contrib non-free
eof
2.安装需要的服务
apt-get update && apt-get install curl -y #需要先更新才能安装
后面一般会进行commit + save
## echo "APT::Get::AllowUnauthenticated 1 ;" >>/etc/apt/apt.conf #一直install 报错-y forse-yes报错,加了这个就好了