Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 apt 来安装
sudo apt update swapoff -a #关闭swap分区 vim /etc/fstab #编辑swap这行注释掉 sudo apt install docker.io -y docker --version
默认情况下,普通用户没有权限执行 docker 相关操作,需要将普通用户加入到 docker 用户组
sudo usermod -aG docker $USER
然后重启机器,docker命令就能直接使用了
docker info Client: Context: default Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.2 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: runc version: init version: Security Options: apparmor seccomp Profile: default Kernel Version: 5.8.0-59-generic Operating System: Ubuntu 20.04.2 LTS OSType: linux Architecture: x86_64 CPUs: 12 Total Memory: 13.56GiB Name: sukki ID: XIG5:VQCR:23NZ:4FGN:5HVP:BAJX:W3AY:VWNG:4XFZ:YD2B:MIE3:42KV Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: No blkio weight support WARNING: No blkio weight_device support
查看docker版本命令
docker -v Docker version 20.10.2, build 20.10.2-0ubuntu1~20.04.2
由于 docker 默认镜像仓库在海外,所以需要配置国内源来加快镜像拉取速度
我这里修改的是163的镜像仓库
sudo vim /etc/docker/daemon.json { "registry-mirrors": [ "http://hub-mirror.c.163.com" ] }
重启docker服务
sudo systemctl restart docker
查看配置是是否生效
docker info | grep -E "Registry|http"
接着我们拉取一个镜像试试
docker run ubuntu docker ps -a
docker-compose安装也很简单
sudo apt install docker-compose -y docker-compose -v Docker version 20.10.2, build 20.10.2-0ubuntu1~20.04.2
接下来测试使用docker-compose安装一个nginx容器
docker-compose.yml文件如下
version: '2.0' services: nginx: restart: always image: nginx:1.11.6-alpine ports: - 8080:80 - 80:80 - 443:443 volumes: - ./conf.d:/etc/nginx/conf.d - ./log:/var/log/nginx - ./www:/var/www - /etc/letsencrypt:/etc/letsencrypt
version:版本号
service:就是要定义的docker容器
nginx:容器的名称
restart:设置为always,表明此容器应该在停止的情况下总是重启,比如,服务器启动时,这个容器就跟着启动,不用手动启动,服务器启动之后,进入到docker-compose.yml文件路径下,执行docker-compose ps可以看到,该容器正在运行。
image:这个是需要依赖的容器,也就是nginx软件,可以到docker官方镜像上找到最新版的镜像。
ports:这个是容器自己运行的端口号和需要暴露的端口号。比如: - 8080:80,表示容器内运行着的端口是80,把端口暴露给8080端口,从外面访问的是8080端口,就能自动映射到80端口上。
volumes:这个是数据卷。表示数据、配置文件等存放的位置。(- . 这个表示docker-compose.yml当前目录位置开始创建这个文件)
接下来运行刚才构建的镜像
docker-compose -f docker-compose.yml up -d
我们可以通过docker ps和docker-compose ps查看容器情况
docker-compose up //启动yml文件定义的 container docker-compose up -d //后台运行 docker-compose up --help //查看up帮助 docker-compose -f docker-compose.yml up //-f 指定yml文件 docker-compose stop //停止 docker-compose start docker-compose ls //查看 docker-compose down //停止删除 docker-compose ps docker-compose images docker-compose exec {service_name} {bash}
注:当yml文件名为docker-compose.yml时候可以直接在当前目录docker-compose up -d直接构建容器,其他操作也是不需要指定-f参数和yml文件名