docker安装与常用命令

1.docker安装

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

1.docker安装

a.卸载旧版本的docker

$  yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

b.安装所需要的安装包

$ yum install -y yum-utils

c.设置镜像仓库

$  yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

d.更新yum包索引

$ yum makecache fast

e.安装docker相关(dokcer-ce-社区版 -ee 企业版)

$ yum install docker-ce docker-ce-cli containerd.io

f.启动docker

$ systemctl start docker

d.测试是否安装成功

$ docker version

e.测试helloworld

$ docker run hello-world

f.查看helloworld是否启动成功

$ docker images

e.(了解)卸载docker

$ yum remove docker-ce docker-ce-cli containerd.io   卸载依赖
$ rm -rf /var/lib/docker  删除资源(docker默认资源目录)

2.阿里云镜像加速

阿里云镜像服务有详细教程

3.docker的常用命令

帮助命令

docker version  #显示dokcer的版本信息
docker info     #显示docker系统信息,包括镜像和容器的数量
docker 命令 --help  #帮助命令

镜像命令

docker images  #查看主机上所有的镜像
#可选项
  -a, --all      #列出所有镜像
  -q, --quiet    #只显示镜像id
docker search mysql  #在docker hub 搜索镜像
#可选项
  --filter=STARS=3000  #搜索3000以上点赞的镜像

docker pull mysql  #下载最新版的镜像
docker pull mysql:5.7 #下载指定版本的镜像
docker rmi -f 容器id  #通过镜像id删除镜像
docker rmi -f 容器id 容器id 容器id  #通过镜像id删除多个镜像
docker rmi -f $(docker images -aq)  # docker images -aq 查出当前所有的镜像
#删除所有的镜像

容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos来测试学习

#拉取centos最新镜像
docker pull centos
#新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" #指定容器名字,可以区分容器
-d            #后台方式启动
-it           #交互模式启动,可以进入容器与容器交互,查看容器内容
-p            #指定容器端口 -p 8080:8080
   -p ip:主机端口:容器端口
   -p 主机端口:容器端口  (常用)
   -p 容器端口
   容器端口
-P            #随机指定端口运行 


#交互模式启动容器并进入容器
docker run -it --name="one" centos /bin/bash
#查看正在运行的容器
docker ps

#查看正在运行的容器和运行过的容器
docker ps -a

#查看醉经创建的容器(可以指定条数)
docker ps -a -n=1


#查看醉经创建的容器(可以指定条数)
docker ps -a -n=1
 -q 只显示容器id
#容器停止并退出(在容器内使用)
exit
#容器不停止并退出(在容器内使用)
Ctrl + P + Q
#删除容器(不能删除正在运行的容器)
docker rm 容器id
#删除所有容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm

启动,停止和重启容器

docker start 容器id  #启动容器
docker stop  容器id  #停止容器
docker restart 容器id  #重启容器
docker kill 容器id   #杀死容器

常用的其他命令
后台启动容器

docker run -d 容器名字  #后台启动容器 ---问题:启动之后查询正在运行的容器,发现其停止了
#原因:docker后台运行必须有一个前台应用,不然docker发现没有应用就会停止该容器:如---》后台启动nginx,发现没有提供服务,便“自杀了”

查看日志

docker logs -f -t -tail 10 容器id  #查询指定容器的前十条日志
# -f 查看全部日之
# -t 显示时间戳
# -tail 指定显示的日之条数

查看容器内部的进程信息

docker top 容器id

查看镜像源数据

docker inspect

进入当前正在运行的容器

#我们都是通过后台方式启动容器的,需要进入容器修改有些配置

#命令
#方式一
docker exec -it 容器id /bin/bash
#方式二
docker attach 容器id
#区别
docker exec    进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach  进入容器正在运行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id:/容器路径/文件名称 /主机路径
#拷贝是一个手动操作,未来我们使用 -v 卷的技术可以实现自动同步 比如容器内的/home和主机的/home同步

commit镜像

docker -a="作者" -m="提交信息说明" 容器id 容器名字:版本号

3.docker数据卷技术

简述:简而言之就是容器的持久化技术和和同步操作,容器间可以共享数据

docker run -it -v 主机目录:容器内目录 镜像名称 /bin/bash

#这样启动相当于把主机目录和容器内的目录相互绑定起来
#我们以后修改配置文件可以直接在主机内修改,修改之后会自动同步到容器内部

实战mysql
1.思考MySQL持久化的问题
a.获取镜像

docker pull mysql:5.7

注意:
1.运行容器。需要做数据挂载
2.运行容器,需要指定数据库密码

官方运行命令
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

启动我们的mysql

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name="mysqltest" mysql:5.7

# -d 是指定后台运行
# -p 指定与主机映射的端口号
# -v 指定容器卷的挂载目录(支持多个)
# -e 追加参数(MYSQL_ROOT_PASSWORD------指定mysql的用户名和密码)

启动成功之后,即可连接测试

具名挂载和匿名挂载
1.匿名挂载

-v 容器内路径

# 只指定了容器内部的目录,没有指定容器外的路径
docker run -d -P --name="nginx01" -v /etc/nginx nginx

#查看所有卷的列表
docker volume ls
#查看所有卷的详细信息(包括路径)
docker volume inspect 卷名 

