docker使用记录
使用小贴士
- 在没有进行配置之前,使用docker必须赋予root权限
docker 的安装
- Docker CE 镜像源站
- 安装教程
- 镜像加速地址
- 安装过程中的依赖问题解决:sudo apt-get install -f -y
- How To Install and Use Docker on CentOS 7
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