docker常用指令

复制docker内的文件夹到宿主机,不要漏掉点,点代表当前目录

docker cp 实例名:/var/nginx .

进入docker实例内部

docker exec -it 实例名 bash

删除私有仓库里的镜像

docker exec -it 私有仓库容器名 rm -rf /var/lib/registry/docker/registry/v2/repositories/镜像名

docker run

host网络模式

--net host

自启动

--restart=always

docker加速器设置

vi /etc/docker/daemon.json

内容如下,json格式

{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}

registry-mirrors对应的值是加速器的数组,json结构.

添加不检查安全性的源(私有仓库)

{

  "insecure-registries": [
    "192.168.1.67:5000"
  ]

}

humpback部署心得

humpback官方教程

  1. 如果不用集群可以只部署humpback-web和humpback-agent。
  2. humpback-web是管理平台,自己没有数据,依赖humpback-agent提供数据
  3. humpback-web安传统教程部署就可以了
  4. humpback-agent要注意它说的-v是必须要加的,要不这个服务没有权限操作一些东西,agent部署成host网络
  5. 部署私有仓库时要用-v把配置文件对应出来,因为要加一些参数支持跨域请求

docker部署心得

  1. 关于网络的选择,如果和宿主机上的其它服务关联运行,选择host模式的网络会更方便,这样就可以用127.0.0.1了。比如nginx需要做转发就用host网络,还有就是注册中心,因为其他服务要依赖它,所以最好它的地址是固定的,用host网络只需要固定端口号,它的地址就被固定成127.0.0.1:port。但是防火墙是不会自动加到白名单里的,需要自己手动加。
  2. 如果服务自己能对立运行就不需要了。直接用默认网络用-p映射出去,不需要防火墙加白名单自动放开这个端口。
  3. 如果用host网络不需要指定端口号,默认会使用配置文件里的。如果想同时运行2个程序就要用-e修改SERVER_PORT了。
  4. 如果说打包的名称格式符合直接推送的格式就不需要再打tag了,直接push即可

docker的网络设置

常用网络有none、host、bridge、container

--net host
特殊指定host网络
模式 含义
none 不需要对外
host 仅主机网路,不需要做端口映射,直接用宿主机的端口,需要主动设置防火墙白名单
bridge 用的是nat网络,-p指定,不需要配置防火墙,自动就可以访问
#直接设置dns
--dns 8.8.8.8

安装docker版nginx

  1. 下载镜像

    docker pull nginx

  2. 运行镜像

    docker run -d -P --name nginx cd52

  3. 新建目录,并进入目录

    mkdir nginx
    cd nginx

  4. 拷贝配置到当前目录,.代表当前目录

docker cp nginx:/etc/nginx .

  1. 停止并删除nginx容器

    docker rm -f nginx

  2. 目录改名conf
    mv nginx conf

  3. 新建容器,把当前目录加卷
    docker run --name nginx -d -p 9012:80 -v /root/nginx/html:/usr/share/nginx/html -v /root/nginx/conf:/etc/nginx cd52

如果遇到/etc/nginx/nginx.conf权限问题打不开需要禁用selinux。

基于VMWare的集装箱化

vmware workstation可以导出vof格式的文件,该文件可以像docker一样,快速移植到其他装了vmware上机器上。通过简单的导入导出功能就能实现,导出时需要要求服务时开启的,并且需要导出的虚拟机处于关机状态。它会直接把所有的已经安装好的程序打包。换电脑部署时就不需要再装一遍这些软件和配置了,唯一的问题就是包会很大,因为包含的整个操作系统。导入就是打开ovf文件,后期还是建议改成docker的形式做。

安装docker版wordpress

指令

docker run --name wordpress --restart=always -d -p 81:80 -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_HOST=172.21.0.1 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD='xxxxxxx' -v /home/dockerapp/wordpress:/var/www/html 61
指令 含义
–name wordpress 实例名字
–restart=always 自动重启
-p 81:80 端口映射,虚拟机内的80对应宿主机的81,wordpress默认占用80端口
-e WORDPRESS_DB_NAME=wordpress 需要先建一个mysql数据库,名字在这里指定
-e WORDPRESS_DB_USER=root 数据库的用户名
-e WORDPRESS_DB_PASSWORD=’xxxxxxx’ 数据库的密码
-v 代码文件映射到宿主机

指令末端是镜像的名字