linux ubuntu18 安装
先卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
更新apt包
sudo apt-get update
通过HTTPS使用仓库(repository)安装:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
在/etc/apt/sources.list.d/docker.list文件中添加下面内容
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
添加Docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
更新apt包索引
sudo apt-get update
ubuntu安装最新版docker会报错,需要查看系统可安装docker版本,先删除系统内的docker,再执行下面命令安装
$ apt-cache madison docker-ce
docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
选择版本,安装docker-ce
sudo apt-get install docker-ce=<VERSION_STRING>
启动docker
sudo systemctl start docker
查看docker版本
sudo docker --version
测试hello world, docker从docker hub 拉取
sudo docker run hello-world
直接从dockerhub下载镜像太慢, 需要配置国内镜像源, 新增或修改daemon.json文件
- Docker中国区官方镜像 https://registry.docker-cn.com
- 网易 http://hub-mirror.c.163.com
- ustc https://docker.mirrors.ustc.edu.cn
- 中国科技大学 https://docker.mirrors.ustc.edu.cn
- 阿里云容器 服务 https://cr.console.aliyun.com/
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
docker常用命令
命令大全:https://www.runoob.com/docker/docker-command-manual.html
搜索镜像
docker search centos
查看已有镜像
docker images
下载镜像
docker pull centos
删除镜像
docker rmi 镜像名字
创建容器
#在后台以交互模式运行一个容器并取名为test并把主机8080端口映射到容器80端口
docker run -itd -p 8080:80 --name test 镜像名
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
--name="nginx-lb": 为容器指定一个名称;
以交互模式进入容器
docker exec -it 容器id bash
将本地文件上传到指定docker容器
docker cp 本地文件路径 容器ID:容器路径
#docker cp apache.text 9ee74c614612:/root
动态修改容器端口映射:
修改以下文件:
/var/lib/docker/containers/{容器id}/hostconfig.json下的PortBindings项目
/var/lib/docker/containers/{容器id}/config.v2.json下的PortBindings项目
然后重启docker服务:systemctl restart docker
#hostconfig.json
"PortBindings":{
"22/tcp":[
{
"HostIp":"",
"HostPort":"22002"
}
],
"80/tcp":[
{
"HostIp":"",
"HostPort":"8080"
}
]
},
#好坑的,容器里是压缩的
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"22002"}],"80/tcp":[{"HostIp":"","HostPort":"8080"}]}
#config.v2.json
"Config": {
....
"ExposedPorts": {
"80/tcp": {},
"8888/tcp": {}
},
....
},
"NetworkSettings": {
....
"Ports": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
}
#好坑的,容器里是压缩的
"ExposedPorts":{"22/tcp":{},"80/tcp":{}}
"Ports":{"22/tcp":[{"HostIp":"0.0.0.0","HostPort":"22002"}],"80/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"}]},
centos/ubuntu容器安装ssh,开启sftp:
查看容器
docker ps -l #查看当前容器
docker ps -a #查看所有容器
停止一个容器
docker stop 容器名字
docker stop 容器id
docker kill 容器id
启动一个容器
docker start 容器id
重启一个容器
docker restart 容器id
暂停一个容器
docker pause 容器id
启动一个已暂停的容器
docker unpause 容器id
删除一个或多个容器,用空格分隔id
docker rm 容器id1 容器id2
批量删除已退出的容器
docker rm -v $(docker ps -aq -f status=exited)
设置容器端口影射
#-d后台运行容器
#-p 8080:80 影射容器8080到80端口
#httpd 需要用的镜像名字(如果本地不存在该镜像则从docker hub上下载)
docker run -d -p 8080:80 httpd