背景
天天听群里那么多人吹docker,自己又没用过,早就想试一下了。
安装CentOS
为了节省买服务器的钱,我通过虚拟机做一个centos8的系统。 vmware虚拟机下载 链接:https://pan.baidu.com/s/1EOl2k4chiPx20cuBvijBaQ 提取码:tsfl centos8下载 选择简易安装,然后会出现pane is dead
,估计是因为它以为是centos5然后拿以前的工具盘来做引导导致挂了,所以在光盘上把他自动提供的那个引导给删了,换成自己的盘。重启后即可进入安装界面。 里面语言选择,还有中文,不用白不用。设置一下根密码就可以安装了。 安装完后建立个快照,以便以后有需要。 右上角有个网络连接,检查一下网络是否是通的,用自带的火狐浏览器访问百度试试,正常情况是能上的。 然后右键vmware的虚拟机tab标签,选择ssh连接,就输入用户名密码,可以开始装docker了。 推荐使用ssh连接软件连接,因为方便复制粘贴什么的,而且默认的显示的编码不对,汉字可能看的是乱码。 xshell连接软件: 链接:https://pan.baidu.com/s/1U656DUaimjb748NY_kmKLA 提取码:swa9
安装docker
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum-config-manager --enable docker-ce-nightly
$ sudo yum install docker-ce docker-ce-cli containerd.io
安装过程会包这个错:package docker-ce-3:19.03.5-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
,所以containerd.io默认安装的版本不对,需要指定版本。
$ dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
$ sudo yum install docker-ce docker-ce-cli
这样就安装成功了,可以看一下docker版本docker version
,有显示就对了。 启动docker服务
systemctl start docker
配置镜像地址
这个跟npm类似,由于访问慢,所以配置个镜像地址,相当于cnpm的淘宝源。 阿里云镜像地址 上面配置这么写的,照着粘贴进去就行了。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fvqnvxdg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker镜像命令
docker image ls 列出本地所有镜像
docker search ubuntu 搜索列出ubuntu的镜像 (一般下星多的和官方的,实际等于访问hub.docker.com里搜索ubuntu)
docker image history ubuntu 列出ubuntu镜像的历史操作
docker image inspect ubuntu 检查ubuntu镜像详情
docker image pull centos 拉取centos镜像到本地
docker image pull centos:6 拉去centos6到本地
docker image rmi centos 删除本地镜像,可以是image id号
docker image prune 删除悬挂镜像(没有名字且没被任何容器引用)
docker image tag centos xx 给centos镜像加个xx名字
docker save -o name.tar imageName 把镜像导出为文件
docker load -i name.tar 把文件导入成镜像
docker提交镜像
docker login 登录你的dockehub账号密码
docker push 镜像名 推送镜像到你仓库下,注意:镜像名必须要以你 用户名/ 作为分割,否则推送被拒绝。如果名字不对需要用 docker tag 把名字改一下。
docker容器命令
docker run 执行时会优先拉取本地镜像,如果没有本地,会拉远程到本地,再实例化成容器。 一般容器run过会停止运行,也有不停止运行的容器。
docker container ls
docker container ps 查看当前运行的容器
docker container ls -a
docker container ps -a 查看所有容器
docker container ps -l
docker container ls -l 查看最新容器
docker container inspect id 检查id容器的详情
docker container run -it centos 进入centos容器
exit 进入容器情况下输入此命令退出容器
docker run --name nginx-test -p 8080:80 -d nginx 以容器80端口映射宿主8080端口,-d后台启动 名字叫nginx-test,生成nginx映像容器
docker logs nginx-test 查看容器访问日志
docker container top nginx-test 查看容器里进程
docker stats nginx-test 查看容器内存使用状态
docker container port nginx-test 查看容器端口映射情况
docker container stop nginx-test 停止容器
docker container kill nginx-test 强行停止容器
docker container start nginx-test 启动容器
docker container rm nginx-test 删除容器
docker container rm $(docker ps -a -q) 删除所有容器
docker commit -a"name" -m"some text" ContainerName newImageName 把容器变为本地镜像
docker export -o name.tar containerid 容器导出成文件
docker import name.tar 把文件导入成镜像
docker save -o name.tar imageName 把镜像导出为文件
docker load -i name.tar 把文件导入成镜像
docker container attach containerid 后台正在运行的容器切换到前台查看(因退出会使容器停止运行已废弃)
docker container exec -it containerid 后台正在运行的容器切换到前台查看 (退出不会终止服务)
docker数据卷
docker volume create volname 创建数据卷
docker volume inspect volname 检查数据卷详情
docker run -d -it --name containerName -v volumeName:/usr/share/containerDir ImageName 把容器里containerDir与宿主数据卷关联
docker run -v /dir:/containerDir -it --name containerName imageName 把宿主dir与容器containerDir进行关联
docker volume ls -f dangling=true 列出没引用数据卷
docker volume rm volName 删除数据卷
docker volume prune 删除没引用数据卷
docker run --volumes-from containerName1 --name containerName2 -it imageName 让containerName2继承containerName1的数据卷(一般用于多个容器在同一个目录下写日志)
docker网络
网络有三种默认bridge,host,none 指定网络使用–network指定即可。 创建自定义网络
docker network create --driver bridge myweb
docker network rm myweb
创建的容器默认使用bridge,指定自定义网络后,不同自定义网络的容器无法相互访问,相同网络容器可以通过名称访问。