docker使用总结

docker

项目地址
晓智科技晓智科技
晓智文档晓智文档
文档源码文档源码

docker 安装

[阿里云境像服务登录不上](https://juejin.cn/post/6954645387542003726)

  1. yum 安装 gcc 相关
yum -y install gcc
yum -y install gcc-c++
  1. 安装需要的软件包
yum install -y yum-utils
  1. 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  1. 更新 yum 软件包索引
yum makecache fast
  1. 安装docker-ce

yum install docker-ce docker-ce-cli containerd.io

  1. 启动docker
systemctl start docker
systemctl stop docker
  1. 测试docker
docker version
docker run hello-world
  1. 自载docker
systemctl stop docker
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

配置阿里云境像

  1. 境像加速地址
https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors
  1. 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://sjflvx12.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker常用命令

帮助启动类命令

  1. 启动docker
systemctl start docker 
  1. 停止docker
systemctl stop docker 
  1. 重启docker
systemctl restart docker 
  1. 查看docker状态
systemctl status docker 
  1. 开机启动docker
systemctl enable docker 
  1. 查看docker信息
docker info
  1. 查看所有命令帮助
docker --help
  1. 查看某个命令帮助
docker image --help 

镜像命令

  1. 列出本地所有境像(含历史境像)
docker images -a 
  1. 只显示境像id
docker images -q
  1. 查询某个境像
docker search mysql(境像名称)
  1. 查询前n个个境像
docker search --limit 5 mysql(境像名称)
  1. 拉取某个境像
docker pull mysql:latest(境像名称)
  1. 拉取某个版本号
docker pull mysql:6.0.8 (境像名称:[tag])
  1. 查看境像容器所占的空间
docker system df 
  1. 强制删除某个容器
docker rmi -f feb5d9fea6a5(Image ID)
  1. 删除所有容器
docker rmi -f $(docker images -qa)

容器命令

  1. 使用交互式启动境像, -i:交互式, -t:终端
docker run -it ubuntu(境像名称) /bin/bash
  1. 以名字启动交互式境像, -it:交互式,–name:境像名称
docker run -it --name=myubuntu ubuntu(境像名称) /bin/bash
  1. 后台守护进程运行
docker run -d redis:6.0.8(容器名)
  1. 查看容器日志
docker logs 3b5d312e445d(容器id)
  1. 查看容器内运行进程
docker top 3b5d312e445d(容器id)
  1. 查看容器内部细节
docker inspect 3b5d312e445d(容器id)
  1. 进入正在运行的容器并以命令行交互
docker exec -it 3b5d312e445d(容器id) /bin/bash
docker attach -it 3b5d312e445d(容器id) /bin/bash
  1. 容器内文件烤贝到主机上
docker cp  docker cp d49bf82c61ee:/home/aaa.txt(容器id:容器路径) /home
  1. 容器导出为tar包
docker export d49bf82c61ee(容器id) >  ubuntu.tar
  1. tar导入为容器
cat ubuntu.tar | docker import - ubuntu 
  1. apt下载软件包
apt-get update
apt-get -y install vim
  1. docker commit
docker commit -m 'vim cmd add ok' -a='zhangdezhi' 199cf9ead58b(容器id) xiaozhi/ubuntu:1.3
  1. 登录阿里云Docker Registry
docker login --username=31429*****@qq.com registry.cn-shenzhen.aliyuncs.com
  1. 从Registry中拉取镜像
docker pull registry.cn-shenzhen.aliyuncs.com/xiaozhicloud/myubuntu1.3:[镜像版本号]
  1. 将镜像推送到Registry
$ docker push registry.cn-shenzhen.aliyuncs.com/xiaozhicloud/myubuntu1.3:[镜像版本号]
  1. 列出当前所有正在运行的容器
docker ps 
  1. 列出当前所有正在运行的容器+历史运行过的
 docker ps -a 
  1. 显示最近创建的容器
docker ps -l
  1. 只显示容器编号
docker ps -q
  1. run进容器 exit退出, 容器停止
exit
  1. run进容器 ctrl+p+q退出, 容器不停止
ctrl+p+q
  1. 启动已停止的容器
docker start 6f7f870398f2(容器id或容器名称)
  1. 重启容器
docker restart 6f7f870398f2(容器id或容器名称)
  1. 停止容器
docker stop 6f7f870398f2(容器id或容器名称)
  1. 强制停止容器
docker kill 6f7f870398f2(容器id或容器名称)
  1. 删除停止容器
docker rm 6f7f870398f2(容器id或容器名称)

容器数据卷

  1. 容器数据卷存储
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录   镜像名
docker run -it --privileged=true -v /home/data:/home/data ubuntu
  1. 给容器添加读写权限
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录   镜像名
docker run -it --privileged=true -v /home/data:/home/data:ro ubuntu
  1. 给容器添加读写权限
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录   镜像名
docker run -it --privileged=true -v --volumes-form u1 --name=u2 ubuntu
  1. 查看数据卷是否挂载成功
dcoker inspect ee7f32630de9(容器id)

安装常规软件的安装

  1. 安装tomcat
docker search tomcat
docker pull tomcat
docker run -d -p 8080:8080(端口映射) --name t1 tomcat
docker stop t1
docker rmi 容器id
  1. 安装mysql
docker search mysql
docker pull mysql:5.7
docker run -d -p 3306:3306 --privileged=true 
-v /var/mysql/log:/var/log/mysql
-v /var/mysql/data:/var/lib/mysql
-v /var/mysql/conf.d:/var/mysql/conf.d 
-e MYSQL_ROOT_PASSWORD=123456
--name mysql:5.7 mysql:5.7
docker exec -it 容器id /bin/bash
mysql -uroot -p
  1. 安装redis
docker search redis
docker pull redis
docker run -d -p 6379:6379 --name redis --privileged=true 
-v /app/redis/redis.conf:/etc/redis/redus.conf 
-v /app/redis/data:/data redis redis-server 
/etc/redis/redis.conf

mysql主从复制

  1. 启动主数据库
docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-mater/log:/var/log/mysql \
-v /mysql/mysql-mater/data:/var/lib/mysql \
-v /mydata/mysql-mater/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  1. 宿主机新建my.conf
# 文件路径
# /mydata/mysql-mater/conf
[mysqld]
#设置server_id,同一局域网中需要唯一
server_id=101
# 指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 开启二进制日志功能
log_bin=mall-mysql-bin
# 设置二进制日志使用内存大小
binlog_cache_size=1M
# 设置使用的二进制日志格式
binlog_format=mixed
# 二进制日志清理时间,默认为0表示
expire_logs_days=7
# 跳过主从复制中遇到的所有错误信息
slave_skip_errors=1062
  1. 重启 mysql-mater
docker restart mysql-mater(容器id或容器名称)
  1. 创建数据同步用户
create user 'slave'@'%' IDENTIFIED BY '123456'
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
  1. 启动从数据库
docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mydql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  1. 宿主机新建my.conf
# /mydata/mysql-slave/conf
[mysqld]
#设置server_id,同一局域网中需要唯一
server_id=102
# 指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 开启二进制日志功能
log_bin=mall-mysql-slave1-bin
# 设置二进制日志使用内存大小
binlog_cache_size=1M
# 设置使用的二进制日志格式
binlog_format=mixed
# 二进制日志清理时间,默认为0表示
expire_logs_days=7
# 跳过主从复制中遇到的所有错误信息
slave_skip_errors=1062
#relay_log配置中继日志
relay_log=mall-mysql-relay-bin
# log_slave_updates表示slave将复制事件写进自已的二进制日志
log_slave_updates=1
# slave设置为只读(具有super权限的用户除外)
read_only=1
  1. 重启 mysql-slave
docker restart mysql-slave
  1. 进行slave数据库
docker exec -it mysql-slave /bin/bash
  1. 从服务器上主从复制
change master to master_host="(主服务器ip)",\
master_user="slave",\
master_password="123456",\
master_port=3307,\
master_log_file="mall-mysql-bin.000001",\
master_log_pos=154,\
master_connect_retry=30;
  1. 从服务器查看主从同步状态
show slave status \G;
  1. 从服务器开启主从复制
start slave;

Dockerfie

常用保留字指令

  1. FROM 当前境像是基于那个镜像的
FROM
  1. MAINTAINER 镜像的维护者
MAINTAINER
  1. RUN 容器构建时需要运行的命令
RUM
  1. EXPOSE 当前容器对外暴露出的端口
EXPOSE 
  1. WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
WORKDIR
  1. USER 指定该镜像以什么样的用户去执行,如果都不指定,默认是root
USER
  1. ENV 用来在构建镜像过程中设置环境变量
ENV
  1. ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
ADD
  1. COPY 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
COPY
  1. VOLUME 容器数据卷,用于数据保存和持久化工作
VOLUME
  1. 指定容器启动后的要干的事情
CMD
  1. ENTRYPOINT 也是用来指定一个容器启动时要运行的命令
 ENTRYPOINT

Dockerfile构建制作镜像

  1. 编写Dockerfile
FROM centos:7
MAINTAINER zzyy
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
  1. 构建镜像
docker build -t 新境像名:Tag .
docker build -t centosjava8:1.5 .

Docker网络

  1. 查看docker网络
docker network ls
  1. 查看网络源数据
docker network inspect bridge
  1. 创建自定义网络
docker network create custom_network
  1. 加入自定义网络
docker run -d 8081:8080 --network custom_network --name tomcat81 tomcat

DockerCompose

  1. 下载docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 给docker-compose赋权限
chmod +x /usr/local/bin/docker-compose
  1. 查看是否安装成功
docker-compose --version
  1. 启动所有docker-compose服务
docker-compose up 
  1. 后台启动所有docker-compose服务
docker-compose up -d
  1. 检测docker-compose编写是否正确
docker-compose config -q

Docker轻量级可视化工具Portainer

  1. 安装Portainer

Portainer

docker run -d -p 8000:8000 -p 9000:9000 --name portainer     --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data\
portainer/portainer

Docker容器监控之 CAdvisor+InfluxDB+Granfana

  1. 安装CAdvisor+InfluxDB+Granfana
version: '3.1'
volumes:
  grafana_data: {}
services:
 influxdb:
  image: tutum/influxdb
  restart: always
  environment:
    - PRE_CREATE_DB=cadvisor
  ports:
    - "8083:8083"
    - "8086:8086"
  volumes:
    - ./data/influxdb:/data
 cadvisor:
  image: google/cadvisor
  links:
    - influxdb:influxsrv
  command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
  restart: always
  ports:
    - "8080:8080"
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
 grafana:
  user: "104"
  image: grafana/grafana
  user: "104"
  restart: always
  links:
    - influxdb:influxsrv
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  environment:
    - HTTP_USER=admin
    - HTTP_PASS=admin
    - INFLUXDB_HOST=influxsrv
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root
  1. 运行docker-compose
docker-compose up -d 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值