docker run -it -v /vagrant:/vagrant -p 8006:8006 --name ubuntu_archive2 newImageId /bin/bash
docker run -it -v /vagrant:/vagrant -p 8201:8201 --name centos_test01 75835a67d134 /bin/bash
Ubuntu中安装Docker(该方法废弃)
- 安装命令:
sudo apt-get install docker.io
- 安装好之后验证是否安装成功:
sudo docker run hello-world
- 把非root用户添加到docker用户组中才能不使用sudo就可使用docker:
sudo usermod -aG docker vagrant
Ubuntu中安装Docker(2018-11-08)
注意:
- 此过程可能耗时较长,请耐心等待,勿中途取消。
步骤:
- 执行命令:
sudo curl -sSL https://get.docker.com/ | sh
安装完成后会显示:
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:58 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:24 2018
OS/Arch: linux/amd64
Experimental: false
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker vagrant
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.
使用镜像加速器
说明:
- 比如DaoCloud和阿里云,下面以DaoCloud为例加速Win10的docker。
- 访问https://www.daocloud.io/ >更多>加速器>Windows,复制地址http://7c558862.m.daocloud.io
- 打开win10的docker右击>settings>Daemon>勾选basic
- 将第一步的地址复制到镜像列表内即可
{
"registry-mirrors": ["http://7c558862.m.daocloud.io"]
}
- docker会自动重启,待重启成功后即可使用加速服务。
Docker默认主机分配的IP地址
192.168.99.100
ssh:docker*tcuser
command:sudo -i (docker用户下执行):root:
boot2docker在GitHub上的地址
https://github.com/boot2docker/boot2docker/releases
https://github.com/boot2docker/boot2docker/releases/download/v17.06.2-ce/boot2docker.iso
镜像市场
- 时速云:
www.tenxcloud.com
- daocloud:
www.daocloud.io/
Docker中安装软件失败
当使用sudo apt-get install appName命令出现以下情况时:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
需要更新api-get,使用以下命令更新:
sudo apt-get update
常用命令
- 查看docker版本等信息:
docker info
- 查看docker版本:
docker version
- 检验docker是否可以正常(联网)使用:
docker run hello-world
- 查看所有容器:
docker ps -a
- 查看运行中的容器:
docker ps
- 拉取镜像:
docker pull imageName[:tagVersion]
或
docker pull daocloud.io/library/ubuntu:12.10
(前面为镜像地址(默认是从官方地址下载,如果加了第三方地址则以第三方地址优先),后面是标签版本) - 查看镜像信息:
docker images
- 查看所有镜像信息(包括临时文件):
docker images -a
- 给镜像添加镜像标签:
docker tag oldImageName:tag newImageName:tag
或
docker tag imageId newImageName:tag
- 查看镜像详细信息:
docker inspect imageName:tag
或
docker inspect imageId
- 删除镜像(或者是说删除镜像的标签,当一个镜像有多个标签的时候只会删除这个标签,并不会删除镜像文件。如果使用镜像id删除镜像,该镜像有多个标签的时候无法直接删除该镜像。但是,如果使用docker rmi -f imageId命令则可以强制删除镜像文件,无论其是否有多个标签。)
docker rmi imageName:tag
- 启动Ubuntu镜像创建一个容器并进入(其中ubuntu:14.04可以使用镜像id替换,i是让容器的标准输入保持打开,t是让docker分配一个伪终端并绑定到容器的标准输入上,如果想以守护进程状态(使容器在后台运行)运行,需要加上-d,下面的例子则是-itd,--name是制定一个container名字):
docker run -it --name myubuntu ubuntu:14.04 /bin/bash
- 终止容器:
docker stop containerId
- 启动容器:
docker start containerId
- 创建容器(以镜像为基础创建容器,run相当于create后加上start):
docker create -it imageName:tag
或
docker create -it imageId
- 删除容器(rm只能删除终止或者退出状态的容器,如果想要删除运行中的容器则要加上-f参数强制删除):
docker rm containerId
- 启动容器的时候通过绑定指定ip和端口号来映射到容器应用的指定ip。-d是后台运行,-p来指定ip和端口映射(可同时指定多个)。-p可以指定宿主机和容器的映射关系(前面端口号是宿主机,后面端口号是docker容器),-P是绑定容器到随机的宿主机端口。-e可以设置容器内的环境变量:
docker run -d -p 5001:5000 -p 8080:8080 -e ORACLE_ALLOW_REMOTE=true training/webapp python app.py
- 查看容器端口和宿主机端口绑定关系:
docker port containerName/containerId containerPort
或
docker port adoring_stonebraker 5000
- 进入已经启动的容器:
docker exec -it containerId /bin/bash
- docker启动的Ubuntu容器安装ping:
首先要进入容器内,然后执行下面的命令:
apt-get install iputils-ping
- 纯净版Ubuntu容器需要安装很多东西:
python、vim、curl、sudo、 - 容器被创建后的目录挂载问题:
创建容器后,如果想要挂载宿主机目录到容器中。可以先将容器commit(docker commit containerId
),之后会出现一个新的镜像(可以通过docker images
来查看)。然后使用这个新镜像来创建容器,创建时使用-v
来挂载目录即可(前面的目录为宿主机目录,后面的是容器目录,必须使用绝对路径。):
docker run -it -v /vagrant:/vagrant -p 8006:8006 --name ubuntu_archive2 newImageId /bin/bash
- 复制文件:
docker cp 宿主机绝对路径 containerId:路径
这样就可以间接地实现已经创建的容器挂载宿主机目录的目的。 - 官方Ubuntu14.04LTS镜像创建的容器安装postgresql:
apt-get install postgresql
安装好之后显示:
fixing permissions on existing directory /var/lib/postgresql/10/main ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Setting up postgresql (10+190) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...