1. Google的GO语言实现;
2. Docker 容器: 除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。资源隔离等
Docker 镜像: 相当于模板
Docker 仓库(Registry): 存放模板的地方
Docker 容器(Container): 通过模板创建出来的虚拟机
容器的生命周期
# yum install -y docker
Rpm方式卸载旧docker
# rpm -qa | grep -i docker //查找已经安装docker
# rpm -e [module1][module2][.....] //卸载docker
yum方式卸载docker
# yum -remove //另外一种卸载docker的方法
安装docker
# yum install -y docker
修改镜像地址,编辑/etc/docker/daemon.json
{
"registry-mirrors": ["https://uulfe4bd.mirror.aliyuncs.com"]
}
启动docker
# systemctl start docker //centos7及以后版本
# service docker start //centos6及之前的版本
如果启动时出现: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
那么修改一下再启动
常用命令< ps: 注意参数的位置否则失效 >
docker学习记录(几分钟可以上手常用命令)_emailscott docker-优快云博客
docker images: 查看镜像
# docker pull path : 抓取镜像
如:docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7
如:docker pull tomcat:8.5-jre10-slim
# 删除所有镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
创建docker 容器(可以根据一个镜像创建多个容易)
# docker run -tid 镜像ID /bin/bash //非centos7
# docker run -tid 镜像ID /usr/sbin/init //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题
docker run -tid --name master 3db94df3e006 /usr/sbin/init
#修改名称
docker rename friendly_perlman mysql_master
# docker使用cpu、内存、网络、io情况
docker stats <container id>
docker stats <container id 1> <container id 2>
docker stats -a
#指定容器进程可以在 CPU1 和 CPU3 上运行:
docker run -tid --cpuset-cpus="1,3" --name master 3db94df3e006 /usr/sbin/init
# 内存限制
Docker对CPU及内存的资源限制_docker resource limit-优快云博客
https://www.cnblogs.com/cptao/p/10936256.html
例如: docker run -tid --name master2 --cpuset-cpus="1,3" -m 512M --memory-swap 512M -v /opt/dockerdir:/opt/dockerdir 9cecdc31480b /usr/sbin/init
可以使用 docker stats 来查看内存等情况
# 目录映射: 指定容器挂载一个数据卷,主机目录与docker目录映射
docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir 3db94df3e006 /usr/sbin/init
docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -v /opt/dockerdir2:/opt/dockerdir2 3db94df3e006 /usr/sbin/init
读权限: docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir:ro 3db94df3e006 /usr/sbin/init
# 端口映射:
-p hostPort:containerPort 映射所有 IP 地址上的指定端口到容器内部
-p ip:hostPort:containerPort 映射指定 IP 地址上的指定端口到容器内部
-p ip::containerPort 映射指定 IP 地址上的任意端口到容器内部
docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9080:80 3db94df3e006 /usr/sbin/init
或者: docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9080:80 1d496d73a1fd
# 容器互联( 在 master2 上面可以 ping master ):
docker run -tid --name master2 --link master:master2 -v /opt/dockerdir:/opt/dockerdir -p 9081:80 3db94df3e006 /usr/sbin/init
或者: docker run -tid --name master2 --link master:master2 -v /opt/dockerdir:/opt/dockerdir -p 9081:80 1d496d73a1fd
# ssh 登录容器<不搞了,麻烦>
docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9022:22 3db94df3e006 /usr/sbin/init
还需要:
yum -y install openssh-server
vi /etc/ssh/sshd_config: PermitRootLogin yes, UsePAM no, yum -y install memcached
# 启动/关闭/删除所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
# 复制文件到容器,复制docker文件到宿主主机
docker cp mycontainer:/opt/file.txt /opt/local/
docker cp /opt/local/file.txt mycontainer:/opt/
# 使用容器创建镜像
docker commit <container id> <image name>
如: docker commit 533b306d2ad6 scottszluo_centos7_java_net_tools
docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9022:22 9cecdc31480b /usr/sbin/init
# 网络
docker network create --driver bridge mynet
docker network rm mynet
docker run -tid --name master --net mynet -v /opt/dockerdir:/opt/dockerdir -p 9022:22 9cecdc31480b /usr/sbin/init
查看容器列表
# docker ps [option]
# docker ps -a
查看容器详细信息
docker inspect <contain name/image name>
暂停一个容器进程
sudo docker pause [nameOfContainer]
取消暂停
sudo docker unpause [nameOfContainer]
终止一个容器
sudo docker kill [nameOfContainer]
启动容器
# docker start mysql_master
停止容器
# docker stop 容器名称
# docker stop mysql_master
进入容器
# docker exec -it 容器名称 /bin/bash
# docker exec -it master /bin/bash
删除镜像
# docker rmi 镜像ID
# docker rmi c862fd4c865c
删除容器
# docker rm 容器名称
# docker rm
Docker文件拷贝(容器<=>docker)
# docker cp 原路径 docker容器路径(系统=》docker)
# docker cp MySQL-server-5.6.38-1.el7.x86_64.rpm mysql_master2:/root/
# docker cp docker容器路径 原路径(docker=》系统)
# docker soft mysql_master:/opt
使用指定用户登录 docker:
# docker exec -ti -uroot <contaioner id> /bin/bash
# docker cp docker容器路径 原路径(docker=》系统)
# docker soft mysql_master:/opt
退出容器
# exit
=============== 安装 mysql 8 ================
# 安装 mysql # 拉取MySQL镜像 docker pull mysql:latest # 运行MySQL容器,将容器的3306端口映射到宿主机的3306端口 docker run --restart=always --name mysql-server -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest # 进入MySQL容器 docker exec -it mysql-server bash # 在容器内部,登录到MySQL mysql -u root -p # 当在MySQL提示符下时,运行以下SQL命令来允许远程连接 CREATE USER root@'%' ; -- 创建用户 ALTER USER root@'%' IDENTIFIED BY 'root'; -- 指定密码 GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION; -- 授权 FLUSH PRIVILEGES; # 退出MySQL提示符 exit # 重启MySQL服务 docker restart mysql-server