#菜鸟教程地址
https://www.runoob.com/docker/docker-tutorial.html
#docker官方地址仓库
https://hub.docker.com/

------docker 安装------------
1.更新内核
yum update
2.下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
3.执行安装
sh get-docker.sh

yum install -y docker-io

yum install -y docker-ce (默认版本是ce的稳定版本)

使用yum安装Docker
$ sudo yum install docker-ce docker-ce-cli containerd.io

按安装: https://www.jianshu.com/p/9c96ea8e6f41

--------------------------------------

4.常见操作命令

systemctl status docker //查看docker服务的状态
systemctl start docker //启动docker服务
systemctl stop docker //停止docker服务
systemctl restart docker //重启dokcer服务

docker --help
docker COMMAND --help
docker version //docker版本信息
docker search httpd //查找镜像
docker pull 镜像名称:镜像版本号 //从docker官方镜像仓库下载镜像
docker pull mysql
docker pull mysql:5.7.27
docker images //查看本地镜像
docker images |grep mysql
docker ps //查看运行的容器
docker ps -a //查看所有的容器
docker ps -l 命令获得最后一个容器的id,docker ps -a查看所有的容器。

查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2019-07-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

-----------------------------------------------------------------------------
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] //创建一个新容器并且运行该容器
常见OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷

//例如运行一个mysql

docker run --name nginx -d -p 81:80 --privileged=true --restart=always -m 2048M --memory-swap -1 -v /usr/nginx/logs:/var/log/nginx nginx:latest
//mysql

docker stop mysql
docker rm mysql

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true mysql:5.7

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true --restart=always -m 2048M --memory-swap -1 -v /data/mysql/data:/var/lib/mysql -v /tmp/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /tmp/mysql-init:/docker-entrypoint-initdb.d/ mysql:5.7

docker run --publish-all --name p57 -it -e MYSQL_ALLOW_EMPTY_PASSWORD=1 percona:5.7
--innodb_buffer_pool_size=4GB
--innodb_log_file_size=1G
--skip-log-bin
--innodb_flush_log_at_trx_commit=0
--innodb_flush_method=nosync
--innodb_io_capacity=2000
--innodb_io_capacity_max=3000
--max_allowed_packet=1G
time (mysql --max_allowed_packet=1G imdb1 < imdb.sql )
# real 59m34.252s

docker ps
docker start mysql
docker ps
docker logs -f --tail=100 mysql

------------------
检验:

查看端口:
lsof -i :3306
netstat -lnt|grep 330
ps -ef | grep 3306
mysql -uroot -proot -h10.20.100.21 -P3306

select Host,User from mysql.user;
select count(*) from processlist;
show full processlist
show variables like 'sql_mode%';
查看隔离级别:
show variables like '%iso%';
show variables like '%auto%';
------------------------------------------------------------------------
docker run -i -t centos /bin/bash 在容器里启动一个/bin/bash shell环境,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。
docker run -d -i -t centos /bin/bash 在后台启动
docker run -d centos:v1 /bin/bash ,-d表示在后台启动,以daemon方式启动。
docker run -d -p 80:80 -p 8022:22 centos:latest /usr/bin/sshd -D
docker run -d --name mynginx nginx
docker run -d --name mynginx nginx:1.17

检查端口:
netstat -nutlp | grep 65000
检查服务是否有:
docker service ls|more

docker service ls| wc -l

检查镜像是否有:
docker images
docker images | wc -l

确认私服地址及docker0网段信息
docker info
route -n

检查overlay网络
docker network ls

docker start 容器名称 //启动容器
docker stop 容器名称 //停止运行的容器
docker restart 容器名称 //重启容器
docker rm 容器名称 //删除容器 --必须停止容器才能删除容器
docker inspect 容器名称 //查看容器详细
docker logs -f --tail=100 容器名称 //查看容器日志并指定日志行数为100
docker rmi 镜像名称:镜像版本号 //删除镜像 --必须删除容器才能删除镜像

docker exec -it 容器名称 /bin/bash //进入容器内部

//进入容器内部(方法一)
docker exec -it base_mongodb.1.u3y220s9k7riwtpd882qxmszi /bin/bash
//进入容器内部(方法二)
docker exec -it 0634a9046337 /bin/bash

---------删除所有正在运行和已停止的容器

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

---------#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,

sudo docker ps -a|grep Exited|awk '{print $1}'

--------#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

sudo docker rm $(sudo docker ps -a -q)

我们可以通过运行exit命令或者使用CTRL+D来退出容器。

---------------------------------------------------------------------------------------
配置docker源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker的依赖包

yum install -y yum-utils lvm2 device-mapper-persistent-data

1.配置docker源
yum install -y epel-release

2.安装docker
yum install -y docker-io
3.重启
systemctl enable docker.service ### 开机启动

