docker使用记录


使用小贴士

  • 在没有进行配置之前,使用docker必须赋予root权限

docker 的安装

centos7

如果出现冲突,卸载相应冲突的软件即可

yum update
yum install yum-utils device-mapper-persistent-data lvm2 -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker

centos8

yum install -y yum-utils  device-mapper-persistent-data  lvm2
yum-config-manager  --add-repo   https://download.docker.com/linux/centos/docker-ce.repo
# https://download.docker.com/linux/centos/7/x86_64/stable/Packages/,containerd.io-1.2.6-3.3.el7.x86_64.rpm  
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum localinstall -y containerd.io-1.2.6-3.3.el7.x86_64.rpm
# problem with installed package podman-2.0.5-5.module_el8.3.0+512+b3b58dca.x86_64
# yum erase podman buildah
yum install docker-ce docker-ce-cli

systemctl start docker

与宿主机交互类

  • 单个文件挂载:将宿主的文件进行挂载时,有时docker里面对文件操作会改变宿主机,而宿主机里面操作不会改变,这个好像涉及到一些问题,不建议这样进行挂载,可以进行目录挂载
  • 目录挂载:目录挂载可以完美实现文件共享功能,docker和宿主机的操作都会改变文件(Windows里c:/xx/xx/即可)

Windows网络互通

ipconfig

以太网适配器 vEthernet (Default Switch):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::3004:9659:3139:af85%21
   IPv4 地址 . . . . . . . . . . . . : 172.17.220.241
   子网掩码  . . . . . . . . . . . . : 255.255.255.240
   默认网关. . . . . . . . . . . . . :

route add -p 172.17.0.0 mask 255.255.255.240 192.168.250.65

route add -p 172.17.0.0 mask 255.255.255.240 10.0.75.2

cat C:\Windows\System32\drivers\etc\hosts
# Added by Docker Desktop
10.33.0.119 host.docker.internal
10.33.0.119 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal

使用中需要注意的问题

ssh安装

yum install -y openssh-server
/usr/sbin/sshd -D

常规操作

进入正在运行中的容器

  • docker exec -ti dockernameorid /bin/bash

导出镜像到本地

# linux
docker save co > file

# windows
docker save --output test.tar test:test

导入tar包到本地docker镜像

# linux
docker load < /tmp/new-image.tar

# windows 
docker load --input .\test.tar

查看ip地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' mongo

映射连接问题

docker toolbox/desktop 使用上有些区别,特别是 toolbox 需要用启动时的 IP 地址不对,可能不是onlyhost模式,使用下面的地址即可 docker-machine ip default

Docker容器向宿主机传送文件

格式:
docker cp container_id:<docker容器内的路径> <本地保存文件的路径>
比如:
docker cp 10704c9eb7bb:/root/test.text /home/vagrant/test.txt

宿主机向Docker容器传送文件

格式:
docker cp 本地文件的路径 container_id:<docker容器内的路径>

比如:
docker cp  /home/vagrant/test.txt 10704c9eb7bb:/root/test.text

查看容器原来的配置

docker inspect <CONTAINER-NAME> OR <CONTAINER-ID>

添加镜像加速器

centos

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://vmnyyjzt.mirror.aliyuncs.com"]
}

systemctl daemon-reload
systemctl restart docker

windows docker toolbox

docker-machine rm default
docker-machine create --engine-registry-mirror=https://vmnyyjzt.mirror.aliyuncs.com -d virtualbox default
docker-machine env default
eval "$(docker-machine env default)"
docker info

# docker安装需要最新的boot2docker.iso,从docker的安装界面复制网址,我安装的日期是20180823,此时的boot2docker.iso地址为boot2docker.iso,这个地址貌似被墙了,需要翻墙下载,将下载好的文件放到对应文件夹下,我的电脑上为C:\Users\lzy\.docker\machine\cache

自动启动

# restart参数有三个可选值no,on-failure,always

docker run ****** --restart=always

docker update --restart=on-failure:3 [容器名]

公用宿主机网络

docker run -tid --name centos8 --network host centos:8

一些问题

win10 docker wsl 镜像存储位置设置

First, shut down your docker desktop by right click on the Docker Desktop icon and select Quit Docker Desktop

Then, open your command prompt:

wsl --list -v
You should be able to see, make sure the STATE for both is Stopped.

  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2
Export docker-desktop-data into a file

wsl --export docker-desktop-data "D:\Docker\wsl\data\docker-desktop-data.tar"
Unregister docker-desktop-data from wsl, note that after this, your ext4.vhdx file would automatically be removed

wsl --unregister docker-desktop-data
Import the docker-desktop-data back to wsl, but now the ext4.vhdx would reside in different drive/directory:

wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\data\docker-desktop-data.tar" --version 2
Start the Docker Desktop again and it should work

You may delete the "D:\Docker\wsl\data\docker-desktop-data.tar" file (NOT the ext4.vhdx file) if everything looks good for you after verifying

重新启动镜像

docker system prune -a

清理为None的镜像

# linux
docker rmi -f $(docker images | grep "none" | awk '{print $3}')

# linux

清理已经停止的容器

docker container prune

docker重新打tag并删除原tag的镜像

docker tag repository:tag repository:newTag

开发2375端口给外网

Windows

Dockers Engine加上下面的配置:

"hosts": ["tcp://0.0.0.0:2375"]

使用命令进行端口代理:

netsh interface portproxy add v4tov4 listenport=2375 connectaddress=127.0.0.1 connectport=2375 listenaddress=192.168.110.242 protocol=tcp

常用仓库链接

参考链接