ILD

docker
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2024-6-8 站点:Inside Linux Development

docker的两个概念,image和container。image是一个镜像,通过镜像可以创建一个容器。容器在运行结束后,docker会保存容器的状态,下次可以再次启动该容器,而不用通过image再创建一个容器。


Image

docker images

docker image ls

列出image

# docker images

REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE

centos5-x64-compile   v4                  69169220c1b0        11 months ago       1.42GB


docker load

docker image load

从镜像文件加载一个镜像

--input , -i
Read from tar archive file, instead of STDIN

# docker load -i centos5-x86-compile.tar


还可以从docker仓库pull镜像。

# docker pull centos:7


Container

container通过run创建,run创建的时候会指定一个运行进程,当进程结束的时候container也退出了。因此这个进程通常是/bin/bash。退出后的container及其状态仍然保存在docker中,可以通过docker ps -a查看,下次可以从上次的退出状态继续运行container。

docker run 

创建container.

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]


--interactive , -i    Keep STDIN open even if not attached

--user , -u 指定用户和组 Username or UID (format: <name|uid>[:<group|gid>])

--volume , -v    Bind mount a volume 绑定目录

--detach , -d    Run container in background and print container ID

--name    Assign a name to the container


$ docker run -it -v /work:/work -u 1001:1001 --name centos5-x64 centos5-x64-compile:v4 /bin/bash


2024/6/8更新

fedora上访问挂载目录的时候,出现permission denied,有2个解决办法

1 关闭selinux

# setenforce 0


2 run的时候指定--priviledged=true

# docker run -it -v /home/yuanjp:/home/yuanjp -u 1000:1000 --privileged=true --name ubuntu16.04 ubuntu:16.04 /bin/bash


run的时候,可以制定workdir

--workdir /home/yuanjp


初始container没有用户的问题

上述使用1000用户,但是初始的image,是没有这个用户的。因此run之后,使用exec,以root用户运行,然后创建用户

# docker exec -it -u 0 ubuntu16.04 /bin/bash

root@9003b39becde:/# useradd -u 1000 -U --shell /bin/bash --home-dir /home/yuanjp yuanjp


此时,退出run,以start运行

# docker start -i ubuntu16.04
yuanjp@9003b39becde:/$ whoami
yuanjp


docker start

启动一个或多个已停止的container。


docker start [OPTIONS] CONTAINER [CONTAINER...]


--interactive , -i    Attach container’s STDIN    


$ docker start -i centos5-x64

后面是name或者id。



参考:

https://docs.docker.com/engine/reference/run/

https://docs.docker.com/engine/reference/commandline/start/


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.