systemctl start docker 启动docker服务
systemctl stop docker 停止docker服务
systemctl restart docker 重启docker服务
systemctl enable docker 设置开机启动
sudo systemctl status docker 查看docker启动状态
sudo docker -v 查看docker版本
docker network ls 查看docker网络列表
docker volume ls 查看docker持久化存储情况
docker login --username=lucifer_ztl registry.cn-hangzhou.aliyuncs.com 登录远程仓库
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:[镜像版本号] 给镜像打标签
docker push registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:[镜像版本号] 推送镜像到远程仓库
docker images 查看docker镜像
docker pull mysql:5.7 拉取mysql5.7版本的镜像
docker run image 运行镜像
- # -d后台启动,--name设置容器名称,-p端口映射,-v将容器内的数据持久化保存在宿主机上/root/data/mysql位置,-e添加环境变量设置密码
- docker run -d --name mysql -p 3306:3306 -v /root/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged mysql:5.7 运行mysql5.7版本镜像并创建容器,需指定密码
docker exec -it 容器id bash 进入某个容器
docker image rm [imageid] 根据镜像id删除某个镜像
docker rmi -f [imageid] 根据镜像id删除某个镜像
docker rmi -f $(docker image ls) 删除所有镜像
docker start 容器id/容器名称 根据容器id或者名称启动容器
docker exec -it 容器id bash 进入某个容器
service mysql status 查看mysql状态【前提是先进入mysql容器】
service mysql start 启动mysql【前提是先进入mysql容器】
mysql -uroot -p 连接mysql
- mysql> create database testdb; #创建数据库testdb
- mysql> show databases; #查看数据库列表
- mysql> use testdb; #使用数据库testdb
- mysql> show tables; #查看数据库中的表
- mysql> create table `user`(
- -> `id` bigint(20) NOT NULL,
- -> `name` varchar(100) NOT NULL,
- -> `email` varchar(200) DEFAULT NULL,
- -> `address` varchar(255) DEFAULT NULL,
- -> `phone` varchar(20) DEFAULT NULL,
- -> PRIMARY KEY(`id`)
- -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
- mysql> insert into `user`(`id`,`name`,`email`,`address`,`phone`) values(1,'Lucifer','xxx123456@qq.com','xian','123456789');
- mysql> select * from user;
- +----+---------+------------------+---------+-----------+
- | id | name | email | address | phone |
- +----+---------+------------------+---------+-----------+
- | 1 | Lucifer | xxx123456@qq.com | xian | 123456789 |
- +----+---------+------------------+---------+-----------+
- 1 row in set (0.00 sec)
-
- mysql>
docker ps 查看运行中的容器
docker ps -a 查看所有容器
docker ps -aq 查看所有容器
docker rm 容器id 删除某个容器
docker rm -f $(docker ps -a) 删除所有容器
docker stop 容器id/容器名称 停止某个容器
docker top 容器id/容器名称 列出容器中运行进程
docker rename 旧容器名称 新容器名称 修改容器名称
docker logs 容器id/容器名称 查看容器服务的实时日志
docker logs --tail 20 容器id/容器名称 查看容器服务后20行日志
docker inspect 容器id 查看容器详细信息
docker stats 容器id 查看容器详情(CPU占用、内存使用、IO数)
docker volume ls 查看docker持久化存储情况
docker exec -it mysql bash 进入mysql容器中
ls /var/lib/mysql 可以在这个目录下查看到mysql的数据
docker volume inspect volume_name 可以查看到物理机中的目录
ls /var/lib/docker/volumes/eefab808edf91781c5605f4d8c1e42074af848c8ebb112305fcf2a4d8769a663/_data 可以发现物理机目录下和mysql容器/var/lib/mysql目录下内容相同
docker volume create mysql-volume 创建volume
docker run -d --name mysql5.7 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 创建容器并使用自定义的volume
ls /var/lib/docker/volumes/mysql-volume/_data 查看自定义volume对应的物理机目录下内容
-v mysql-volume:/var/lib/mysql就等同于在Dockerfile中定义的VOLUME命令
验证持久化效果:
- mysql> create database db_test;
- Query OK, 1 row affected (0.00 sec)
-
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | db_test |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 5 rows in set (0.00 sec)
-
- mysql> exit
- Bye
- root@29d465c7bc45:/# exit
- exit
- [root@localhost ~]# docker exec -it mysql5.7 bash
- root@29d465c7bc45:/# ls /var/lib/mysql
- auto.cnf ca.pem client-key.pem ib_buffer_pool ib_logfile1 ibtmp1 performance_schema public_key.pem server-key.pem
- ca-key.pem client-cert.pem db_test ib_logfile0 ibdata1 mysql private_key.pem server-cert.pem sys
- root@29d465c7bc45:/# exit
- exit
- [root@localhost ~]# ls /var/lib/docker/volumes/mysql-volume/_data
- auto.cnf ca.pem client-key.pem ib_buffer_pool ib_logfile0 ibtmp1 performance_schema public_key.pem server-key.pem
- ca-key.pem client-cert.pem db_test ibdata1 ib_logfile1 mysql private_key.pem server-cert.pem sys
- [root@localhost ~]#
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 禁止开机启动防火墙
systemctl status firewalld 查看是否关闭防火墙
docker pull jenkins 拉取jenkins镜像
docker tag jenkins myjenkins 给镜像重命名
mkdir -p /opt/jenkins 创建目录/opt/jenkins
chmod 777 /opt/jenkins 对文件夹进行授权
docker run -d --name jenkins -p 10240:8080 -v /opt/jenkins:/var/jenkins_home jenkins 根据jenkins镜像创建容器并启动
docker start jenkins 启动jenkins容器
docker exec -it jenkins bash 进入jenkins容器
cat /var/jenkins_home/secrets/initialAdminPassword 查看jenkins admin password
查看Linux服务器的系统是CentOS7.4的 [root@VM_82_178_centos ~]# cat /etc/RedHat-release CentOS Linux release 7.4.1708 (Core) #安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #添加Docker软件包源 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #docker yum源: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #上面为官方源,下面为阿里源,二选一 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装Docker CE yum install docker-ce -y #启动docker systemctl start docker #设置开机启动 systemctl enable docker #查看Docker信息 docker info
通过 docker info
命令来进行查看Docker Root Dir
值,可以发现Docker
服务默认的数据目录Docker Root Dir
是/var/lib/docker
#确保停止Docker服务 systemctl stop docker.service 将原先目录下所有的文件和目录拷贝到新目录下 cp -rf /var/lib/docker/* /mnt/soft/docker # 该路径为你指定的大容量空间路径 修改/etc/docker/daemon.json文件值,文件不存在需手动创建 vim /etc/docker/daemon.json # 新增以下内容 { "data-root": "/mnt/soft/docker" } 启动docker服务 systemctl start docker.service 验证Docker Root Dir 的值是否已修改为/mnt/soft/docker
(1)卸载之前的docker
- sudo yum remove docker \
- docker-client \
- docker-client-latest \
- docker-common \
- docker-latest \
- docker-latest-logrotate \
- docker-logrotate \
- docker-engine
(2)安装yum-utils,设置docker仓库
- sudo yum install -y yum-utils
- sudo yum-config-manager \
- --add-repo \
- https://download.docker.com/linux/centos/docker-ce.repo
(3)查看可以安装的版本
yum list docker-ce --showduplicates | sort -r
- docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.7-3.el7 @docker-ce-stable
- docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable
- docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable
(5)安装最新或指定版本
安装最新版本:
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
安装指定版本20.10.7:
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io docker-compose-plugin
(6)启动docker并设置为开机启动
sudo systemctl start docker && sudo systemctl enable docker
(7)测试docker安装是否成功
sudo docker run hello-world
(8)配置镜像加速器
设置方式参照:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
(1)tomcat:8.0
- # 拉取镜像:
- docker pull tomcat:8.0
- # 根据镜像创建容器:
- docker run -d --name tomcat01 -p 8088:8080 tomcat:8.0
(2)mysql
- # -d设置后台启动, --name给容器命名, -p端口映射, -e添加环境变量
- docker run -d --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=jack666 --
- privileged mysql:5.7
(1)创建一个Spring Boot项目,写一个controller
- @RestController
- public class HelloController {
- @GetMapping("/hello")
- public String hello() {
- return "Hello Docker!!!";
- }
- }
注意在项目的pom.xml中一定要加下面配置,否则启动jar镜像会报错:no main manifest attribute
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- <configuration>
- <executable>trueexecutable>
- configuration>
- plugin>
- plugins>
- build>
(2)mvn clean package,并在target下找到jar包,如"springboot-demo2-1.0-SNAPSHOT.jar"
(3)上传"springboot-demo2-1.0-SNAPSHOT.jar"到centos,并创建Dockerfile文件
- FROM openjdk:8
- COPY springboot-demo2-1.0-SNAPSHOT.jar sb-jar-image.jar
- CMD ["java","-jar","sb-jar-image.jar"]
或者
- # 基础镜像使用java
- FROM java:8
- #将jar包添加到容器中并更名为: sb-jar-image.jar
- ADD springboot-demo2-1.0-SNAPSHOT.jar sb-jar-image.jar
- #运行jar包
- RUN bash -c 'touch sb-jar-image.jar'
- ENTRYPOINT ["java","-jar","sb-jar-image.jar"]
- #暴露端口
- EXPOSE 8080
(4)基于Dockerfile构建镜像并查看
- docker build -t sb-jar-image .
- docker images
(5)基于image创建container
docker run -d --name sb-jar -p 8080:8080 sb-jar-image
(6)查看启动日志:docker logs sb-jar
(7)宿主机上访问curl localhost:8080/hello
- [root@localhost ~]# curl localhost:8080/hello
- Hello Docker!!![root@localhost ~]#
或者主机浏览器访问虚拟机ip:8080/hello
阿里镜像仓库地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
(1)进入个人实例:https://cr.console.aliyun.com/cn-hangzhou/instance/dashboard
(2)创建命名空间,比如 lucifer-k8s
(3)在centos上登录
- [root@localhost ~]# sudo docker login --username=lucifer_ztl registry.cn-hangzhou.aliyuncs.com
- Password:
- WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
- Configure a credential helper to remove this warning. See
- https://docs.docker.com/engine/reference/commandline/login/#credentials-store
-
- Login Succeeded
(4)给image打tag
- [root@localhost ~]# sudo docker tag 84ea3746c8e6 registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:v1.0
- [root@localhost ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- sb-jar-image latest 84ea3746c8e6 2 days ago 678MB
- registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository v1.0 84ea3746c8e6 2 days ago 678MB
- openjdk 8 e24ac15e052e 11 months ago 526MB
- hello-world latest feb5d9fea6a5 14 months ago 13.3kB
- java
(5)推送镜像到镜像仓库
- [root@localhost ~]# sudo docker push registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:v1.0
- The push refers to repository [registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository]
- 0634aee8ab8a: Pushed
- a0d2245cc87f: Pushed
- 35c20f26d188: Pushed
- c3fe59dd9556: Pushed
- 6ed1a81ba5b6: Pushed
- a3483ce177ce: Pushed
- ce6c8756685b: Pushed
- 30339f20ced0: Pushed
- 0eb22bfb707d: Pushed
- a2ae92ffcd29: Pushed
- v1.0: digest: sha256:55044767d6a5abcf62595732449f3dafb3cc7ce09f5ac222f37e56d915211003 size: 2424
(6)下载镜像并运行
- [root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:v1.0
- [root@localhost ~]# docker run -d --name docker01 -p 8081:8081 registry.cn-hangzhou.aliyuncs.com/lucifer-k8s/lucifer-k8s-repository:v1.0
mysql高可用集群保证数据一致性:
(1)从库连接主库,(2)主库dump线程获取binlog发送给从库,(3)从库IO线程写数据到relay log,(4)sql线程读取relay log执行sql更新数据到从库
PXC
Percona Xtradb Cluster
多主+同步复制+强一致性
筛选 -> 网上填表 -> 笔试(算法,选择) -> 面试(公司介绍+个人介绍+架构设计+基础) -> 体检