命令解析:docker --help
通过该命令可以查询到所有的docker操作命令,
通过docker 命令 --help可以查看某个命令的详细信息
案例:从DockerHub中拉取一个nginx镜像并查看
步骤一:访问dockerHub的官方网址:https://hub.docker.com/
步骤二:搜索nginx,根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
如果pull后面不增加版本号,默认拉去最新的版本
步骤三:通过命令:docker images查看已安装的镜像
利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
步骤一:利用docker xx --help命令查看docker save和docker load的语法
步骤二:使用docker save导出镜像到磁盘
步骤三:,先使用docker rmi删除nginx使用docker load加载镜像
容器相关命令
创建运行一个Nginx容器
docker run --name containerName -p 80:80 -d nginx
使用该命令生成用于标识容器的唯一id
警告:如果游览器访问失败,请注意
:我的是阿里云服务器+CenOS8systemctl unmask firewalld #执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
方法二:配置服务器的安全组
进入阿里云,选择云服务器ECS
docker exec -it mn bash
cd /usr/share/nginx/html
sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's###g' index.html
案例:
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
docker pull mysql:8.0
docker run \
--name mysql \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=12345 \
-d mysql:8.0
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
自定义镜像文件包:
链接:https://pan.baidu.com/s/128FRCwlL5NZnZ08zqLIEhQ?pwd=t8xs
提取码:t8xs
Dockerfile的内容如下:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
将以上文件下载下来,放置到temp/cloud-demo文件夹内
运行该命令创建镜像:docker build -t javaweb:1.0 .
查看并基于镜像运行容器
访问项目测试 : 通过ip+端口+接口路径访问项目
简便版本:
将Dockefile文件内容改成:
# 指定基础镜像
FROM java:8-alpine
# 拷贝jdk和java项目的包
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
使用该命令启动:docker build -t javaweb:2.0 .
在使用该命令运行容器:docker run --name web -p 8090:8090 -d javaweb:2.0
作用:帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。
安装请看这里:
链接:https://pan.baidu.com/s/14llDeYp8LqmttuMv9NKdyg?pwd=7ef3
提取码:7ef3
nacos启动过于慢,建议先部署nacos,或者启动其他服务
docker-compose restart userservice gateway orderservice
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
sh 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 可以查看当前私有镜像服务中包含的镜像
由于我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
vi /etc/docker/daemon.json
添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
重加载:systemctl daemon-reload
重启docker:systemctl restart docker
在tmp目录下新建registry-ui目录,新建一个docker-compose.yml文件夹,修改该文件
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=传智教育私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
使用以下命令启动:docker-compose up -d
访问:http://47.92.165.116/8080
上传镜像