docker笔记

概念上对比区分:物理机、虚拟机、容器

物理机相当于别墅,虚拟机相当于大楼,容器相当于胶囊房。

一个容器上只有一个服务,可移植性强;镜像作为标准的交付件,可在开发、测试、生产环境上以容器来运行,最终实现三套环境上的应用及依赖内容完全一致。

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到热河流行的Linux机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker的三个概念:镜像、容器、仓库

镜像(Image):相当于一个root文件系统;镜像是用于创建容器的模板;

容器(Container):镜像和容器类似于类和实例,镜像是静态的定义,容器是镜像运行时的实体

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

centos7安装docker 18.06.1-ce

centos-release-7-7.1908.0.el7.centos.x86_64

0、卸载旧版本,基本第一次安装可以忽略该步骤

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

1、安装依赖包

yum install -y gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2

设置稳定的仓库

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

更新yum软件包索引

yum makecache fast

2、安装

从高到低列出Docker-ce的版本

yum list docker-ce.x86_64  --showduplicates | sort -r

安装指定版本,本次选择18.06.1.ce-3.el7

yum install -y docker-ce-18.06.1.ce-3.el7  docker-ce-cli-18.06.1.ce-3.el7 contained.io

3、测试docker,查看版本号

docker version

概念:Docker是一个开源的应用容器引擎,可移植的容器。一个完整的docker有以下几个部分组成:

1、DockerClient客户端

2、Docker Daemon守护进程

3、Docker Image镜像

4、DockerContainer容器

通过镜像来创建容器,镜像相当于类,容器相当于对象

Docker和VMware虚拟机相比,

Docker容器常用命令:

一、容器使用

启动Docker:systemctl start docker

通过运行hello-world映像验证是否正确安装了Docker Engine-Community:docker run hello-world

查看容器状态:docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d4b5a376f8a8        ubuntu              "/bin/bash"         10 seconds ago      Up 10 seconds                           optimistic_perlman

CONTAINED ID:容器ID

IMAGE:使用的镜像

CREATED:容器创建的时间

STATUS:容器状态

共有其中状态:created(已创建)、restarting、running/up、removing(迁移中)、paused、exited(停止)、dead

PORTS:容器的端口信息和使用的连接类型(tcp\udp)

NAMES:自动分配的容器名称

查看容器内标准输出:docker logs 容器id/容器names

查看所有容器:docker ps -a

启动容器:docker run -itd   容器名称

i:交互式操作;t:终端;d:后台启动

进入容器:

docker attach   退出会导致容器停止

docker exec(推荐使用,退出不会导致停止容器)

导出和导入:

docker export  容器id  >  name.tar  导出容器快照到本地文件

cat docker/name.tar | docker import - test/ubuntu:v1     将快照文件name.tar导入到镜像text/ubuntu:v1

删除容器:docker rm -f 容器id

清理 所有处于终止状态的容器:docker container prune

运行一个web应用

    载入镜像:docker pull  training/webapp

    启动:docker run -d -P training/webapp python app.py            -P将容器内部的网络端口随机映射到使用的主机上

        或者自定义映射端口:docker run -d -p 8083:5000 training/webapp python app.py

查看容器端口映射情况:docker port   容器id/容器名称

查看日志:docker logs -f 容器id/names  滚动看日志

docker rm 移除容器只能移除停止状态的容器

二、镜像使用

镜像列表:docker images

下载镜像:docker pull  ubuntu:13.10

查找镜像:docker search httpd

删除镜像:docker rmi hello-world

创建镜像:docker build,需要先创建一个Dockerfile文件,包含以下内容

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

然后创建:docker build -t runoob/centos:6.7 .                     t指定镜像名   指定Dockerfile所在目录

为镜像添加一个新的标签:docker tag 镜像id centos:dev

更新镜像:创建一个容器docker run ,docker commit来提交容器副本    -m 描述 -a 作者  容器id  目标镜像名称(名称:版本)

三、Docker仓库     Docker Hub

登录/登出     docker login/logout

搜索:docker search

下载:docker pull ubuntu

推送:docker push username/ubuntu:dev

四、Dockerfile,定制镜像

新建Dockerfile文件,内容如下:

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

FROM:定制的镜像都是基于FROM的镜像,这里的nginx就是定制需要的基础镜像,后续的操作都是基于nginx.

RUN:用于执行后面跟着的命令行命令,有以下两种格式:

      shell格式:RUN <>

      exec格式:RUN ["可执行文件","参数1","参数2"]             RUN ./test.php dev offline

Dockerfile的指令每执行一次都会在docker上新建一层,可以使用&&连接符连接命令使之在同一层,避免过多无意义的层。

从容器中复制文件到系统,和普通的cp区别不大,容器的目录加了id/name:即可

docker cp 容器id/name:目录  系统目录

nginx

#自动生成的nginx.conf文件中指明了默认的配置,需要关掉  #include /etc/nginx/conf.d/*.conf;
docker run --name nginx81 -p 81:81 -v /bdl/docker/nginx/html/:/usr/share/nginx/html -v /bdl/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /bdl/docker/nginx/logs:/var/log/nginx  -d nginx:1.14.2

mysql

docker run --name mysql -p 3306:3306 -v /bdl/docker/mysql/conf:/etc/mysql/conf.d -v /bdl/docker/mysql/logs:/var/log/mysql -v /bdl/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

redis

docker run -it --name redis -p 6379:6379 -d redis

docker部署springboot项目

Dockerfile文件,chmod +X 权限;应用jar包;tmp文件夹

# Dockerfile内容
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar
ADD wtf.jar app.jar 
ENTRYPOINT ["java","-jar","/app.jar"]  

当前目录镜像构建
docker build -t xxl-job . 

docker镜像离线打包部署

docker容器转镜像

# 将容器CONTAINER ID为6a4adf295f49 ,做成镜像,并命名为xxl-job-admin/1.0
docker commit 6a4adf295f49 xxl-job-admin/1.0
# 打包镜像xxl-job-admin/1.0到当前文件并命名为xxl-jab-admin1.0.jar
docker save -o xxl-jab-admin1.0.jar xxl-job-admin/1.0

导入镜像

# 导入镜像
docker load < xxl-jab-admin1.0.jar
# 查看镜像
docker images

# 运行容器
docker run --name xxl-job -p 8080:8080 -d xxl-job-admin/1.0
# 启动
docker start xxl-job-admin/1.0

docker常用命令

docker ps 
docker images
docker build -t name .
docker run --name mysql -p 3306:3306 -v /bdl/docker/mysql/conf:/etc/mysql/conf.d -d mysql:5.7.28
docker stop mysql
docker start mysql
docker container prune
docker rm mysql
docker rmi mysql:5.7.28
docker logs mysql
docker exec -it mysql bash
docker search  mysql
docker pull mysql:5.7.28
docker inspect mysql

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值