安装docker
#add repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#install docker-ce
yum -y install docker-ce
#enable docker
systemctl enable docker
#add harbor name & dockerhub speedup
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com/",
"https://dockerhub.icu",
"https://doublezonline.cloud",
"https://docker.m.daocloud.io"
],
"insecure-registries": []
}
EOF
#start docker
systemctl start docker
获取镜像
docker pull image:tag
#eg
dokcer pull nginx:alpine
#other res
docker pull dl.dockerpool.com:5000/nginx:alpine
查看本地镜像
docker images
删除镜像
docker rmi <image_id_or_name:tag>
#强制删除,强制删除会同时删除该镜像创建的容器,无论容器是否在运行
docker -f rmi <image_id_or_name:tag>
#删除多个
docker rmi <image_id_or_name1> <image_id_or_name2>
运行容器
#返回容器id,后台运行容器
docker run -d <image>
#指定容器名称
docker run --name my_container <image>
#指定端口号
docker run -p 8080:80 <image>
#自动将容器的所有公开端口随机映射到主机的高端口
docker run -P <image>
#设置环境变量
docker run -e "MY_VAR=my_value" <image>
#挂载一个主机目录或卷到容器中
docker run -v /host/path:/container/path <image>
#容器停止后自动删除容器
docker run -rm <image>
#设置容器的重启策略。常用选项有 no、on-failure、always、unless-stopped。
docker run --restart always <image>
#以交互模式运行容器并附加终端,常用于运行需要交互的命令或 Shell
docker run <image> /bin/bash
docker run <image> sh
#指定容器使用的网络模式
docker run --network host <image> //主机模式
#链接到另一个容器
docker run --link <another_container> <image>
#限制容器可使用的 CPU 数量
docker run --cpus="2" <image>
#限制容器可使用的内存大小
docker run --memory="1024m" <image>
#在容器里执行命令,并输出结果
docker extc -it <CONTAINER> <COMMAND>
停止容器
docker stop <countainer_id_or_name:tag>
删除容器:
docker rm <countainer_id_or_name:tag>
#强制删除,强制删除会同时删除该镜像创建的容器,无论容器是否在运行
docker -f rmi <image_id_or_name:tag>
#删除多个
docker rm <image_id_or_name1> <image_id_or_name2>
导入导出容器:
#导出
docker export <countainer_id> > <countainer_name>.tar
#导入
cat <countainer_name>.tar | sudo docker import - <res/image_name:tag>
#url导入
docker import http://example.com/exampleimage.tgz example/imagerepo
既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。