标签:note cmd 原来 简介 失败 菜鸟 idg dmi 共享
手动下载安装
如果需要手动下载,请点击以下链接下载 Stable 或 Edge 版本的 Docker for Mac。
但是上面的地址是国外的,所以特别慢,推荐阿里云mac下载地址,全部系统的docker镜像地址
查看docker版本
在终端中输入: docker --version
显示 Docker version 19.03.8, build afacb8b
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,可用镜像地址:
配置
{
"registry-mirrors" : ["https://xxxxxx.mirror.aliyuncs.com"]
}
不同的配置方式
$ docker pull registry.docker-cn.com/library/ubuntu
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
$ dockerd --registry-mirror=https://registry.docker-cn.com
查看配置
docker info
查看docker相关信息配置dns
修改.daemon.json 文件来设置全部容器的dns,需要重启docker才能生效
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
登录 和github一样,有docker hub,用自己的账号可以在上面建立仓库,存储镜像,
docker login
登录docker logout
登出docker push username/ubuntu:18.04
username为你的账号名 ubuntu:18.04为镜像名和tag标签在安装镜像之前,我们需要知道各种镜像都有什么版本,可以去官方查看,我们找到对应的软件,然后查看它的tag列表即可,我们安装的时候,可以指明我们需要的tag号 docker pull mysql:5.6
, 菜鸟教程里面有个笔记很详细,也可以参考
docker search nginx
命令来查看可用版本docker pull nginx:latest
docker images
docker run --name test-nginx -p 8080:80 -d nginx:latest
--name nginx-test: 容器名称
-p 8080:80 端口映射 将本地8080端口映射到容器内部的80端口上
-d 加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)
127.0.0.1:8080
可以看到访问成功界面docker search php
docker pull php:7.0-fpm
默认为: docker pull php:latest
mkdir -p ~/docker/nginx/www
启动php docker run --name test-php -v ~/docker/nginx/www:/docker/php/www:ro -d php:7.0-fpm
--name test-php :将容器名称定义为 test-php
-v ~/docker/nginx/www:/docker/php/www 将主机项目中的目录www挂载到容器的www目录
-d 后台运行
注意 注意 注意
创建 ~/docker/nginx/conf/conf.d 目录:mkdir -p ~/docker/nginx/conf/conf.d
mkdir -p ~/docker/nginx/www
在该目录下添加 vim ~/docker/nginx/conf/conf.d/default.conf 文件,内容如下:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html; #项目的根目录
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /docker/php/www/$fastcgi_script_name;
include fastcgi_params;
}
}
配置文件说明:php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
/docker/php/www/: 是 test-php 中 php 文件的存储路径,映射到本地的 ~/docker/nginx/www 目录。
启动nginx docker run --name test-nginx -p 80:80 -v ~/docker/nginx/www:/usr/share/nginx/html:ro -v ~/docker/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link test-php:php -d nginx:latest
-name 容器的名称
-p 端口映射,把本地的80映射到容器的80端口
-v 挂载
~/docker/nginx/www是本地的html文件目录,/usr/share/nginx/html是容器内html的文件存储目录
~/docker/nginx/conf/conf.d是本地的nginx配置文件的目录,/etc/nginx/conf.d是容器内nginx配置文件的目录
:ro 表示只读
--link test-php:php 把test-php的网络并入到nginx中,并修改nginx的/etc/hosts 把域名php映射成127.0.0.1,让nginx通过php:9000访问php-fpm
docker search mysql
docker pull mysql:5.7
mkdir -p ~/docker/mysql/data ~/docker/mysql/logs ~/docker/mysql/conf
docker run --name test-mysql -p 3306:3306 -v ~/docker/mysql/data:/docker/mysql/data -v ~/docker/mysql/conf:/etc/mysql -v ~/docker/mysql/logs:/docker/mysql/logs -e MYSQL_ROOT_PASSWORD=123456 --link test-php:php -d mysql:5.7
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。 MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。 注意:这里的mysql:后面要加对应的tag 如果不加,他会默认去用latest,如果没有,它回去pull
docker run -it --link test-mysql:mysql --rm mysql sh -c ‘exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"‘
docker pull phpmyadmin/phpmyadmin
这里就按search出来的名字, 一个phpmyadmin会找不到docker run --name test-phpmyadmin -p 8080:80 --link test-mysql:db -d phpmyadmin/phpmyadmin:latest
```
#!/bin/bash
#先清除所有容器 要先停止再删除
docker stop $(docker ps -q) && docker rm $(docker ps -aq)
#首先创建文件夹和文件
mkdir -p ~/docker/nginx/www ~/docker/nginx/conf/conf.d
mkdir -p ~/docker/mysql/conf ~/docker/mysql/logs ~/docker/mysql/data
touch ~/docker/nginx/conf/conf.d/default.conf
#写入配置文件
cat >> ~/docker/nginx/conf/conf.d/default.conf <<EOF
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html; #项目的根目录
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /docker/php/www/\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
#EOF中得变量会被解析 这里$前要加\,这个错误我找了一下午...
# EOF 加反斜杠,或用单引号、双引号包围 。适用变量多的情况 <<‘EOF‘
#创建容器
docker run --name test-php -v ~/docker/nginx/www:/docker/php/www:ro -d php:7.0-fpm
docker run --name test-nginx -p 80:80 -v ~/docker/nginx/conf/conf.d:/etc/nginx/conf.d:ro -v ~/docker/nginx/www:/usr/share/nginx/html:ro --link test-php:php -d nginx:latest
docker run --name test-mysql -p 3306:3306 -v ~/docker/mysql/conf:/docker/mysql/conf:ro -v ~/docker/mysql/logs:/docker/mysql/logs:ro -v ~/docker/mysql/data:/docker/mysql/data -e MYSQL_ROOT_PASSWORD=123456 --link test-php:php -d mysql:5.7
docker run --name test-phpmyadmin -p 8080:80 --link test-mysql:db -d phpmyadmin/phpmyadmin:latest
```
docker search redis
docker pull redis:latest
docker run -itd --name test-redis -p 6379:6379 redis:latest
创建容器docker exec -it test-redis /bin/bash
然后再执行 redis-cli
进入操作界面帮助命令
docker
docker coomand --help
操作容器
docker run -itd --name test-redis -v ~/redis/logs:/logs:ro -P --dns=8.8.8.8 --network test-net redis:latest /bin/bash
-i 交互式操作 通常和-t一起使用
-t 终端
-d 后台运行容器并返回容器id
-p 指定主机和容器的端口映射 端口后面可以加/tcp /udp默认是/tcp
-P 随机端口映射
-v 绑定一个卷,挂载映射目录
--name xxx 为容器指定一个名称
--network netName 指定network
--dns=8.8.8.8 指定当前容器的dns
--link test-mysql:db 添加链接到另一个容器
/bin/bash 在容器内执行/bin/bash命令 要退出终端 exit
docker start/stop/restart container id/container name 对一个或者多个容器进行启动/停止/重启
docker attach container id/name
进入容器,但是如果用attach退出容器时,会导致容器停止
docker exec container id/name
推荐使用exec进入容器,退出容器终端也不会导致容器停止
查看容器
docker images
查看所有镜像
docker ps
查看所有正在运行的容器
docker ps -a
查看所有容器,包括未运行的
docker ps -q
静默模式,只显示容器编号
docker ps -l
查看最后一次创建的容器信息
查看更多容器信息
docker port container name/id
查看容器的端口映射情况docker logs -f container name/id
查看容器的内部标准输出 -f 类似 tail -f 来输出容器内部的标准输出docker top container name/id
查看容器内部的进程docker inspect container name/id
查看容器的配置和状态信息,是一个json格式的文件删除容器
docker rm -f -l - v containerName
删除容器 ,删除容器必须是容器在停止的状态下,否则会报错
-f 可以强制删除一个运行中的容器
-l 删除容器之间的链接
-v 删除与容器相关的卷
docker contianer prune
清理掉所有处于终止状态的容器
docker stop $(docker ps -q)
停止全部运行中的容器
docker rm $(docker ps -aq)
删除全部容器
docker stop $(docker ps -q) && docker rm $(docker ps -aq)
一条命令实现停用并删除容器
导出/导入容器
docker export container id/name > xxx.tar
导出容器到本地目录 一定要加 >cat nignx.tar | docker import - imageName:tag
将外部导入到本地镜像,不是容器哦,容器需要通过本地镜像来生成docker import url
也可以导入远程url或某个目录更新镜像
从已经创建的容器中跟新镜像,并提交这个镜像
docker run --name old-ubuntu -it ubuntu:15.10 /bin/bash
apt-get-updata
在进行的容器中进行更新
exit
退出容器
docker commit -m "my update" -a="djw" container id image name :tag
-m 提交的描述信息
-a 指定镜像的作者
创建镜像
vim Dockerfile
创建一个Dockerfile文件
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo ‘root:123456‘ |chpasswd
RUN useradd runoob
RUN /bin/echo ‘runoob:123456‘ |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。
docker build -t djw-centos6.7 .
-t 指定要创建的镜像名 . Dockerfile文件所在目录,可以指定绝对路径
docker run -it djw-centos6.7 /bin/bash
docker tag image id djw-centos6.7:dev
镜像id 镜像源名 新的tag标签
容器互联
docker network create -d bridge test-net
新建网络 -d 指定网络类型,有 bridge overlaydocker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash
mac在安装docke的时候就附带了compose,我们可以查看它是否真的安装docker-compose --version
Redis 集群是一个提供在多个 Redis 节点间共享数据的程序集。
Redis 集群并不支持处理多个 keys 的命令,因为这需要在不同的节点间移动数据,从而达不到像 Redis 那样的性能,在高负载的情况下可能会导致不可预料的错误.
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。
Redis 集群的优势:
Redis 集群没有使用一致性 hash, 而是引入了哈希槽的概念。Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽,集群的每个节点负责一部分 hash 槽。
下载配置文件,打包好的全部配置 可以直接使用
要点
/c/project/docker/redis/config
这里要改成你自己的下载文件中config对应的目录路径The path /c/project/docker/redis/config is not shared from OS X and is not known to Docker. You can configure shared paths from Docker -> Preferences... -> File Sharing. See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info. .
在 docker-compose.yml目录下执行 docker-compose up -d
,如果成功 done
初始化集群(这一步开始命令须在 redis5.0 及以上版本运行)。
$ redis-cli --cluster create 192.168.99.100:6391 192.168.99.100:6392 192.168.99.100:6393 192.168.99.100:6394 192.168.99.100:6395 192.168.99.100:6396 --cluster-replicas 1
标签:note cmd 原来 简介 失败 菜鸟 idg dmi 共享
原文地址:https://www.cnblogs.com/djwhome/p/12774353.html