Docker的基础命令
一、镜像
1、查找指定镜像
docker search nginx #查找指定镜像
2、查看镜像、下载镜像
docker images 仓库名称:标签 #查看下载镜像信息
docker inspect 镜像ID #获取镜像信息
docker pull 仓库名称:标签 #获取/下载镜像 ,AUFS(联合文件系统)分层下载
#下载后存放在/var/lib/docker中
/var/lib/docker/image/overlay/repositories.json #下载文件信息
3、删除镜像
docker rmi 仓库名称:标签
docker rmi 镜像ID
docker rmi nginx #以镜像名称删除
docker rmi f6d0b4767a6c #以镜像ID删除
4、添加新标签
docker tag 名称:标签 新名称:新标签
docker tag nginx:latest nginx:text
docker images
5、镜像备份
cd /opt/ #存放在此目录中
docker save -o zs_nginx nginx:latest #镜像备份,文件名为zs_nginx
docker load < zs_nginx #载入镜像
docker --input zs_nginx #载入镜像
二、容器
1、容器创建
docker create -it nginx:latest /bin/bash
2、查看容器
docker ps -a
3、启动容器
docker start c3430e0df571
查看状态为up
docker ps -a
*进入到容器内部* docker exec -it 容器id bash
docker attach 容器id
区别: docker exec:进入容器后开启一个新的终端,可以在里面操作(常用) docker attach:进入容器正在执行的终端,不会启动新的进程
删除容器(删除容器前,需要先停止容器)
docker stop 容器id #停止指定的容器
docker stop $(docker ps -qa) #停止全部容器
docker rm 容器id #删除指定的容器
docker rm $(docker ps -qa) #删除全部容器
批量删除
docker ps -a | awk '{print "docker rm "$1}' | bash #只删除不运行的容器,保留只运行的容器
退出容器
exit *#直接容器停止并退出*
*运行容器后执行命令* docker run centos:7 /usr/bin/bash -c ls
*持续在后台执行* docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done" *#死循环*
容器导出
docker export 6c9aabe7b1e5 > nginx
容器导入(会生成镜像,而不会创建容器)
cat nginx | docker import - nginx:web
三、私有仓库
下载registry镜像
docker pull registry
vim /etc/docker/daemon.json
"insecure-registries": ["192.168.132.60 :5000"], #添加
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"]
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a
docker start 6f7497fcc8c2
#宿主机的/data/registry自动创建挂载容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
#更改标记为192.168.132.60:5000/nginx
docker tag nginx:latest 192.168.132.60:5000/nginx
上传
docker push 192.168.132.60:5000/nginx
获取私有仓库列表
curl -XGET http://192.168.132.60:5000/v2/_catalog
四、Dockoc数据卷
docker pull centos:7
宿主机目录/var/www挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
数据卷容器
docker run --name web2 -v /data1 -v /data2 -it centos:7/bin/bash
*新容器挂载数据卷容器*
*web2* docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash
端口映射
docker run -d -P 88:80 nginx:latest # -p指定映射端口
docker run -d -P nginx:latest #-P 随机映射端口
容器互联
docker run -itd -P --name web11 centos:7 /bin/bash
#创建并运行容器取名web11,端口号自动映射
docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash
#创建并运行容器取名web2,链接到web11和其通信进web22容器
docker exec -it ed3bde /bin/bash 进入web22容器
ping web11