Docker常用操作

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。
  1. 访问https://www.daocloud.io/ >更多>加速器>Windows,复制地址http://7c558862.m.daocloud.io
  2. 打开win10的docker右击>settings>Daemon>勾选basic
  3. 将第一步的地址复制到镜像列表内即可
{
    "registry-mirrors": ["http://7c558862.m.daocloud.io"]
}
  1. 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) ...

你可能感兴趣的:(Docker常用操作)