赞
踩
目录
修改格式,将commit打包的库,修改为符合私服库规范的tag
在/home/docker/nginx/www目录下创建index.html
在index.html随便写入内容,再访问 ip:8081/index.html
开启docker : systemctl start docker
查看docker状态 :systemctl status docker
停止:systemctl stop docker
重启: systemctl restart docker
docker开机自启: systemctl enable docker
docker search centos
docker pull nginx:1.23
下拉nginx 指定版本1.23,不指定版本默认拉取最新版本
docker images
docker image prune
修改前
修改后
docker image tag b692a91e4e15 ng:11 (根据容器ID修改)
(docker tag nginx:v1 ng:1.23) 可以省略image 【根据容器名与版本号修改】
会出现两个ID一样的镜像,并且rmi删除还报错
解决1 根据name和tag删除
删除后nginx不见了只有ng
docker rmi ID
rmi 删除 镜像
rm 删除容器
删除所有镜像: docker rmi -f $(docker images -qa)
- docker run -it --name=aa redis:5.6 /bin/bash
- docker run -it b692a91e4e15 /bin/bash
- i:一直运行
- d:后台运行
- t:分配一个终端
- -P 随机分配端口
- -m 限制内存
- --cpus 限制cpu个数
- --name 给容器一个名称 aa
- 启动redis 容器 5.6 这个版本
docker ps 查看正在运行容器列表
docker ps -qa 查看所有容器ID
-q 显示ID -a 所有容器
- docker exec -it redis /bin/bash
- docker exec -it b692a91e4e15 /bin/bash
如果是exec 进入容器 exit 可以退出 并且容器不会停止
如果是启动时进入的容器 ctrl+p + q 退出,并且容器不会停止,如果同exit 退出 容器会停止运行
- docker stop id
- docker stop name:tag
docker rm id
- docker restart 026e
- docker restart name:tag
docker kill 026e
docker image save id号 -o name(名称:redis5.tar) 打包tar
docker image load -i redis5.0.tar 将tar包 导入
docker cp web10:/etc/nginx/nginx.conf /root/data/web10
- docker export -o centos.tar bf4b4afa07e3
-
- -o 导出地址以及文件名
docker import centos.tar centos:test
-m 描述 -a 作者
xuzhi/centos_vim:vim-test name:tag
docker commit -m="add vim success" -a="xuzhi" bf4b4afa07e3 xuzhi/centos_vim:vim-test
登录阿里云 ---》 容器镜像服务 ----》 个人实例
1.创建命名空间(公开的)
2.镜像仓库
3.推送
4.拉取
下载镜像,用于搭建私有库:docker pull registry
docker run -d -p 8085:5000 -v /home/docker/registry/:/tmp/registry --privileged=true registry
privileged=true|false
true
container内的root拥有真正的root权限。
false
container内的root只是外部的一个普通用户权限。
默认false
privileged启动的容器
可以看到很多host上的设备
可以执行mount。
可以在docker容器中启动docker容器。
docker pull centos
运行centos
docker run -it --name registry-centos fef3c6abc4fc /bin/bash
yum list ifconfig
将容器打包为一个新的镜像
docker commit -m="vim /root/1.txt ifconfig" -a="registry-xuzhi" 27d54afbb753 registry-commit-centos:centos-ifconfig
docker run -it --name=run_registry_commit_centos c98b9a896fa0 /bin/bash
ifconfig 命令还是可以使用
curl -XGET http://39.103.229.69:8085/v2/_catalog
使用8085端口是因为运行 registry 设置-p 8085:5000
本地私服库为空
docker tag c98b9a896fa0 39.103.229.69:8085/registry_centos:1.0
规范 ip:prot /name : version
修改配置文件使之支持http
vim命令新增如下加粗内容:(别忘了逗号)
vim /etc/docker/daemon.json
registry-mirrors : docker 加速cdn
insecure-registries : 支持http
- {
- "registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
- "insecure-registries": ["192.168.111.162:5000"]
- }
systemctl restart docker
docker run -d -p 8085:5000 -v /home/docker/registry/:/tmp/registry --privileged=true registry
docker push 39.103.229.69:8085/registry_centos:1.0
curl -XGET http://39.103.***.69:8085/v2/_catalog
删除之前打包的镜像
docker rmi 39.103.229.69:8085/registry_centos:1.0
docker pull 39.103.229.69:8085/registry_centos:1.0
--privileged=true 使container内的root拥有真正的root权限
-v 目录映射 宿主机不存在的目录可以自动创建
如果宿主机的目录存在并且有文件,会直接覆盖容器目录中的文件
docker run -it --privileged=true -v /宿主机目录(绝对路径):/容器目录 镜像ID /bin/bash
docker inspect ID
普通的挂在数据: -v
宿主机不存在的目录可以自动创建
-v 参数会把当前系统的文件目录/home/test,挂在到创建的容器目录/usr/share/nginx/html上
docker run -it --name=nginx -p 8081:80 -v /home/test:/usr/share/nginx/html -d 605c77e624dd
docker run -it --name=n2 -p 8084:80 --volumes-from nginx -d 605c77e624dd
当前容器继承 上面的nginx容器,两个容器是相互独立的,nginx容器关闭不会影响当前容器
docker pull nginx:1.23
docker run -p 8081:80 --name nginx1 -d nginx:1.23
- # 创建挂载目录
- mkdir -p /home/docker/nginx/conf
- mkdir -p /home/docker/nginx/log
- mkdir -p /home/docker/nginx/html
- docker cp nginx1:/etc/nginx/nginx.conf /home/docker/nginx/conf/nginx.conf
-
- docker cp nginx1:/etc/nginx/conf.d /home/docker/nginx/conf/conf.d
-
- docker cp nginx1:/usr/share/nginx/html /home/docker/nginx/www
docker rm -f nginx1
- docker run \
- -p 8081:80 \
- --name nginx \
- -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
- -v /home/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
- -v /home/docker/nginx/logs:/var/log/nginx \
- -v /home/docker/nginx/www:/usr/share/nginx/html \
- -d nginx:1.23
docker pull mysql:5.7
docker run -d -p 8086:3306 --name mysql5.7 -v /home/docker/mysql/log:/var/log/mysql -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
上述命令的含义:
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号
切换到 /home/docker/mysql/conf 下
- cd /home/docker/mysql/conf
- touch my.cnf
使用vim
命令对 my.cnf
文件添加如下内容,在docker中安装的mysql默认字符集是latin1
,需要改成utf8
- [client]
- default_character_set=utf8
- [mysqld]
- collation_server = utf8_general_ci
- character_set_server = utf8
docker restart mysql
navicat
连接mysql
docker pull redis:6.0.8
在docker run之前,先将redis.conf 拷贝到/home/docker/redis目录下
/home/docker/redis 是自己的配置目录,可以自定义
- # bind 192.168.1.100 10.0.0.1
- # bind 127.0.0.1 ::1
- #bind 127.0.0.1
-
- protected-mode no
-
- port 6379
-
- tcp-backlog 511
-
- #requirepass 654321
-
- timeout 0
-
- tcp-keepalive 300
-
- daemonize no
-
- supervised no
-
- pidfile /var/run/redis_6379.pid
-
- loglevel notice
-
- logfile ""
-
- databases 30
-
- always-show-logo yes
-
- save 900 1
- save 300 10
- save 60 10000
-
- stop-writes-on-bgsave-error yes
-
- rdbcompression yes
-
- rdbchecksum yes
-
- dbfilename dump.rdb
-
- dir ./
-
- replica-serve-stale-data yes
-
- replica-read-only yes
-
- repl-diskless-sync no
-
- repl-disable-tcp-nodelay no
-
- replica-priority 100
-
- lazyfree-lazy-eviction no
- lazyfree-lazy-expire no
- lazyfree-lazy-server-del no
- replica-lazy-flush no
-
- appendonly yes
-
- appendfilename "appendonly.aof"
-
- no-appendfsync-on-rewrite no
-
- auto-aof-rewrite-percentage 100
- auto-aof-rewrite-min-size 64mb
-
- aof-load-truncated yes
-
- aof-use-rdb-preamble yes
-
- lua-time-limit 5000
-
- slowlog-max-len 128
-
- notify-keyspace-events ""
-
- hash-max-ziplist-entries 512
- hash-max-ziplist-value 64
-
- list-max-ziplist-size -2
-
- list-compress-depth 0
-
- set-max-intset-entries 512
-
- zset-max-ziplist-entries 128
- zset-max-ziplist-value 64
-
- hll-sparse-max-bytes 3000
-
- stream-node-max-bytes 4096
- stream-node-max-entries 100
-
- activerehashing yes
-
- hz 10
-
- dynamic-hz yes
-
- aof-rewrite-incremental-fsync yes
-
- rdb-save-incremental-fsync yes
-
docker run --restart=always -p 8087:6379 --name redis1 --privileged=true -v /home/docker/redis/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf --requirepass 123456
--restart=always 总是开机启动 【加上此参数重启docker后,redis会自动启动】
--privileged=true docker 以root用户运行
–log是日志方面的
-p 6379:6379 将6379端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载
/home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
/home/redis/myredis/data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes 开启redis 持久化
–requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
php测试连接
- <?php
- $redis = new Redis(); //创建一个对象
- $redis->connect('192.168.255.166',8089); //连接redis
- $redis->auth("123456");
- $redis->select(0); //选择数据库(默认16个数据库,0-15,这个值可以在配置文件修改。)
- $redis->set('a1', 'hahah'); //往redis写入一条记录
- echo $redis->get('a1'); //从redis中读取一条记录
connect 将某个容器连接到一个docker网络
create 创建一个docker局域网络
disconnect 将某个容器退出某个局域网络
inspect 显示某个局域网络信息
ls 显示所有docker局域网络
prune 删除所有未引用的docker局域网络
rm 删除docker网络
bridge:桥接模式 | 为每个容器分配设置IP,并将容器连接到docker0 虚拟网卡上
host:主机模式 | 容器使用宿主机的ip和端口
none:无网络模式 | 容器有独立的网络,并没有对给网络分配端口和ip
1.创建网络
docker network create a_network
2.新建容器加入自定义网络
docker run -d -p 8081:8080 --network a_network --name centos1 centos:7 /bin/bash
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。