Docker基础操作

安装docker

进入docker官网选择需要安装docker的系统按照操作安装docker,以unubtu为例

将当前用户添加到docker用户组

为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(可以参考官方文档):sudo usermod -aG docker $USER
执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。

操作

镜像(images)

  1. docker pull ubuntu:20.04:拉取一个镜像
  2. docker images:列出本地所有镜像
  3. docker image rm ubuntu:20.04 或 docker rmi ubuntu:20.04:删除镜像ubuntu:20.04
  4. docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container的镜像
  5. docker save -o ubuntu_20_04.tar ubuntu:20.04:将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar中
  6. docker load -i ubuntu_20_04.tar:将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来

容器(container)

  1. docker [container] create -it ubuntu:20.04:利用镜像ubuntu:20.04创建一个容器。
  2. docker ps -a:查看本地的所有容器
  3. docker [container] start CONTAINER:启动容器
  4. docker [container] stop CONTAINER:停止容器
  5. docker [container] restart CONTAINER:重启容器
  6. docker [contaienr] run -itd ubuntu:20.04:创建并启动一个容器(docker run -p 20000:22 -p port:port -itd ubuntu:20.04 创建并启动一个容器,并且添加了本地端口映射)
  7. docker [contaienr] -itd ubuntu:20.04: 创建一个容器,但没有启动
  8. docker [container] attach CONTAINER:进入容器
    先按Ctrl-p,再按Ctrl-q可以挂起容器
  9. docker [container] exec CONTAINER COMMAND:在容器中执行命令
  10. docker [container] rm CONTAINER:删除容器
  11. docker container prune:删除所有已停止的容器
  12. docker export -o xxx.tar CONTAINER:将容器CONTAINER导出到本地文件xxx.tar中
  13. docker import xxx.tar image_name:tag:将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag
  14. docker export/import与docker save/load的区别:
    export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
    save/load会保存完整记录,体积更大
  15. docker top CONTAINER:查看某个容器内的所有进程
  16. docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息
  17. docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx:在本地和容器间复制文件
  18. docker rename CONTAINER1 CONTAINER2:重命名容器
  19. docker update CONTAINER --memory 500MB:修改容器限制

实操

docker pull ubuntu:20.04 //拉取一个镜像。等待时间较久,取决于网络状况

docker images //查看本地所有镜像

拉取镜像之后,可以根据本地镜像创建容器,我一般创建的时候直接使用懒人方法,将需要的端口映射都添加上(后期添加端口映射太麻烦)

docker run -p 20000:22 -p 443:443 -p 80:80 -p 3000:3000 -p 3001:3001 -p 3002:3002 -itd --name my_server ubuntu:20.04

之后就可以进入容器并设置用户密码了

docker attach my_docker_server  # 进入创建的docker容器
passwd  # 设置root密码

之后就可以正常操作了

后期添加端口映射

关于后期添加端口映射的方法我也找了一下,但是比较麻烦
参考了这篇博客
有两种办法

第一种

将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口

#1、停止现有容器
docker stop container-name
#2、将容器commit成为一个镜像
docker commit -a "作者" -m "a new image" [容器名称或id] [打包的镜像名称]:[版本标签]
#常用OPTIONS说明:
#    -a :提交的镜像作者
#    -c :使用Dockerfile指令来创建镜像
#    -m :提交时的说明文字
#    -p :在commit时,将容器暂停

#或者使用export和import将容器导出为镜像
docker export 容器ID > 压缩包名称.tar
cat 压缩包名称.tar | docker import - 镜像名称:版本标签
#例如:
#导出
$ docker export 1efca3906 > ubuntu.tar
#导入
$ cat docker/ubuntu.tar | docker import - test/ubuntu:1.0

#3、用新的镜像生成一个新的容器并配置需要的映射端口
docker run -it -d --name container-name -p p1:p1 -p p2:p2 new-image-name
第二种

修改要端口映射的容器的配置文件

#1、查看容器的信息
docker ps -a

#2、查看容器的端口映射情况,在容器外执行:
docker port 容器ID 或者 docker port 容器名称

#3、查找要修改容器的全ID
docker inspect 容器ID |grep Id

#4、进到/var/lib/docker/containers 目录下找到与全 Id 相同的目录,修改 其中的hostconfig.json 和 config.v2.json文件:
#注意:若该容器还在运行中,需要先停掉
docker stop 容器ID
#再停掉docker服务
systemctl stop docker

#5、修改hostconfig.json如下
#	格式如:"{容器内部端口}/tcp":[{"HostIp":"","HostPort":"映射的宿主机端口"}]
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"3316"}],"80/tcp":[{"HostIp":"","HostPort":"180"}]}

#6、修改config.v2.json在ExposedPorts中加上要暴露的端口
#	格式如:"{容器内部端口}/tcp":{}
"ExposedPorts":{"22/tcp":{},"80/tcp":{}}

完成之后重启docker服务即可

systemctl restart docker

此时,可以查看宿主机端口是否和容器内端口映射成功,在容器外执行

netstat` `-an |``grep` `宿主机的映射端口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值