docker常用命令
镜像相关指令:
从服务拉取镜像:
docker pull nginx
查看镜像:
docker images
导出镜像到磁盘:
docker save -o [保存的目标文件名称] [镜像名称]
例:
docker save -o nginx.tar nginx:latest
删除本地的nginx镜像:
docker rmi nginx:latest
使用docker load加载镜像:
docker load -i nginx.tar
容器相关指令:
创建一个容器并运行:
docker run --name mn -p 80:80 -d nginx
命令解读:
-
docker run :创建并运行一个容器
-
--name : 给容器起一个名字,比如叫做mn
-
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-
-d:后台运行容器
-
nginx:镜像名称,例如nginx
这里的-p
参数,是将容器端口映射到宿主机端口。
默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。
现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:
查看容器日志:
docker logs -f?[容器的名字]
添加? -f 参数可以持续查看日志
查看容器状态:
docker ps
加上 -a 查看所有的容器包括已经停止的。
删除指定容器:
docker -f?rm 容器名字
加-f 强制删除
进入容器执行命令:?
docker exec -it mn bash
命令解读:
-
docker exec :进入容器内部,执行一个命令
-
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
-
mn :要进入的容器的名称
-
bash:进入容器后执行的命令,bash是一个linux终端交互命令
退出容器命令:
exit
暂停容器:
docker pause 容器名字或者ID
取消暂停容器:
docker unpause 容器名字或者ID
停止容器运行:
docker stop 容器名字或ID
启动容器运行:
docker start 容器名字或ID
数据卷的相关指令:
创建数据卷:
docker volume create 数据卷名字
查看所有数据卷:
docker volume ls
查看指定数据卷的信息:
docker volume inspect 数据卷名字
移除指定数据卷:
docker volume rm 数据卷名字
移除未使用的数据卷:
docker volume prune
数据卷挂载方式:
创建nginx容器并挂载数据卷html到容器内的HTML目录:
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
自定义镜像
镜像结构:
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
以MySQL为例,镜像的组成结构:
简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
基于java8构建Java项目
构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。
需求:基于java:8-alpine镜像,将一个Java项目构建为镜像
步骤:
-
① 新建一个空的目录docker-demo,然后在目录中新建一个文件,命名为Dockerfile
-
② 拷贝Java项目的jar包到这个docker-demo目录中
-
③ 编写Dockerfile文件:内容如下:
# 指定基础镜像
FROM java:8-alpine
# 将app.jar拷贝到镜像中
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
-
④ 进入docker-demo目录中,使用docker build命令构建镜像 (注意后面有个“点”)javaweb:2.0是创建的镜像的名字和版本,此后镜像就创建好了,可以docker images查看。
?docker build -t javaweb:2.0 .
-
⑤ 使用docker run创建容器并运行
-
docker run --name web -p 8090:8090 -d javaweb:2.0
Docker-Compose
?Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
初识DockerCompose
Compose文件格式如下:
它是个yml文件:
上面的Compose文件就描述一个项目,其中包含两个容器:
-
mysql:一个基于
mysql:5.7.25
镜像构建的容器,并且挂载了两个目录 -
web:一个基于
docker build
临时构建的镜像容器,映射端口是8090
DockerCompose的详细语法参考官网:Overview | Docker Docs
其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。
安装DockerCompose
下载:
第一种:在github下载,比较慢。
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
第二种:
链接:https://pan.baidu.com/s/1Cl9AasCAMmxSu-ICTDZvAQ?pwd=8j3o?
提取码:8j3o
上传到/usr/local/bin/
目录
修改文件权限
chmod +x /usr/local/bin/docker-compose
Base自动补全命令:
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
可以通过命令: docker-compose logs -f 查看所有日志。若后面跟上服务名,查看服务的日志。
Docker 镜像仓库:
搭建私有镜像仓库:
??1,配置Docker信任地址???????
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容,地址是私有镜像仓库的地址 注意是否要添加逗号:
"insecure-registries":["http://192.168.88.128:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
这里添加的内容中的地址就是虚拟机的ip 和仓库的端口。添加时注意逗号。
2,使用DockerCompose部署带有图象界面的DockerRegistry
首先创建一个文件夹例如:
然后在里面创建文件: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文件:
docker-compose up -d
就可以在:ip地址:8080端口? (私有仓库的地址)? 打开了
里面还没有镜像。
推送拉取镜像:
推送镜像到私有镜像服务必须先tag,步骤如下:
意思就是给镜像重命名:
① 重新tag本地镜像,名称前缀为私有仓库的地址:192.168.88.128:8080/
docker tag nginx:latest 192.168.88.128:8080/nginx:1.0
② 推送镜像
docker push 镜像名字:版本
③ 拉取镜像
docker pull?镜像名字:版本
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!