Docker使用总结

Warning

文章更适合Arch系系统,比如Arch/Manjaro等系统,其他系统可能会有所不同

Docker基本安装

  • Pacman 安装 Docker sudo pacman -S docker

  • 启动docker服务 sudo systemctl start docker

  • 重启docker服务 sudo systemctl restart docker

  • 查看docker服务的状态 sudo systemctl status docker

  • 设置docker开机启动服务 sudo systemctl enable docker

Docker更改镜像源

编辑 /etc/docker/daemon.json,添加如下网易镜像源

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker简单使用

镜像

  • 搜索镜像列表 docker search nginx

  • 下载一个镜像 docker pull 镜像名字

  • 使用镜像生成一个容器 docker run -it <镜像名> #-i: 交互式操作, -t: 终端 –name=容器名字[选加]

  • 删除一个镜像

    • 方法1
      • 步骤1. 查看镜像,找到镜像ID: docker images
      • 步骤2. 通过镜像ID删除镜像 docker rmi -f <镜像ID> #加上-f强制删除
    • 方法2
      • docker image rm <镜像名字>

容器

  • 查看运行的容器 docker ps -a

  • 停止一个容器 docker stop <容器ID>

  • 启动一个容器 docker start <容器ID>

  • 进入一个容器

    • 方法1.docker attach <容器ID> # 退出后容器自动停止
    • 方法2.docker exec <容器ID> # 退出后容器不停止
  • 删除一个容器

    • 步骤1. 查看容器,找到容器ID: docker ps -a
    • 步骤2. 通过容器ID删除容器 docker rmi -f <容器ID> #加上-f强制删除
  • 删除已经停止的容器(核弹命令慎用) docker container prune

常用

Tip

启动一个关闭的容器

通常我们使用镜像完之后会直接exit退出,但是我们以后想继续进入之前的容器应该怎么进入呢?

直接使用docker run -it <镜像名>肯定是不行的,因为这样又会生成一个新的容器

正确做法是通过docker ps -a查看自己以前容器的ID

然后使用docker start <容器ID> 启动容器

最终使用docker attatch <容器ID> 进入容器

Docker和主机之间传输文件

  1. 传送之前先运行Docker容器

  2. 使用docker ps命令查看你想要传输到容器的ID

  3. 向Docker中传送文件 docker cp 你的文件 容器ID:容器地址,比如docker cp /root/test.txt ecef8319d2c8:/root/

  4. Docker向主机传送文件 docker cp 容器ID:容器地址 你的文件,比如docker cp ecef8319d2c8:/root/ /root/test.txt

非ROOT用户不用sudo直接执行docker命令

  1. 创建名为docker的用户组,如果之间有就会保存,可以忽略这个错误
sudo groupadd docker
  1. 将当前用户加入docker组
sudo usermod -aG docker 当前用户的名字
  1. 重启docker服务
sudo systemctl restart docker
  1. 添加访问和执行权限:
sudo chmod a+rw /var/run/docker.sock
  1. 操作完毕,验证一下,现在可以不用带sudo了

Docker保存修改后的镜像

我们运行的容器可能在镜像的基础上很多的修改 们希望保存起来,封装成一个新的镜像。 可以使用docker提供commit功能。

  1. 把容器打包成镜像 docker commit <容器ID> <新的镜像的名字>

其他参数 -a 提交作者的名字 -m 提交时的说明文字

  1. 查看镜像 docker images

这时候你就会发现,多了一个新的镜像

Docker登录

  • 登录 docker login
    • 可选参数-u 用户名 -p 密码
  • 登出 docker logout

参考文献

没想到搜来搜去,还是菜鸟教材好啊~

https://www.runoob.com/docker/docker-container-usage.html