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