简介
Docker 是基于Go语言实现的开源容器项目,运行于Linux和windows上的软件,用于创建、管理和编排容器
官网
Docker的基本概念
镜像(Image)
是一个只读模板,用来运行Docker容器。
- 容器(Container)
负责应用程序的运行,包括操作系统、用户添加的文件以及元数据 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
- 仓库(Repository)
仓库是集中存放镜像文件的场所。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
Docker的安装和启用
1、为yum源添加docker仓库位置
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2、没有安装yum-config-manager这个命令,先安装
yum -y install yum-utils
3、安装docker
yum install docker-ce
4、启动docker
systemctl start docker
docker 开启远程访问
1、编辑文件
vi /lib/systemd/system/docker.service
2、在文件以下行的后面添加-H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd
3、重启docker网络并重启docker,即可进行远程API调用
systemctl daemon-reload
systemctl restart docker
docker的基本命令
查找已有容器zookper并启动
docker search zookeeper
docker pull zookeeper
docker run -d -p 2181:2181 zookeeper
docker ps
软件安装
mysql
#下载镜像
docker pull mysql:5.7
#创建实例并启动
docker run -p 3306:3306 --name mysql
-v /home/mysql/log:/var/log/mysql
-v /home/mysql/data:/var/lib/mysql
-v /home/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7 --lower_case_table_names=1
## 参数说明
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
## 通过容器命令行连接
docker exec -it mysql mysql -uroot -proot
## 设置远程访问
grant all privileges on . to 'root' @'%' identified by 'root'; flush privileges;
redis
##下载镜像文件
docker pull redis:3.2
##建实例并启动
docker run -p 6379:6379 --name redis -v /home/redis/data:/data -d redis:3.2 redis-server --appendonly yes
##使用redis镜像执行redis-cli命令连接
docker exec -it redis redis-cli
gitlab
## 拉镜像
docker pull twang2218/gitlab-ce-zh(汉化版)
## 启动
docker run --detach --hostname 114.115.169.237 --publish 443:443 --publish 80:80 --publish 8888:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
## 参数说明
--detach: 设置容器后台运行
--hostname: 设置容器的 hostname
--publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,8888:主机的 ssh 访问端口,22:Docker 容器中 ssh 访问端口)
--name:容器名称
--restart always:每次启动容器就重启GitLab
--volume: 共享目录挂载,即 docker 容器内外数据共享(/srv/gitlab/data: 应用程序数据,/srv/gitlab/logs:GitLab 的 log,/srv/gitlab/config:GitLab 的配置文件)
##安装成功之后,修改文件(默认22修改为8888)
vim /srv/gitlab/config/gitlab.rb
(gitlab_rails['gitlab_shell_ssh_port'] = 8888)
## 配置修改后,就可以重启 Gitlab 容器了:
docker restart gitlab
rabbitmq
下载镜像文件
docker pull rabbitmq:management
创建实例并启动
docker run -d --name rabbitmq --publish 5671:5671
--publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672
rabbitmq:management
制作镜像
编写dockerfile文件
把dockerfile文件和要部署jar报(或项目放在一起)比如以下为dockerfile的内容
FROM nginx
ENV LANG en_US.UTF-8
ADD dist/ /usr/share/nginx/html/
EXPOSE 80
EXPOSE 443
执行以下命令
在其目录执行以下命令(制作名字为yuan的镜像),..表示执行命令下的dockefile文件,如果要指定文件,把.换成目录路径
docker build -t yuan .
运行镜像生成容器
docker run -p 88:80 -d yuan