docker
项目 | 地址 |
---|---|
晓智科技 | 晓智科技 |
晓智文档 | 晓智文档 |
文档源码 | 文档源码 |
docker 安装
[阿里云境像服务登录不上](https://juejin.cn/post/6954645387542003726)
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl stop docker
docker version
docker run hello-world
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
配置阿里云境像
https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors
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常用命令
帮助启动类命令
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
docker info
docker --help
docker image --help
镜像命令
docker images -a
docker images -q
docker search mysql(境像名称)
docker search --limit 5 mysql(境像名称)
docker pull mysql:latest(境像名称)
docker pull mysql:6.0.8 (境像名称:[tag])
docker system df
docker rmi -f feb5d9fea6a5(Image ID)
docker rmi -f $(docker images -qa)
容器命令
docker run -it ubuntu(境像名称) /bin/bash
docker run -it --name=myubuntu ubuntu(境像名称) /bin/bash
docker run -d redis:6.0.8(容器名)
docker logs 3b5d312e445d(容器id)
docker top 3b5d312e445d(容器id)
docker inspect 3b5d312e445d(容器id)
docker exec -it 3b5d312e445d(容器id) /bin/bash
docker attach -it 3b5d312e445d(容器id) /bin/bash
docker cp docker cp d49bf82c61ee:/home/aaa.txt(容器id:容器路径) /home
docker export d49bf82c61ee(容器id) > ubuntu.tar
cat ubuntu.tar | docker import - ubuntu
apt-get update
apt-get -y install vim
docker commit -m 'vim cmd add ok' -a='zhangdezhi' 199cf9ead58b(容器id) xiaozhi/ubuntu:1.3
docker login --username=31429*****@qq.com registry.cn-shenzhen.aliyuncs.com
docker pull registry.cn-shenzhen.aliyuncs.com/xiaozhicloud/myubuntu1.3:[镜像版本号]
$ docker push registry.cn-shenzhen.aliyuncs.com/xiaozhicloud/myubuntu1.3:[镜像版本号]
docker ps
docker ps -a
docker ps -l
docker ps -q
exit
ctrl+p+q
docker start 6f7f870398f2(容器id或容器名称)
docker restart 6f7f870398f2(容器id或容器名称)
docker stop 6f7f870398f2(容器id或容器名称)
docker kill 6f7f870398f2(容器id或容器名称)
docker rm 6f7f870398f2(容器id或容器名称)
容器数据卷
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /home/data:/home/data ubuntu
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /home/data:/home/data:ro ubuntu
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v --volumes-form u1 --name=u2 ubuntu
dcoker inspect ee7f32630de9(容器id)
安装常规软件的安装
docker search tomcat
docker pull tomcat
docker run -d -p 8080:8080(端口映射) --name t1 tomcat
docker stop t1
docker rmi 容器id
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
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主从复制
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
# 文件路径
# /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
docker restart mysql-mater(容器id或容器名称)
create user 'slave'@'%' IDENTIFIED BY '123456'
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
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
# /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
docker restart mysql-slave
docker exec -it mysql-slave /bin/bash
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;
show slave status \G;
start slave;
Dockerfie
常用保留字指令
FROM
MAINTAINER
RUM
EXPOSE
WORKDIR
USER
ENV
ADD
COPY
VOLUME
CMD
ENTRYPOINT
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
docker build -t 新境像名:Tag .
docker build -t centosjava8:1.5 .
Docker网络
docker network ls
docker network inspect bridge
docker network create custom_network
docker run -d 8081:8080 --network custom_network --name tomcat81 tomcat
DockerCompose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose up
docker-compose up -d
docker-compose config -q
Docker轻量级可视化工具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
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
docker-compose up -d