Docker
常见参数
资源限制
文件夹映射
安装docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   |  curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
 
  yum remove docker docker-client docker-client-latest docker-common \     docker-latest docker-latest-logrotate docker-logrotate docker-engine
 
  echo " === install yum-utils === " yum install -y yum-utils
 
  yum-config-manager \     --add-repo \     https://download.docker.com/linux/centos/docker-ce.repo  
  yum install docker-ce docker-ce-cli containerd.io -y systemctl start docker.service systemctl enable docker.service docker version
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | 
 
docker 换源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | cat >>/etc/docker/daemon.json <<EOF {     "registry-mirrors":[          "http://docker.mirrors.ustc.edu.cn",          "http://hub-mirror.c.163.com",          "http://registry.docker-cn.com"     ] ,     "insecure-registries":[        "docker.mirrors.ustc.edu.cn",          "registry.docker-cn.com"     ] }   EOF
 
  service docker restart
   | 
 
启docker生效
service docker restart
镜像
就是类似于虚拟机中的iso文件
容器
就是运行中的系统
tar文件
将一个镜像保存为tar文件
Dockerfile
写构建的步骤来制作镜像
仓库
保存了很多镜像
免费使用
点这里
–link myng:myng
将另一个容器储存为域名,其实是在/etc/hosts中加入了一行映射
复杂的Docker
比方你有一个nginx服务,php服务,mysql服务,nginx依赖php,php依赖mysql,这个依赖关系导致我们需要先创建mysq,然后创建php。这就很麻烦,部署、重启啊很麻烦的。
docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | version: "3" services:   nginx:     image: nginx     ports:     - 80:80     volumes:     - /root/html:/usr/share/nginx/html     - /root/conf/nginx.conf:/etc/nginx/nginx.conf   php:     image: php     volumes:     - /root/html:/var/www/html   mysql:     images: mysql     enviroment:     - MYSQL_ROOT_PASSWORD=123456
   | 
 
启动
故障
查看防火墙状态(若防火墙为关闭状态,可跳过防火墙有关设置):
sudo firewall-cmd --state
若返回runging,则防火墙为开启状态,查看防火墙是否开启ip地址转发(ip地址伪装):
sudo firewall-cmd --query-masquerade
若返回no,则输入以下命令开启ip地址转发:
sudo firewall-cmd --add-masquerade --permanent
然后输入以下命令使修改生效:
sudo firewall-cmd --reload
如果有一天发现docker把空间占满了,我们可以先暂停docker,然后使用软连接将/var/lib/docker放置到其他地方
Docker临时容器妙用
1 2 3
   | docker run -it --rm --net=host centos:centos8 bash yum install vim wget lrzsz -y
 
   | 
 
小内存
1
   | -m 50M --memory-swap=1024M \
   | 
 
Docsker 自动更新容器
1 2 3 4 5
   | docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ -m 50M --memory-swap=1024M \ v2tec/watchtower
   | 
 
Docker的坑
千万不要在docker启动以后重启防火墙!!!!!!
Docker 命令行
docker非常有用,很多时候你不需要下载那些奇怪的东西,你只需要一个别名,就能使用下面这些应用
1 2 3 4 5 6 7 8 9 10 11
   | alias busybox='docker run -it --rm -v $PWD:$PWD -w $PWD busybox' alias centos='docker run -it --rm -v $PWD:$PWD -w $PWD centos:8' alias dot='docker run -it --rm -v $PWD:$PWD -w $PWD fightinggg/graphviz dot' alias rar='docker run -it --rm -v $PWD:$PWD -w $PWD fightinggg/rar rar' alias unrar='docker run -it --rm -v $PWD:$PWD -w $PWD fightinggg/rar unrar' alias java8='docker run -it --rm -v $PWD:$PWD -w $PWD openjdk:8 java' alias mvn8='docker run -it --rm -v $HOME/.m2:/root/.m2 -v $PWD:$PWD -w $PWD maven:3.8.1-jdk-8 mvn' alias java='docker run -it --rm -v $PWD:$PWD -w $PWD openjdk java' alias mvn='docker run -it --rm -v $HOME/.m2:/root/.m2 -v $PWD:$PWD -w $PWD maven mvn' alias jpegoptim='docker run -it --rm -v $PWD:$PWD -w $PWD fightinggg/jpegoptim jpegoptim' alias tree='docker run -it --rm -v $PWD:$PWD -w $PWD fightinggg/tree tree'
   | 
 
参考
10分钟,快速学会docker
实战~如何组织一个多容器项目docker-compose