安装版本说明
[root@node0 ~]# docker -v
Docker version 1.13.1, build cccb291/1.13.1
[root@node0 ~]# docker-compose -v
docker-compose version 1.24.1, build 4667896b
2.1 安装、运行、配置
[root@localhost ~]# yum install -y docker
[root@localhost /]# yum list installed |grep docker
docker.x86_64 2:1.13.1-109.gitcccb291.el7.centos @extras
docker-client.x86_64 2:1.13.1-109.gitcccb291.el7.centos @extras
docker-common.x86_64 2:1.13.1-109.gitcccb291.el7.centos @extras
# 服务开启
systemctl start docker.service
systemctl enable docker.service
#服务查看
systemctl status docker
配置国内镜像站(ali) 需要个人申请aliyun的镜像站加速器https://cr.console.aliyun.com
[root@localhost docker]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://omiz3ksl.mirror.aliyuncs.com"]
}
EOF
[root@localhost docker]# cat daemon.json
{
"registry-mirrors":["https://omiz3ksl.mirror.aliyuncs.com"]
}
切换镜像站后需要重启docker
[root@localhost docker]# systemctl restart docker.service
[root@localhost docker]# sudo systemctl daemon-reload
[root@localhost docker]# sudo systemctl restart docker
2.2 docker UI->Portainer
编排工具,便于界面化管理
# docker run -d --privileged -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer
访问地址: http://192.168.1.245:9000/ admin@12345678 用户名密码首次登陆设置
参考文档:https://blog.csdn.net/qq_36379495/article/details/92837897
对portainer做一个简单的使用说明
2.3常用命令
docker [run|start|stop|restart|kill|rm|pause|unpause] #容器生命周期管理
docker [ps|inspect|top|attach|events|logs|wait|export|port] #容器操作运维
docker [commit|cp|diff] #容器rootfs命令
docker [login|pull|push|search] #镜像仓库
docker [images|rmi|tag|build|history|save|import] #本地镜像管理
1、镜像命令
# 搜索镜像
docker search 镜像名称
# 列出当前系统存在的镜像
docker images
# 拉取镜像
docker pull image_name
docker pull image_name:tag
#image_name:表示镜像的仓库源名称,TAG:镜像的标签 如果不指定tag 那么默认用最新的
#删除镜像
docker rmi 镜像名称/镜像ID
docker rmi -f 镜像名称/镜像ID
#强制删除 如果镜像有容器在运行 那么就需要强制删除 增加 -f 参数
#举例
docker search nginx #搜索所有nginx相关的镜像列表(模糊查询)
docker pull nginx #拉取nginx镜像
docker pull nginx:stable #拉取tag为stable的nginx
2、容器命令
# 运行容器
docker run #首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)
docker run -d --name "xiaoxiao" -p 5672:5672 -p 15672:15672 rabbitmq:management
#-d 后台运行
#-p 端口映射 (可以有多个 因为该镜像可能存在多个端口)
#rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的
#--name 给该容器取个名字
# 列举当前运行的容器
docker ps
# 检查容器内部信息
docker inspect 容器名称
# 停止某个容器
docker stop 容器名称
# 启动某个容器
docker start 容器名称
# 移除某个容器
docker rm 容器名称 (容器必须是停止状态)
2.4 安装docker-compose
什么是compose,可以自行了解 https://github.com/docker/compose
# 安装docker-compose
# 国内镜像站:curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看是否安装成功
docker-compose --version
#-> docker-compose version 1.24.1, build 4667896b
2.5 Q&A
Q1: 容器启动失败 docker: Error response from daemon: driver failed programming external connectivity on endpoint
A: 重启docker 原因: firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。
2.6 部署spring-boot(后续补充详细步骤)
在服务器新建一个docker文件夹,将maven打包好的jar包和Dockerfile文件复制到服务器的docker文件夹下
# 在当前目录下执行 . (创建container)
docker build -t cloud-mms-basic:1.0 .
# run container
docker run -d --name "cloud-mms-basic" -p 9504:8080 cloud-mms-basic:1.0
Q&A:
1. java.lang.VerifyError: Stack map does not match the one at exception
字节码验证错误-> java 版本问题 -> 修改DockerFile
2.7 开启远程访问
docker默认是不允许外面直接连接管理的,这里开启为了idea可以插件化管理
# link[https://www.cnblogs.com/hsz-csy/p/9488469.html]
vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd-current 后面加上
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
#验证
systemctl daemon-reload
systemctl start docker
netstat -tulp
# 2375 默认端口开启
firewall-cmd --zone=public --add-port=2375/tcp --permanent