如果之前有过安装docker,先卸载之前版本
apt-get remove docker docker-engine docker.io containerd runc
首先,更新现有的软件包列表:
sudo apt update
接下来,安装一些必备软件包,这些apt软件包可以通过HTTPS使用软件包:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
然后将官方Docker存储库的GPG密钥添加到系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将Docker存储库添加到APT源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
接下来,使用新添加的存储库中的Docker软件包更新软件包数据库:
sudo apt update
确保从Docker仓库而不是默认的Ubuntu仓库进行安装:
apt-cache policy docker-ce
注意,docker-ce尚未安装,但候选安装来自Ubuntu 18.04(bionic)的Docker存储库。
最后,安装Docker:
sudo apt install docker-ce
现在应该安装Docker,启动守护程序,并启用该进程以在启动时启动。检查它是否正在运行:
sudo systemctl status docker
将用户加入到docker组,可以避免在执行docker命令时必须加上sudo。退出终端重新连接后生效
sudo usermod -aG docker cloud
要检查是否可以从Docker Hub访问和下载映像,请输入:
docker run hello-world
搜索Ubuntu映像,请输入:
docker search ubuntu
执行以下命令将正式ubuntu映像下载到计算机:
docker pull ubuntu
要查看已下载到计算机的映像,请键入:
docker images
使用-i和-t的组合以交互式运行Ubuntu映像:
docker run -it ubuntu
docker run -d -p 8081:8081 --name nexus3 --restart=always sonatype/nexus3
先解释下这条命令:
-d:表示在docker守护线程运行这个镜像;
-p:表示绑定端口,前面的端口表示宿主机端口,后面的表示容器端口,如果宿主机的8081端口已经被占用了,那么可以改为8082:8081,容器端口8081是nexus3规定的。可以绑定多对端口,-p xx:xx -p xx:xx
--restart=always:这个指定docker重启启动容器,当服务器或者docker进程重启之后,nexus容器会在docker守护进程启动后由docker守护进程启动容器,容器的重启策略很多,大家可以自己去看看对应的资料;
--name :这里是指定了容器建立后的名称;
sonatype/nexus3是镜像名
docker run -d -v mydata:/data xxxx
容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中。在这行命令中,使用了 mydata 这个命名卷挂载到了 /data 这个位置,替代了 Dockerfile 中定义的匿名卷的挂载配置
要查看活动容器,请使用:
docker ps
要启动已停止的容器,使用
docker start [container-id or name]
//example:docker start d9b100f2f636
要停止正在运行的容器,使用
docker stop [container-id or name]
//example:docker stop sharp_volhard
删除容器,使用
docker rm [container-id or name]
使用docker ps -a命令查找容器ID或名称,然后将其删除。
Docker Compose
安装Docker Compose
检查安装版本最新版本,如有必要,在下面的命令中对其进行更新:
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
然后,通过检查版本来验证安装是否成功:
docker-compose --version
output:docker-compose version 1.25.2, build 698e2846
使用Docker Compose
查看指定命令的帮助文档sudo docker-compose help [build]
构建(重新构建)容器sudo docker-compose build
验证 Compose 文件格式是否正确sudo docker-compose config
强制停止指定服务容器sudo docker-compose kill
查看服务的日志输出sudo docker-compose logs
打印绑定的公共端口sudo docker-compose port
列出所有的容器sudo docker-compose ps
下载服务镜像sudo docker-compose pull
删除容器sudo docker-compose rm
在服务容器上运行命令sudo docker-compose run [container-name] bash
启动已停止的的容器sudo docker-compose start
停止已运行的容器sudo docker-compose stop
构建、创建、重建、启动容器sudo docker-compose up
后台运行容器sudo docker-compose up -d(确保命令执行路径下有.yml文件)
示例:
下载镜像的docker-compose.yml
wget example.yml
创建 volume 持久化 Redis 缓存
sudo docker volume create redis-data
启动
sudo docker-compose up -d
添加配置
修改 docker-compose.yml中的 environment 进行配置,修改后执行sudo docker-compose up -d
删除旧容器
sudo docker-compose down
停止容器并删除由docker-compose up创建的container,network,volume
其他问题
unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
解决
sudo chmod 666 /var/run/docker.sock
维护
自动清理容器
docker system prune -a
某些停止的容器也会被清理掉,谨慎使用
删除已关闭容器
#删除所有关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
清理日志
单独列出日志文件大小
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
清空日志文件
truncate -s 0 /path/to/your/textfile