【一篇文章学会Docker】

2 篇文章 0 订阅
1 篇文章 0 订阅

什么是docker

Docker是一个快速交付应用、运行应用的技术

  1. 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统。
  2. 运行时运用沙箱机制形成隔离容器,各个应用互不干扰
  3. 启动、移除都可以通过一行命令完成,方便快捷

docker与虚拟机

  1. docker是一个系统进程;虚拟机是在操作系统中的操作系统
  2. docker体积小,启动速度快、性能好;虚拟机体积大,启动速度慢,性能一般

镜像和容器

镜像(Image)

docker将应用程序及其所应用的依赖、函数库、环境、配置等文件打包到一起,称为镜像

容器(Container)

镜像中的应用程序运行后的进程就是容器,只是docker会给容器做隔离,对外不可见

Docker架构

docekr是一个cs架构的程序,由两部分组成:

  • 服务端(server)
    docker守护进程,负责处理docker的指令,管理镜像、容器等
  • 客户端(client)
    通过命令或restapi向docker服务端发送命令。可以在本地或远程向服务端发送命令。

Centos7安装Docker

卸载老版本

如果之前安装过旧版本的docker,可以先卸载

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

安装Docker

需要虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

更新本地镜像源

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

输入命令

yum install -y docker-ce

关闭防火墙

docker应用需要用到两个端口,逐一去修改防火墙设置。非常麻烦,所以自己玩的话,建议直接关闭防火墙。

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

启动docker

systemctl start docker

配置docker的镜像加速

打开aliyun.com,登录,点击控制台----搜索‘容器镜像服务’-------点击‘镜像工具’-----镜像加速器----操作文档----centos

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ctmq6649.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker基本操作

镜像相关命令

  • 镜像名称一般分为两部分:[repository]:[tag]
  • 在没有指定tag时,默认时latest,代表的是最新版本的镜像
    在这里插入图片描述

拉取镜像

去dockerhub上,搜索nginx,用pull命令拉取镜像

docker pull nginx

安装打包好的镜像

做好的镜像,想分享给其他人 ,可以通过docker save命令把镜像做成压缩包,然后给其他人,其他人通过docker load命令安装

打包镜像
# 镜像打包成tar文件
docker save -o nginx.tar nginx:latest
加载镜像
docker load -i nginx.tar

容器相关命令

在这里插入图片描述

docker run

docker run --name redis-test -p 6379:6379 -d redis:latest
–name指定容器名称
-p指定端口映射
-d让容器后台运行

docker logs

docker logs 
-f可以持续查看日志

数据卷

docker volume [command]

create创建一个volume
inspect显示一个或多个volume信息
ls列出所有的volume
prune删除未使用的volume
rm删除一个或多个volume

挂载数据卷

创建容器时,可以用-v参数挂载一个数据卷到某个容器目录

# -v 是把数据卷 html  挂载到/root/html这个目录下
docker run --name nginx -v html:/root/html -p 6379:6379 nginx 

安装mysql

#拉取镜像
docker pull mysql
#创建目录及配置文件
mkdir -p /var/mysql/data
mkdir -p /var/mysql/conf
#自己的mysql的配置文件,配置自己补充
vi /var/mysql/conf/my.cnf
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000

#运行镜像
docker run \
	--name mysql \
	-v /var/mysql/data:/var/lib/mysql \
	-v /var/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
	-p 3306:3306 \
	-e MYSQL_ROOT_PASSWORD=123456 \
	-d \
	mysql
#设置外网可以访问	
# 进入mysql中设置密码
docker exec -it mysql /bin/bash
mysql -uroot -p
#输入密码后回车,进入mysql
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;

Dockerfile自定义镜像

镜像是分层结构,每一层称为一个layer

  • BaseImage:包含基本的系统函数库、环境变量、文件系统
  • Entrypoint:入口,是镜像中应用启动的命令
  • 其它:在BaseImage的基础上添加依赖、安装程序、完成整个应用的安装和配置

什么是Dockerfile

Dockerfile是一个文本文件,其中包含一个个的指令,用指令来说明执行什么操作来构建镜像。每个指令都回形成一个layer

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY考本本地文件到镜像的指定目录COPY ./mysql-5.7.rpm /tmp
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTERPOINT镜像中应用的启动命令,容器运行时调用ENTERPOINT java -jar xxxx.jar

Dockerfile文件

#指定基础镜像
FROM centos:7.5
#配置环境变量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 ./jdk.1.8.0_144 ./java8
	
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

#暴露端口
EXPOSE 8090
# 入口 Java项目的启动命令
ENTERPOINT java -jar /tmp/app.jar

另外

别人已经弄好了安装好Java8后的镜像,我们可以直接拿来用,所以上面的Dockerfile可以改成

#拉取别人弄好的Java环境镜像
FORM java:8-alpine
#拷贝Java项目到指定的目录
COPY ./docker-demo.jar /tmp/app.jar

#暴露端口
EXPOSE 8090
# 入口 Java项目的启动命令
ENTERPOINT java -jar /tmp/app.jar

DockerCompose

什么是DockerCompose?

  • DockerCompose可以基于Compose文件帮我们快速部署分布式应用,而无需手动一个个创建和运行容器
  • Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。

安装DockerCompose

下载docker-compose

curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

给docker-compose执行权

chmod +x /usr/local/bin/docker-compose

配置Base自动补全名命令

#修改hosts文件
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
#
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/base/docker-compose > /etc/bash_completion.ddocker-compose
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值