Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
rpm -qa|grep docker
检查是否有安装,有默认安装的话先卸载yum remove docker docker-common docker-selinux docker-engine
yum install docker-ce
安装dockeryum install -y yum-utils device-mapper-persistent-data lvm2
安装docker需要的依赖yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加阿里源(如果已经添加可能会安装失败,可以删除这个源后再安装)yum makecache fast
更新索引yum install -y docker-ce
安装dockersystemctl start docker
启动dockerdocker info
验证是否安装成功相关指令操作
1、启动docker:# systemctl start docker
2、停止docker:# systemctl stop docker
3、查看docker状态:# systemctl status docker
4、开机自启动:# systemctl enable docker
5、取消开机自启动:# systemctl disable docker
6、查看docker概要信息:# docker info
systemctl enable docker
vi /etc/docker/daemon.json
systemctl daemon-reload | systemctl restart docker
重启dockerdocker pull busybox
拉去一下测试速度docker run busybox echo “hello world”
这里有几个其它的加速器,只要替换上面的地址即可
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
apt-get remove docker docker-engine docker-ce docker.io
删除默认安装的dockerapt-get update
更新 apt 包索引。apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
安装 apt 依赖包curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加Docker官方的GPG密钥apt-key fingerprint 0EBFCD88
验证您现在是否拥有带有指纹的密钥add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
设置稳定版仓库apt-get update
再次更新索引包apt-get install docker docker-compose docker-containerd docker-doc docker-runc docker.io
安装最新版本的 Docker Engine-Community 和 containerdapt --fix-broken install
可解决systemctl start docker
docker info
验证是否安装成功systemctl enable docker
开机自启docker search mysql
查找镜像(建议直接装mariadb)
docker pull mysql:5.7
配置阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://te3tcj96.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
结果一直报超时,不管用阿里的加速器,中科大,网易或者daocloud的都不行,搞了好久,还改了hosts文件什么的,都不行。。。。。。
众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
直接去阿里云镜像服务搜,mysql就行,然后直接运行你搜出来的公网地址
docker pull registry.cn-shenzhen.aliyuncs.com/mysql-55-rhel7/mysql
搞定o(╥﹏╥)o
docker run --name mysql -p 3306:3306 \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mariadb
–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
-d:源镜像名,此处为docker images后的容器名
docker run --name mariadb -p 3306:3306 \
-v /usr/local/docker/mariadb/conf:/etc/mariadb \
-v /usr/local/docker/mariadb/logs:/var/log/mariadb \
-v /usr/local/docker/mariadb/data:/var/lib/mariadb \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mariadb
firewall-cmd --add-port=3306/tcp --permanent
添加3306端口到防火墙可通行firewall-cmd --reload
保存docker ps -a
获取mariadb的容器iddocker stop [容器id]
docker exec -it mariadb /bin/bash
root@b683296cd91e:/# mysql -uroot -p
Enter password:
systemctl stop docker
cd /var/lib/docker/containers/
docker ps -a
根据容器id找到对应的文件夹cd b683296cd91e249d73a3c5a697e9fd89bfde073099bf8b48fdac94b6531f0b13
vim hostconfig.json
systemctl start docker
docker ps -a
进行验证systemctl enable docker
开机启动dockerdocker container update --restart=always 容器id
开启docker自启动容器docker ps -a
获取要删除容器的容器IDdocker rm [容器ID]
docker rmi 镜像名
docker pull nginx
firewall-cmd --add-port=8080/tcp --permanent
添加8080端口到防火墙可通行firewall-cmd --reload
保存docker run --name nginx -p 8080:80 -v /usr/local/docker/nginx/conf:/etc/nginx/conf.d -v /usr/local/docker/nginx/html:/usr/share/nginx/html -v /usr/local/docker/nginx/log:/var/log/nginx -d nginx
将容器nginx80端口映射到本地8080端口docker ps -a
查看nginx状态是否运行成功root@Kylin:/etc/nginx/sites-available# docker run --name nginx -p 8080:80 -d nginx
4623e78efcc9cbf7b5067351cdd163751b3ab03a79d853873d5b6cc7b0210f7e
docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx (52fe75b992e0bf95397f35b07fc8db84e59399937d4c4459b1990a1e6f135970): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.18.0.3:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
systemctl restart docker
重启docker就好
前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
yum install -y docker-compose
cd /usr/local/docker-compose
docker-compose -v
验证是否安装成功cd /usr/local/docker-compose
进入配置目录touch docker-compose.yml
创建ymlvim docker-compose.yml
编辑ymlversion: '2'
services:
nginx:
image: nginx
restart: always
ports:
- 8080:80
volumes:
- ./nginx/conf:/etc/nginx/conf
- ./nginx/log:/var/log/nginx
- ./nginx/www:/var/www
- ./nginx/web:/usr/share/nginx/html
mysql:
network_mode: "bridge"
environment:
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_USER: 'test'
MYSQL_PASS: '123456'
image: "mariadb"
restart: "always"
volumes:
- "./mysql/db:/var/lib/mysql"
- "./mysql/conf/my.cnf:/etc/my.cnf"
- "./mysql/init:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
总结一下:
docker-compose up -d
运行docker-compose ps
查看状态[root@c76-ci-qga docker-compose]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
dockercompose_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
dockercompose_nginx_1 nginx -g daemon off; Up 0.0.0.0:8080->80/tcp
https://www.cnblogs.com/sablier/p/11605606.html