Docker学习分享
·
我们写的代码经历三个环境:开发环境,测试环境,生产环境;三个环境使用的人不同,为了确保开发,测试,生产一致,我们引入了Docker
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
镜像和容器的关系:
1. 当我们利用docker安装应用时,docker会自动搜索并下载应用的镜像(image).镜像不仅包含应用本身,还包含应用运行所需要的环境,配置,系统函数库.Docker会在运行镜像时创建一个隔离环境,称为容器(container)
2. 镜像类似于一个模具,容器就是制作出来的糕点
- 镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:Docker Hub
客户端Client执行docker run命令,Docker Server的docker daemon守护进程监听到之后,就去镜像仓库拉取镜像images,运行的时候创建一个隔离的环境container
常用命令
一图理解docker常用命令
# 从镜像仓库拉取镜像到本地
docker pull
# 查看所有本地镜像
docker images
# 删除镜像(remove image)
docker rmi
# 自定义镜像(打包)
docker build
# 拉取别人的镜像
# 方法1 将打包的镜像保存到本地,变成一个压缩文件
docker save
# -o是起名字 将最新版本的nginx镜像压缩成名为nginx的压缩包
docker save -o nginx.tar nginx:latest
# 将压缩文件加载到镜像中
docker load
#方法2 推到镜像仓库
docker push
# 创建并运行容器,一条龙服务,此时容器处于运行中状态
docker run
# 停止容器-->就是停止容器中某个进程
docker stop
# 重新启动容器-->将容器内部停掉的进程重新启动
docker start
# 查看当前容器的运行状态(process status)
docker ps
# 查看所有的容器(包括运行完被停掉的)
docker ps -a
# 删除容器
docker rm
# 查看容器日志
docker logs
# -f持续输入
docker -f logs nginx
# 进入到某个容器内部(execute)
docker exec
# -it添加一个可输入的终端,在里面可以使用ls命令
docker exec -it nginx bash
docker run和docker start:
- docker run 每次都会启动并创建一个容器
- docker start 是重新打开的停掉的容器
如果有不明白参数的命令,可以通过--help来查看
给常用docker命令起别名,方便我们访问:
# 进入vim编辑器
vi ~/.bashrc
#内容如下
alias rm='rm-i'
alias cp='cp-i'
alias mv='mv-i'
alias dis='docker images'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
然后,执行命令重新启动使别名生效
source ~/.bashrc
- docker run 创建并运行一个mysql容器
docker run #创建并运行一个容器
docker run -d \ #让容器在后台运行,前台可以干其他的东西
--name mysql \ # 给容器起名字,必须唯一
-p 3306:3306 \ #设置端口映射;宿主机端口:容器内端口
-e TZ=Asia/Shanghai \ #设置环境变量
-e MYSQL_R00T_PASSWORD=123 \
mysql #指定运行的镜像的名字
镜像名称一般分为两部分:[repository]:[tag],其中,repository是镜像名,tag是镜像版本,比如mysql:5.7
如果没有指定tag,默认是latest,代表最新版本的镜像
数据卷(volume) 是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁

想去修改Nginx容器中的conf文件,可以直接在宿主机中利用vim等编辑器修改,间接关联到docker中conf
# 创建数据卷
docker volume create
# 查看所有数据卷
docker volume ls
# 删除制定数据卷
docker volume rm
# 查看某个数据卷的详情-->可用于查看数据卷在宿主机的位置
docker volume inspect
# 清除数据卷
docker volume prune
创建容器并挂在数据卷(数据卷挂载只能在创建容器的时候进行)
数据卷挂载只能在创建容器的时候进行
当创建容器时,如果数据卷不存在,会自动创建数据卷(没有指定名字,称为匿名卷);
也可以自己手动创建数据卷(docker volume create),然后在创建容器的时候使用这个已经存在的数据卷
# 创建容器并挂在数据卷
docker run -v 数据卷:容器内目录
更多推荐


所有评论(0)