https://console.cloud.tencent.com/lighthouse/instance/detail?rid=8&id=lhins-i4tkgx38
官方地址:https://docs.docker.com/engine/install/centos/
一、安装
1、卸载docker:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装需要的包
yum install -y yum-utils
3、设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装前,建议大家更新一下索引,将当前环境更新为最新:
yum makecache fast
5、安装最新的引擎 CE社区版本 EE企业版
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm
6、可以制定版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
7、启动docker
systemctl start docker
8、运行hello-world
docker run hello-world
9、查看镜像
docker images
10、卸载docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
手动修改镜像地址:
(1) mkdir -p /etc/docker
(2)tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://3s2mwwca.mirror.aliyuncs.com"]
}
EOF
(3)systemctl daemon-reload
(4)systemctl restart docker #重启docker
二、常见镜像命令
1、查看镜像:docker images
2、搜索镜像:docker search mysql
3、拉取镜像:docker pull mysql 或(加版本) docker pull mysql:5.7
4、删除镜像:docker rmi -f id id id
5、删除所有镜像:docker rmi -f $(docker images -aq)
三、常见容器命令
1、下载centos镜像:docker pull centos
新建容器并启动
docker run [可选参数] image
--name=""容器名字
-d 后台运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口
运行centos: docker run -it centos /bin/bash
退出容器centos: exit
docker ps -a 运行过的容器
docker ps -a -n=1 最近运行的1个容器
docker ps -aq 现实所有容器的编号
删除容器:
Exit 退出容器 停止运行
Ctrl + Q + P 退出容器,仍然运行 删除容器:
docker rm 容器id 不能删除在运行的
docker rm -f $(docker ps -aq)
启动和停止容器的操作
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
四、其他命令
1、查看日志: docker logs
2、启动centos并输出日志:
docker run-d centos /bin/sh -c "while true: do echo have a nice dream; sleep 1 ;done "
3、查看日志: docker logs -tf --tail 10 容器id
4、查看元数据: docker inspect 容器id
5、进入当前正在运行的容器: docker exec -it ba69ec9354fb /bin/bash
6、进入当前正在运行的容器: docker attach 容器id
7、docker exec 进入容器后打开一个新的终端
8、docker attach 进入容器正在执行的终端(日志在打印)
9、从容器中复制文件到服务器: docker cp fdf9a113e96b(容器id):home/jaan.java /data
五、docker安装Nginx
1、下载nginx: docker pull nginx
2、运行nginx: docker run -d --name nginx01 -p 3344:80 nginx
3、开启防火墙: systemctl start firewalld
4、开放指定端口号: firewall-cmd --zone=public --add-port=1935/tcp --permanent
5、重启防火墙: firewall-cmd --reload
6、查看端口号: netstat -ntlp
7、iptables -t filter -A INPUT -p tcp –dport 2222 -j ACCEPT,表示允许tcp协议通过2222端口
8、iptables-save > /etc/sysconfig/iptables
六、docker安装tomcat
1、docker pull tomcat:9.0
2、docker run -d -p 3345:8080 --name tomcat01 tomcat
3、复制webapps.dist/* 到webapps: cp -r webapps.dist/* webapps
七、docker安装elk
1、docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
2、查看cpu状态:docker stats
3、加内存限制启动:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"-e ES_JAVA_OPTS="-Xms512m -Xmx512m" elasticsearch
八、docker commit生成镜像
1、docker commit 提交容器成为一个新的副本。
2、docker commit -m= "提交描述信息" -a="作者" 容器id 目标镜像名:[tag]
实战测试:
3、启动tomcat: docker run -it 3345:8080 tomcat
4、Docker commit提交:
docker commit -a="joker" -m="webapptest" 293946dab957 tomcat01:1.0
九、docker 容器数据卷
1、使用数据卷:
方式1:直接使用命令来挂载:
docker run -it -v 主机目录:容器目录
docker run -it -v /data/test:/home centos /bin/bash
十、docker安装mysql
1、docker run -di -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="***" --name mysql05 mysql:5.7
2、匿名挂载:docker run -d -P --name nginx02 -v /etc/nginx nginx
3、具名挂载:docker run -d -P --name nginx02 -v juming-nginx: /etc/nginx nginx
十一、初识dockerfile
1、dockerfile是什么:构建docker镜像的文件
2、构建镜像:docker build -f dockerfile1 -t jaan/centos:1.0 .
十二、数据卷容器
1、docker run -it --name docker02 --volumes-from docker01 jaan/centos:1.0
2、docker run -it --name docker02 --volumes-from heuristic_almeida jaan/centos:1.0
十三、mysql主从
1、新建mysql : docker run -d -p 3306:3306 -v etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD="***" --name mysql06 mysql:5.7
2、新启第二个mysql: docker run -d -p 3307:3307 -e MYSQL_ROOT_PASSWORD="***" --name mysql08 --volumes-from mysql06 mysql:5.7
总结:1、编写dockerfile2、docker build 构建镜像 3、docker run 运行镜像 4、docker push发布镜像
十三、Dockerfile
FROM 基础镜像
MAINTAINER 维护者信息 姓名+邮箱
RUN 镜像构建时运行命令
ADD 步骤
WORKDIR 镜像的工作目录
VOLUME 镜像挂在地址
EXPOSE 指定对外端口
RUN 运行
CMD 指定容器启动要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定容器启动要运行的命令,可以追加命令
ONBUILD 当构建一个被集成dockerfile 会运行ONBUILD指令
COPY 将文件拷贝到镜像中
ENV 构建的时候设置环境变量
十四、[endif]构建自己的centos
1
FROM centos
MAINTAINER jaan<***@163.com>
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORK $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
十五、docker网络
1、bridge 桥接模式
2、none 不配置网络
3、host 和宿主机共享网络
4、container 容器内网络联通
直接启动的命令默认bridge
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 -net bridge tomcat
docker0 特点 默认bridge,不支持域名访问 --link可以打通访问
创建自己的网络
--driver bridge 桥接
--subnet 子网地址
--gateway 网关
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet