一、Docker基本操作
1、镜像操作
拉取镜像:
查看拉取到的镜像:
保存镜像:
docker save -o [保存的目标文件名称] [镜像名称]
使用docker save导出镜像到磁盘
docker save -o nginx.tar nginx:latest
使用docker load加载镜像
先删除本地的nginx镜像:
docker rmi nginx:latest
然后运行命令,加载本地文件:
docker load -i nginx.tar
2、容器操作
1、运行 暂停 恢复 停止 启动 删除
docker run:创建并运行一个容器,处于运行状态 - docker pause:让一个运行的容器暂停 - docker unpause:让一个容器从暂停状态恢复运行 - docker stop:停止一个运行的容器 - docker start:让一个停止的容器再次运行 - docker rm:删除一个容器
2、进入容器命令
docker exec :进入容器内部,执行一个命令
- -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
- mn :要进入的容器的名称
- bash:进入容器后执行的命令,bash是一个linux终端交互命令
3、查看容器日志:
docker logs -f 添加 -f 参数可以持续查看日志
4、查看容器状态:
docker ps docker ps -a 查看所有容器,包括已经停止的
3、数据卷(容器数据管理)
1、基本语法:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
- create 创建一个volume
- inspect 显示一个或多个volume的信息
- ls 列出所有的volume
- prune 删除未使用的volume
- rm 删除一个或多个指定的volume
① 创建数据卷
docker volume create html
② 查看所有数据
docker volume ls
③ 查看数据卷详细信息卷
docker volume inspect html
2、挂载数据卷:
① 创建容器并挂载数据卷到容器内的HTML目录
docker run —name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
这里的-v就是挂载数据卷的命令:
- -v html:/root/html :把html数据卷挂载到容器内的/root/html这个目录中
② 进入html数据卷所在位置,并修改HTML内容
# 查看html数据卷的位置 docker volume inspect html # 进入该目录 cd /var/lib/docker/volumes/html/_data # 修改文件 vi index.html
3、容器挂载宿主机目录上
- 带数据卷模式:宿主机目录 —> 数据卷 —-> 容器内目录
- 直接挂载模式:宿主机目录 —-> 容器内目录
目录挂载与数据卷挂载的语法是类似的:
- -v [宿主机目录]:[容器内目录]
- -v [宿主机文件]:[容器内文件]
例子:挂载mysql
① 挂载/tmp/mysql/data到mysql容器内数据存储目录
② 设置MySQL密码
docker run —restart=always -p 3306:3306 —name mysql -v /tmp/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.25
docker run的命令中通过 -v 参数挂载文件或目录到容器中:
- -v volume名称:容器内目录
- -v 宿主机文件:容器内文
- -v 宿主机目录:容器内目录
数据卷挂载与目录直接挂载的
- 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
- 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
4、docker安装一些软件
1、mysql
—restart=always : 随着docker重启而重启
-v /root/docker/mysql/data:/var/lib/mysql : 挂载mysql容器的数据到宿主机的/root/docker/mysql目录
-e MYSQL_ROOT_PASSWORD=root : 设置密码为root
docker run —restart=always -p 3307:3306 —name mysql -v /root/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.372、redis
—appendonly yes :持久化
docker run —restart=always —name redis -d -p 6379:6379 redis:6.2.5 redis-server —appendonly yes —requirepass “Thq@@20000623”3、m1安装nacos
docker pull zhusaidong/nacos-server-m1:2.0.3 docker run —name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -d zhusaidong/nacos-server-m1:2.0.34、安装RabbitMQ
docker run \ -e RABBITMQ_DEFAULT_USER=itcast \ -e RABBITMQ_DEFAULT_PASS=123321 \ -v mq-plugins:/plugins \ —name mq \ —hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq
接着进入容器内启动管理面板
docker ps docker exec -it 镜像ID /bin/bash rabbitmq-plugins enable rabbitmq_management镜像仓库-简易版本
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
docker run -d \ —restart=always \ —name registry \ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像
镜像仓库-图形化版本
使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:
vi docker-compose.yaml
内容如下:
version: ‘3.0’ services: registry: image: registry volumes: - ./registry-data:/var/lib/registry ui: image: joxit/docker-registry-ui:static ports: - 8080:80 environment: - REGISTRY_TITLE=MyRegistry - REGISTRY_URL=http://registry:5000 depends_on: - registry
接着输入命令
docker-compose up -d
然后访问端口http://YOURIP:8080
配置docker信任地址
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
# 打开要修改的文件 vi /etc/docker/daemon.json # 添加内容: "insecure-registries":["http://111.73.46.209:8080/"] "insecure-registries":["http://192.168.200.130:5000"] # 重加载 systemctl daemon-reload # 重启docker systemctl restart docker