【docker】安装制作入坑笔记

背景

  • 天天听群里那么多人吹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

  • dockerhub
  • 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,指定自定义网络后,不同自定义网络的容器无法相互访问,相同网络容器可以通过名称访问。

你可能感兴趣的:(docker)