Docker 开源容器引擎
该文属原创,是作者亲自一步一步实操总结而来,欢迎留下宝贵意见
Go语言编写
三大要素: 仓库,镜像, 容器
前提
1. 安装linux系统,使用虚拟机(VMware,VirtualBox)
1.1 安装VMware或VirtualBox
1.2 下载linux系统镜像(https://opsx.alibaba.com/mirror)
1.3 安装虚拟机(net:桥接,公司有网关需要登录的情况下用NAT)
1.4 uname -r 获取当前版本信息
1.5 查看虚拟机ip(ip addr)
2. 安装ssh 客户端连接虚拟机(SmarTTY, Xshell)
2.1 安装 Xshell
2.2 连接虚拟机ip
2.3 ping 保证虚拟机是可以上网的
3.安装docker
官方脚本安装docker curl -fsSL https://get.docker.com/ | sh
https://docs.docker.com/install/linux/docker-ce/centos/
//下载相关包依赖(-y 后续确认都执行yes)
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
//安装docker
yum install docker-ce docker-ce-cli containerd.io
//启动docker
systemctl start docker
//验证安装是否正确
docker -v
//Docker version 18.09.6, build 481bc77156
//or
docker version
//or
docker run hello-world
//Hello from Docker!
4.docker常用 操作
docker version
docker info
docker --help
-
docker search mysql //从hub.docker库中查询
-
docker pull mysql[:标签名称]//从库中拉取, 默认tag为latest
docker images//查看当前镜像
docker rmi imageId //删除指定id的镜像
docker rm containerId //删除已经关闭的指定id的容器
docker rm -f $(docker ps -a -q) 或 docker ps -a -q | xargs docker rm
-
docker run --name custommysql -d mysql//运行镜像,生成容器, 如果指定的镜像没有下载,会先下载,后运行
- --name 指定容器名称
- -d 后台运行
- mysql[:tag]要运行的镜像名称
-
docker run --name mytomcat -d -p 8888:8080 tomcat
- --name 指定容器名称
- -d 后台运行
- -p 8888:8080 端口映射 虚拟机端口:容器端口
- tomcat[:tag]要运行的镜像名称
docker ps //显示当前运行的所有容器
docker ps -all //显示当前所有容器,包括未运行的
docker start containerId //启动容器
docker stop containerId //停止容器 等待片刻后停止
docker kill containerId //强制停止容器 立即停止
docker logs containerId //查看指定容器的日志
yum remove docker-ce // 卸载docker
service docker restart //重启docker
docker inspect containerId //查看容器详细信息
安装tomcat
docker search tomcat
docker pull tomcat
docker images
-
docker run --name tomcat01 -d -p 8888:8080 tomcat //可运行多次,创建多个容器
打开浏览器访问8888端口
docker stop 容器id
docker start 容器id (与第一次执行run 令一样的,还是8888端口)
安装mysql
- docker search mysql
- docker pull mysql
- docker images
- docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p3306:3306 mysql
- 打开Navicat 连接3306端口
https://blog.csdn.net/Alalafan/article/details/81358551
Docker MySql报2059错误: Authentication plugin 'caching_sha2_password' cannot be loaded
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE
29714a167c3d mysql
[root@localhost docker]# docker exec -it 29714a167c3d bash
root@29714a167c3d:/# mysql --user=root --password
Enter password:
mysql> alter user 'root' identified with mysql_native_password by '123456'
安装centos
- docker search centos
- docker pull centos
- docker images
-
docker run -it centos
安装minio
- docker search minio
- docker pull minio/minio
- docker images
- docker run -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123123123 -v /data:/data minio/minio server /data
- exit 关闭容器退出
- ctrl p q 不关闭容器退出
安装elasticsearch
docker pull elasticsearch
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --name=elasticsearch elasticsearch
虚拟机防火墙配置
- service firewalld status //查看防火墙状态
- service firewalld stop //关闭防火墙
配置镜像加速
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 申请阿里云帐号: 控制台-产品与服务-弹性计算-容器镜像服务
- 找到镜像加速器,按文档操作
docker 开机启动
- systemctl enable docker
下载速度慢
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
注意
docker client 是不能直接访问宿主机中容器的。但可以在宿主机的命令行中访问。
问题
Docker无法启动,报错:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
执行命令:
rm -rf /var/lib/docker/
vim /etc/docker/daemon.json
# 添加如下内容
{
"graph": "/mnt/docker-data",
"storage-driver": "overlay"
}
重启服务:
systemctl restart docker
查看状态:
systemctl status docker
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
systemctl restart docker.service
//最终效果
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"graph":"/mnt/docker-data",
"storage-driver": "overlay"
}