2.具名挂载

#只指定了容器内部的目录和卷的名字,没有指定容器外的路径
docker run -d -P --name="nginx01" -v 卷名:/etc/nginx nginx

**所有没有指定主机目录的情况下都是存在
/var/lib/docker/volumes/卷名/_data

在这个目录,我们通过具名挂载可以很方便的找到我们的卷,并且是我们大多数时间使用的
**

拓展

# 通过 -v 容器内的路径:ro  rw 改变读写权限
# ro read only 只读
# rw read write 可读可写  -- 默认的
docker run -d -P --name="nginx01" -v 卷名:/etc/nginx:ro nginx
docker run -d -P --name="nginx01" -v 卷名:/etc/nginx:r2 nginx
#ro 看到ro就说明容器内的这部分内容是无法操作的,只能通过主机来操作这些数据

数据容器卷
实现多个mysql数据同步!!!!!!!!!!!!!!!
在这里插入图片描述

3.DockerFile

dockerfile是用来构建镜像的文件!是命令参数脚本
构建步骤
1.编写一个dockerfile文件
2.docker bulid 构建一个镜像
3.docker run 启动一个镜像
4.docker push 发布一个镜像(可以发布到dockerhub 或者 阿里云镜像仓库)

注意:官方很多镜像都是基础镜像,如centos,很多功能都没有,我们也可以自己制作自己所需要的镜像
如:我们搭建java环境 ---- 需要centos+jdk+mysql+redis等等,我们就就可以通过dockerfile来直接构建我们自己的镜像

a.dockerfile构建过程
基础知识 :
1.每个保留关键字(指令)都必须是大写
2.执行顺序都为从上往下
3.# 表示注释
4.每一个指令都会提交一个新的镜像层,并提交
在这里插入图片描述
docker是面向开发的,我们以后需要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单

步骤 开发,部署,运维缺一不可
DockerFile : 构建文件,定义了一切步骤,相当于源代码
DockerImages :通过dockerfile生成的镜像,最终发布和运行的产品
Docker容器: 容器是镜像运行起来提供服务的

b.DockerFile的指令
在这里插入图片描述
FROM #基础镜像,一切从这里开始
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像构建时需要运行的命令
ADD #步骤:tomcat镜像,这个镜像的压缩包,添加内容
WORKDIR #镜像的工作目录
VOLUME #镜像挂载数据卷的目录
EXPOST #保留端口配置
CMD #指定这个容器启动时需要运行的命令,只有最后一个生效,会被替代
ENTRYPOINT #指定这个容器启动时需要运行的命令,可以追加命令
ONBULID #当构建一个被继承的dockerfile ,这个时候会运行ONBULID的指令,触发指令
COPY #类似ADD,将我们的文件拷贝到镜像中
ENV #构建的时候配置环境变量

实战测试1
1.创建一个自己的centos

vim mydockerfile
FROM centos
MAINTAINER zhangshuai<852096130@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools


EXPOSE 80

CMD echo $MYPATH
CMD echo "--- end -----"
CMD /bin/bash

2.通过这个文件来构建我们的镜像

docker build -f dockerfile文件路径 -t 指定生成的镜像名:[版本] .
# -f 指定构建的dockerfile文件
# -t 指定生成的镜像名字【版本】
#############  最后有一个  .   别忘记了 

3.测试运行

4.查看docker镜像的构建历史

docker history 镜像ID
#可以查看镜像的详细构建过程

实战测试2
安装tomcat镜像
1.准备镜像文件tomcat压缩包和jdk压缩包
2.编写dockerfile文件

FROM centos
MAINTAINER zhangshuai<852096130@qq.com>

COPY readme.text /usr/local/readme.text

ADD jdk-8u161-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

RUN yum -y install vim


ENV  MYPATH /usr/local
WORKDIR $MYPATH


ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin


EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usl/local/apache-tomcat-9.0.22/bin/logs/catalina.out

3.构建镜像
**编写Dockerfile时,官方命名是Dockerfile,build会自动寻这个文件,就不需要- f指定dockerfile文件了
**

docker build -t 指定镜像名字:版本

4.启动镜像

docker run -d -p 9090:8080 --name zhangshuaitomcat4 -v /home/zhangshuai/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/zhangshuai/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.22/logs mytomcat

3.发布自己的镜像

A.提交到dockerhub
1.进入dockerhub登陆自己的账号(如果没有就注册)
2.在服务器上登陆自己的账号

docker  login -u 你的账号  你的密码

3.提交我们的镜像

docker push 作者名字/镜像名字:版本号 



docker tag b06b6c11ff07 zhangshuai/tomcat:1.0
#更改镜像的名字和版本 

A.提交到阿里云镜像服务
1.登陆阿里云
2.找到容器镜像服务
3.创建命名空间
4.创建容器镜像
5.发布镜像

1. 登录阿里云Docker Registry
$ sudo docker login --username=852096130zs registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/zhangshuai-mingming/zhangshuainiubi:[镜像版本号]
3. 将镜像推送到Registry
$ sudo docker login --username=852096130zs registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zhangshuai-mingming/zhangshuainiubi:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/zhangshuai-mingming/zhangshuainiubi:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ sudo docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。

$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

小结

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值