wget -qO- get.docker.com | bash # 一键安装 # ubuntu 清华镜像安装 apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common # 安装依赖 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # 添加 arm64 软件仓库 apt-get update && apt-get install docker-ce docker-ce-cli containerd.io # help https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/ https://docs.docker.com/engine/install/ubuntu/ # 安装方式二: # 在新主机上首次安装Docker CE之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io # 安装最新版本的Docker CE和containerd # CentOS8 dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo dnf list docker-ce dnf install docker-ce --nobest -y https://linuxconfig.org/how-to-install-docker-in-rhel-8 # help systemctl start docker # 启动 systemctl enable docker # 开机启动 yum remove docker-ce # 卸载 # help https://docs.docker.com/install/linux/docker-ce/centos/ # Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? systemctl daemon-reload systemctl restart docker.service vi /etc/docker/daemon.json # Docker 国内镜像,拷贝以下内容: { "registry-mirrors": [ "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ] } systemctl restart docker # 重启使配置生效 # 修改目录 systemctl stop docker.service # 关闭docker服务 (Warning docker.socket:systemctl stop docker.socket) mv /var/lib/docker /package/docker-data # 移动数据到新的目录 # 修改docker.service文件,末尾追加 --graph 参数 vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --graph /package/docker-data systemctl daemon-reload && systemctl restart docker.service # reload配置&&重启 docker info | grep Dir # 查看数据目录 # 常用命令记录 docker -v # 获取版本 docker ps # 列出容器 docker ps -a # 显示所有的容器,包括未运行的 docker rm 容器ID # 删除容器 docker exec -it 容器ID /bin/bash # 进入正在运行的某个容器 docker exec -it 容器ID /bin/bash -c "date" # 宿主执行容器里面的命令 docker start 容器ID或容器名 # 启动容器 # 停止容器,参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态 docker stop 容器ID或容器名 docker stop -t=60 容器ID或容器名 docker kill 容器ID或容器名 # 直接关闭容器 docker restart 容器ID或容器名 # 不管容器是否启动,直接重启容器 docker images # 列出镜像 docker rmi 镜像ID # 删除某镜像 docker search 关键字 # 镜像搜索 docker pull 镜像名称 # 下载镜像 docker run -it 镜像名称 /bin/bash # 运行镜像&进入命令 docker tag 镜像ID 仓库:标签 # 根据镜像ID重命名仓库和标签 docker build -t 包名:tag . # 构建 docker run -p 8080:80 --name 别名 镜像ID # 运行 docker logs -f $ID # 查看输出日志 docker cp 容器ID:/etc/hosts /tmp # 拷贝:容器→宿主 docker cp /tmp/a.txt 容器ID:/tmp # 拷贝:宿主→容器 # Docker的持久化存储 docker volume ls # 查看volume列表 docker volume inspect 6ce358b6561136550039f9ec640b1aa0c89dfd05e5ea1c2ec4e2f8a7e37ca011 # 查看详情 docker volume rm 6ce358b6561136550039f9ec640b1aa0c89dfd05e5ea1c2ec4e2f8a7e37ca011 # 删除volume # 创建服务并指定volume名称和路径 -v netnr:/netnr # 这种模式下,数据会保存到指定位置,即时删除了容器,数据也会保留,下次创建指定此路径的话,数据会恢复 docker run -v /netnr:/netnr -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d justin2004/mssql_server_tiny # help https://blog.csdn.net/fanxl10/article/details/83818402 # 修改已创建容器的参数 docker container update --restart=always 容器ID docker update --restart=no 容器ID # 停整个服务修改某个实例的端口 systemctl stop docker # systemctl stop docker.socket cd /var/lib/docker/containers && ls -lh docker ps -a # 查看容器 ID 再进入该 ID 文件夹 vi hostconfig.json # 修改容器端口映射 PortBindings vi config.v2.json # 修改容器要暴露的端口 ExposedPorts systemctl start docker # 启动 docker 服务 https://www.hangge.com/blog/cache/detail_2411.html # export container 导出容器为镜像 docker export 容器ID > cbox.tar # 容器导出镜像 docker import - new_cbox < cbox.tar # 导入镜像 # save images 保存镜像 docker save 镜像ID > ibox.tar # 镜像保存为文件 docker save -o ibox.tar postgres:9.6 mongo:3.4 # 多个镜像打包 docker load < ibox.tar # 载入镜像 # 使用 import 导入 save 产生的文件会出错 # export 文件小于 save # import 可以重命名镜像,load 不能重命名镜像 # save 可以打包多个镜像,export 不支持多个容器 # export 主要用来制作基础镜像再进行一些设置,save 多个镜像打包拷贝到客户服务器上载入