CentOS docker 运行权限设置
1 | 1. sudo groupadd docker # 一般安装docker后已经创建 |
Docker 底层技术
- Namespaces - 隔离 pid, net, ipc, mnt, uts
- Control groups - 资源限制 cgroups
- Union file systems - Container 和 Image 分层
Docker secret 的两种方式
1 | 文件 |
RabbitMQ Docker 设置
问题
RabbitMQ的原始镜像没有设置admin用户及相应的权限
解决
1 | 镜像 |
Docker mirror & Insecure-registry 设置
Harbor默认需要配置SSL,如果不配置,需要在 docker 端配置 insecure-registry 才可以 PUSH
1 | sudo vim /etc/docker/daemon.json |
1 | { |
1 | sudo systemctl reload docker |
资源需要做隔离 ( Linux Namespaces )
- UTS: 主机名、域名
- Mount:
- IPC:
- PID: init
- User
- Net
容器中只有一个进程
Docker容器默认将容器内部第一个进程,就是 pid=1 的程序作为 Docker 容器是否正在运行的依据,如果 Docker 容器 pid 挂了,那么docker容器便会直接退出。
Docker run 的时候将 command 作为容器内部命令,如果使用 nginx,那么 nginx 程序将后台运行,这个时候nginx并不是pid为1的程序,而是执行的bash,这个bash执行了nginx指令后就挂了,所以容器就会退出。
所以,容器中的进程,一定不要跑后台,因为容器中只有一个进程,跑后台就会终止。
例如:运行 nginx 容器 command
1 | nginx -g 'daemon off;' |
通过Container生成Image
1 | docker commit -a “xxx <xxx@163.com>” -p RUNNING_CONTAINER_NAME IMAGE_NAME |
一般情况下,要用 -p 参数,暂停容器的运行
改变Image的默认运行方式
1 | docker commit -a 'xxx <xxx@163.com>' -c 'CMD ["/bin/httpd","-f”,"-h","/data/html"]' -p b1 dreamstep36/busybox:httpd |