离线安装包
1. 先安装如下rpm依赖文件
audit-libs-python-2.8.4-4.el7.x86_64.rpm
checkpolicy-2.5-8.el7.x86_64.rpm
libcgroup-0.41-20.el7.x86_64.rpm
libseccomp-2.3.1-3.el7.x86_64.rpm
libsemanage-python-2.5-14.el7.x86_64.rpm
policycoreutils-2.5-29.el7.x86_64.rpm
policycoreutils-python-2.5-29.el7.x86_64.rpm
python-IPy-0.75-6.el7.noarch.rpm
setools-libs-3.3.8-4.el7.x86_64.rpm
把上述文件放在同一目录下,并在同目录下执行如下命令可以实现一起安装:

rpm -ivh *.rpm --nodeps --force

rpm -ivh audit-libs-python-2.8.4-4.el7.x86_64.rpm
rpm -ivh checkpolicy-2.5-8.el7.x86_64.rpm
rpm -ivh libcgroup-0.41-20.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm
rpm -ivh policycoreutils-2.5-29.el7.x86_64.rpm --nodeps --force
rpm -ivh policycoreutils-python-2.5-29.el7.x86_64.rpm --nodeps --force
rpm -ivh python-IPy-0.75-6.el7.noarch.rpm
rpm -ivh setools-libs-3.3.8-4.el7.x86_64.rpm

rpm -ivh audit-libs-python-2.8.4-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm libcgroup-0.41-20.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm policycoreutils-2.5-29.el7.x86_64.rpm policycoreutils-python-2.5-29.el7.x86_64.rpm --nodeps --force python-IPy-0.75-6.el7.noarch.rpm
setools-libs-3.3.8-4.el7.x86_64.rpm

2.安装docker相关rpm

rpm -ivh container-selinux-2.9-4.el7.noarch.rpm
rpm -ivh docker-ce-cli-19.03.0-3.el7.x86_64.rpm
rpm -ivh docker-ce-19.03.0-3.el7.x86_64.rpm --nodeps --force

---------------------------------------------------------------------------------------
卸载docker
停止docker服务

systemctl stop docker
yum remove docker-ce-cli.x86_64
yum remove docker-ce.x86_64

---------------------------------------------------------------------------------------
迁移步骤
1. 首先需要停止docker服务

systemctl stop docker
2. 通过命令df -h 先去看下磁盘大概的情况,找一个大的空间

3. 创建docker的新目录,我这边找了data, 所以我这边的新目录地址是 /data/docker/lib/

mkdir -p /data/docker/lib
注:参数-p 确保目录名称存在,如果目录不存在的就新创建一个。

4. 开始迁移

rsync -avzP /var/lib/docker /data/docker/lib/
先确认是否安装了rsync.

参数解释:

-a,归档模式,表示递归传输并保持文件属性。
-v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-P,显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-z, 传输时进行压缩提高效率。
5. 先去/etc/systemd/system/docker.service.d的目录下看下是否存在devicemapper.conf。如果不存在,就新建一个。在文件里加入如下内容并保存。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/docker

6. 重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

7. 启动之后确认docker 没有问题,删除旧的/var/lib/docker/目录

最新文章

  1. 在 ML2 中配置 VXLAN - 每天5分钟玩转 OpenStack(110)
  2. ThinkPad E430光驱面板拆卸方法
  3. Java的Package和Classpath
  4. telnet不通11211端口,防火墙
  5. Eclipse下导入外部jar包的3种方式 (zhuan)
  6. HYSBZ2038 小Z的袜子(莫队算法)
  7. N人报数第M人出列游戏问题(约瑟夫问题)
  8. Android list1去除list2中的元素
  9. Spring中的DataBinding(一)
  10. NYIST OJ 题目42 一笔画问题
  11. div的替代品
  12. STL(标准模板库) 中栈(stack)的使用方法
  13. 在WebBrowser控件使用js调用C#方法
  14. 【BZOJ1060】【ZJOI2007】时态同步
  15. 解决Maven无法下载fastdfs-client-java依赖,Dependency &#39;org.csource:fastdfs-client-java:1.27-SNAPSHOT&#39; not found.
  16. 【腾讯云服务器】基于centos7搭建ftp服务器(vsftpd)
  17. Spring Boot - 配置介绍
  18. Redis 安装,配置以及数据操作
  19. html 网页生产pdf文件
  20. Linux服务器svn与项目同步

热门文章

  1. Java的证书:HTTPS与SSL
  2. MySQL(学生表、教师表、课程表、成绩表)多表查询
  3. 数据表与简单java类——一对多映射
  4. Alertmanager 部署配置
  5. Linux内核设计与实现笔记_1_基本概念
  6. Spring Security OAuth2 Demo —— 授权码模式
  7. 搞IT产品,请谨记Mobile First
  8. python安装matplotlib:python -m pip install matplotlib报错
  9. SpringBoot-自动配置原理(七)
  10. Python的Requests库基本方法函数