Docker是一个开源的容器引擎 ,它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可减少从编写到部署运行代码的周期 。
docker有两个版本
社区版 (CE) 对于希望开始使用Docker并尝试基于容器的应用程序的个人开发人员和小型团队非常理想.
#查看docker镜像
docker images#搜索docker镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像#拉取镜像
docker pull 镜像名
docker pull 镜像名:tag#启动docker镜像
docker run tomcat#删除一个
docker rmi -f 镜像名/镜像ID#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)#强制删除镜像
docker image rm 镜像名称/镜像ID#dokcer保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker save tomcat -o /myimg.tar#加载镜像,任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置#镜像标签
docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG
#查看正在运行容器列表
docker ps#查看所有容器 -----包含正在运行 和已停止的
docker ps -a#修改容器名称
docker rename 原容器名 要修改的容器名#运行一个容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash # 先停止运行的 容器
docker stop 容器名/容器ID#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)#容器端口与服务器端口映射
docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash#进入容器内部 方式1
docker exec -it 容器名/容器ID /bin/bash
#进入容器内部 方式2 推荐
docker attach 容器名/容器ID#退出容器
#直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅退出 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q#停止容器
docker stop 容器ID/容器名
#重启容器
docker start 容器ID/容器名
#kill 容器
docker kill 容器ID/容器名#容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径#查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
#提交镜像信息 本地
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag#登录阿里云仓库
docker login --username=经验丰富老船长 registry.cn-hangzhou.aliyuncs.com#从阿里云仓库拉取对应的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/lvhaoit/my_ubuntu_1.3:[镜像版本号]#提交信息
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lvhaoit/my_ubuntu_1.3:[镜像版本号]
#拉取registry镜像
docker pull registry#启动私服镜像
docker run -d -p 5001:5000 -v /Users/lvhao/server/docker_myRegistry/:/tmp/registry --privileged=true registry#查询下私服库上是否有镜像
curl -XGET http://127.0.0.1:5001/v2/_catalog#修改tag参数 (这种格式才能放入私服)
docker tag 镜像:Tag Host:Prot/Repository:Tag
docker tag lvhaoit_ubuntu:1.2_ifconfig 127.0.0.1:5001/lvhaoit_ubuntu:1.2_ifconfig#增加系统参数 取消docker默认不允许http方式推送
"insecure-registries": ["127.0.0.1:5001"],#push容器到私服仓库
docker push 127.0.0.1:5001/lvhaoit_ubuntu:1.2_ifconfig#从私服库拉取
docker pull 127.0.0.1:5001/lvhaoit_ubuntu:1.2_ifconfig
#将两个文件夹内部同步起来,可以完成你写我读 我写你读的操作
#挂载宿主机目录与容器内目录
docker run -it --privileged=true -v [宿主机地址]:[挂载容器内地址] [镜像名/镜像号]
docker run -it --privileged=true -v /Users/lvhao/server/docker_file/ubuntu/:/test/ 499266e3e861 #查看挂载关系 "Mounts"中就是挂载关系
docker inspect [容器名/id]#容器利用start重启后 还是可以同步#容器只读 即宿主机写可以同步给容器,但容器只读
挂载时: /容器目录:ro 镜像名 ro = read only#容器继承挂载规则 会将文件夹内的同步数据
docker run -it --privileged=true --volumes-from u1 --name u2 my_ubuntu_1.3
# run容器同时挂载项目
docker run -d -p 8080:8080 --name tomcat_8080 --privileged=true -v /docker/tomcat/8080/webapps/:/usr/local/tomcat/webapps fb5657adc892 # 进入容器内部
docker exec -it bbc6f1a5825c /bin/bash#上传阿里云
docker tag 7ae57ee4a72a registry.cn-hangzhou.aliyuncs.com/ali_server/tomcat:1.0# 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/ali_server/tomcat:1.0
#启动mysql容器
docker run -d -p 3307:3306 --name mysql_3307 --privileged=true -v /docker/mysql/3307/log:/var/log/mysql -v /docker/mysql/3307/data:/var/lib/mysql -v /docker/mysql/3307/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=lh051920 c20987f18b13#启动容器失败 查看日志
docker logs 容器id#进入mysql容器
docker exec -it mysql_3307 /bin/bash#登录mysqlmysql -uroot -p#mysql 8 设置允许远程用户访问
update user set host = '%' where user = 'root' and host='localhost'; # 更新root - localhost 为 root - %#查询数据库字符集show variables like "character%";
# 增加需要绑定的conf文件
# 这个参数自己实际部署是yes,但是docker可以-d运行 这里有这个会启动失败
daemonize no# 启动redis容器
docker run -d -p 6379:6379 --name redis_6379 --privileged=true -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/conf/data:/data 7614ae9453d1 redis-server /etc/redis/redis.conf